1.abap编写程序
2.SAP AMDP介绍 - ABAP托管的编写HANA数据库过程
3.SAP ABAP和Java的动态代理实现
4.ABAP Open Checks:开源检查 SAP 代码检查器/ATC
5.ABAP Netweaver体内的那些寄生式编程语言
6.关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
abap编写程序
在ABAP/4开发环境中,程序编写过程可以通过ABAP/4编辑器进行。源码你可以从“ABAP/4程序属性”界面直接跳转到编辑器,代码或者通过“ABAP/4编辑器初始屏幕”启动编辑器。编写首先,源码找到“ABAP/4程序属性”并选择“转向”>“源代码”或直接点击“源代码”选项。代码资金异动率源码在选定后,编写点击“ABAP/4编辑器初始屏幕”上的源码“更改”按钮,会进入“ABAP/4编辑器编辑程序”界面。代码 系统会自动填充第一个ABAP/4语句,编写如REPORT或PROGRAM,源码具体格式为REPORT ``或PROGRAM ``,代码其中`program name>`是编写之前在“ABAP/4编辑器初始屏幕”输入的程序或报表名称。REPORT和PROGRAM语句功能相似,源码用于指示系统识别并处理报表程序或其他ABAP/4程序,代码可以设置输出列表的参数,如LINE-SIZE、LINE-COUNT或NO STANDARD PAGE HEADING,以控制列表的显示格式。 在编写程序代码阶段,你需要输入具体的程序逻辑。完成后,选择“检查”选项,系统会对代码进行语法检查,查找可能存在的错误和不兼容之处。如果发现错误,系统会给出错误报告,并可能提供解决方案或修正建议。此时,将光标定位到错误位置以便于处理。 最后,确保程序无误后,选择“保存”选项,溯源码燕窝品牌加盟代理将你的代码保存到程序库中,以便于后续的调用和管理。扩展资料
ABAP是一种高级企业应用编程语言(Advanced Business Application Programming),起源于世纪年代。经过不断的发展,现在的版本为ABAP/4,SAP R/3的应用程序就是用ABAP/4编写的。目前ABAP行业人才稀缺成为ABAP发展的制约因素之一,鉴于此,国内的ABAP培训行业逐渐开始发展,ABAP等培训逐渐发展,相信ABAP行业发展的瓶颈可以尽快得到瓦解。SAP AMDP介绍 - ABAP托管的HANA数据库过程
随着ABAP 7. SP的发布,SAP ABAP引入了Code Pushdown的新应用开发范式。这种范式与传统的Data to Code(数据到代码)方式有显著不同,它将密集的数据计算从ABAP应用层下推到了HANA数据库层,充分利用HANA数据库的高性能数据处理能力。在Code Pushdown理念下,数据库过程(Database Procedure)的实现成为了关键。
数据库过程是数据库内只能进行数据库读写及相关处理的函数。这些函数能接收任意多个输入参数和定义输出参数,存放数据库操作的结果,参数类型既包括标量式类型(如integer、double、varchar等),也包括表类型。实现数据库过程的方式有两种:AMDP(Application Managed Database Procedure)和数据库过程代理(Database Procedure Proxy)。在此篇文章除了AMDP之外的实现方式将不作讨论。
AMDP的概念是让ABAP开发人员在ABAP层进行HANA数据库过程的实现和生命周期管理。ABAP开发人员通过位于ABAP层的ABAP Development Tool,使用HANA SQLScript编写代码作为AMDP的实现体。这意味着开发人员可以在ABAP层直接利用HANA数据库层的宝箱实战捉妖指标公式源码原生功能,同时无需学习额外的技能。AMDP实现体被封装在一个特殊的ABAP类方法中,该方法声明特定接口(IF_AMDP_MARKER_HDB),告知编译器和运行时它是一个AMDP容器。
使用AMDP,ABAP开发人员能够将部分计算逻辑下推到数据库层,这有利于提升应用的性能。具体的实现方法允许ABAP开发人员在SAP GUI中读取源代码,而修改则需要通过ABAP Development Tool进行。开发时,标记接口IF_AMDP_MARKER_HDB用于标记特定类方法为AMDP容器,同时还有其他标记接口用于表示序列化操作或与BAdI Definition相关的操作。
以SFLIGHT模型为例,ABAP开发人员可以在AMDP方法中读取数据并进行数据操作,比如货币转换,所有这些操作都在HANA数据库层执行。这种下推逻辑使应用能更有效地利用数据库资源,提升整体性能。
开发人员可以通过阅读本文附件中的完整代码进行实践学习。Jerry将根据时间和资源情况,后续提供AMDP的调试和性能分析等高级功能的介绍。文章结尾鼓励读者关注“汪子熙”公众号以获取更多Jerry的原创文章。然而,请注意文中已删除提及关注、转发、点赞、评论等行为的指示。
SAP ABAP和Java的动态代理实现
在本文中,我们将展示如何在Java和ABAP中动态创建持久化代理类。本文基于代理设计模式。
首先,我们定义一个接口:
然后,海上繁花副图指标源码我们定义一个实现类:
接下来,我们将基于HelloWorldImp创建一个持久化代理类(将在我们的笔记本上持久化),在原始方法print()之前添加System.out.println("Before Hello World!");,之后添加System.out.println("After Hello World!");。
生成代理类的步骤如下:
步骤1:填充代理类的源代码
步骤2:在磁盘上创建一个新的.java文件,其中包含在步骤1中生成的源代码:
步骤3:通过在包javax.tools中暴露的接口的API编译生成的.java文件。编译后将在磁盘上生成.class文件。
步骤4:使用URLClassLoader加载步骤3中生成的.class文件。之后,可以通过反射创建基于加载类的新实例。
下面的代码展示了如何使用getProxyClass()方法消费:
执行上述代码后,可以观察:
(1) 通过生成的代理类成功增强了原始print方法:
(2) 对应的.java和.class文件在磁盘上被持久化。
在ABAP中动态代理的实现如下:
首先,我们再次定义接口IF_HELLOWORLD和基于其的实现类CL_HELLOWORLD,然后创建一个动态代理类。
以下是ABAP中可以实现的功能:
(1) 将原始CL_HELLOWORLD类的实例传递给GET_PROXY方法。在该方法内部,将通过RTTI将预退出和后退出逻辑注入到原始print方法的实现中。注入的类名通过参数iv_new_class_name传递,在此示例中为ZCLABAP。
(2) 执行上述报告后,返回的注入代理实例包含增强的逻辑,因此,如预期的那样,现在可以看到通过iv_pre_exit和iv_post_exit传递的ABAP语句被执行。
此外,还可以在SE中打开生成的代理类:
预退出和后退出逻辑被注入在这里:
动态代理生成的主要逻辑简述:
(1) extract_interface_info提取涉及的接口名称和通过参数io_origin进行RTTI注入的方法名称。 (2) prepare_source_code将预退出和后退出语句注入到内部方法源代码表中。 (3) prepare_attr_and_signature为新类准备方法签名和私有属性。 (4) generate_class基于前两步组装的元数据调用ABAP类生成函数模块。
进一步阅读:
我已经写了一系列比较ABAP、JavaScript和Java语言特性的个人主页源码2022博客文章。您可以在以下链接中找到它们:
ABAP Open Checks:开源检查 SAP 代码检查器/ATC
ABAP Open Checks 是一个开源项目,旨在扩展 SAP Code Inspector 和 ABAP Test Cockpit (ATC) 的功能。它提供了丰富的检查功能,涵盖了 ABAP 编程的最佳实践、代码清洁和性能优化等多方面,以提高 ABAP 代码库的质量和可维护性。
安装 ABAP Open Checks 可以通过 abapGit 进行。此工具无需在客户系统中创建新对象即可进行单元测试,或手动复制源代码到系统中。在使用 abapGit 安装时,创建一个空软件包,如 $AOC。通过 abapGit 进行安装,将检查全部勾选或选择需要的检查。在更新时,使用 upDOWNci 备份变量。运行 abapGit,点击 "pull"。在离线项目中,也可点击 "导入 zip"。卸载时,运行 abapGit,点击 "卸载"。注意,该项目仅支持英语,适用于 SAP 系统 7. SP 或更高版本。
ABAP Open Checks 提供了广泛的检查功能,包括验证 IF 条件、循环、TRY-CATCH 块的使用,执行命名约定、检查过时语句等。具体检查列表可在文档网站上找到,涵盖行长检查、ASCII 合规性检查、漂亮的打印机使用、CALL METHOD 的功能性书写风格等,旨在执行编码标准和提高代码质量。
通过 ABAP Open Checks,可以检查是否存在多层嵌套。例如,两层嵌套可缩减为一层,或单层嵌套。源代码示例展示了如何应用这些优化。测试代码时,可利用 Open Checks 检查结果进行验证。其他检查结果则需结合实际代码进行探索。
ABAP Open Checks 的开源地址为:larshp/abapOpenChecks: Open source checks for SAP Code Inspector / ABAP Test Cockpit (github.com)。详细文档可在 abapOpenChecks - Checks 页面获取。
ABAP Netweaver体内的那些寄生式编程语言
本文探讨的是ABAP Netweaver系统内部的"寄生式编程语言",这些语言并非直接为ABAP开发人员设计,但它们在系统的核心结构中发挥着作用。其中,SJAVASCRIPT隐藏在Netweaver的C/C++内核中,提供了一个微型的JavaScript引擎,尽管存在,但SAP并不建议在生产环境中使用。早期版本的Netweaver支持ECMAScript 6.0规范的部分特性,但因已标注为过时,开发者需谨慎操作。
Ruby在SAP Cloud for Customer的开发中也有体现,开发人员在UI designer中使用的Ruby代码会被自动转换为JavaScript,这样浏览器可以处理。而ABSL(ABAP Script Language)则是一门专门为C4C partners设计的领域特定语言,用于云上开发的自定义逻辑,其编写的代码会被转换成ABAP代码执行。
至于C/C++,它们在Netweaver中扮演着宿主角色,ABAP kernel的底层实现部分是用C/C++编写的。虽然可以查阅相关源代码,但这些代码通常是内部使用的,不对外公开。了解这些寄生式编程语言,可以帮助开发者更好地理解Netweaver的工作原理,但使用时需注意其特性和限制。
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
点击Show DDL Definition 可以看到DDL Definition 源代码:
理解这段SQL语句之前,需先熟悉SAP HANA数据库。HANA是一个高性能内存数据库,支持复杂数据处理与分析。HANA数据库支持行表与列表存储数据,行表适用于事务处理,列表则适合快速数据分析及报告。HANA提供丰富SQL语法,用于管理及查询数据库数据。
这段SQL语句由三部分组成:创建列表、修改表参数及创建全文索引。接下来逐一解析。
第一部分创建名为REPOSRC的列表,属于SAPAG3模式。列表中定义多个列,如PROGNAME列最多字符(NVARCHAR()),默认值为空,不允许NULL值。列表包含复合主键,由PROGNAME和R3STATE两列组成。
UNLOAD PRIORITY 5表示在内存管理中赋予该表数据卸载优先级为5,影响数据从内存移至磁盘顺序。AUTO MERGE指示数据库自动合并表分区,优化性能。
第二部分修改REPOSRC表参数。CONCAT_ATTRIBUTE参数定义如何拼接列值形成唯一标识符,优化查询性能,特别是复杂数据模型处理。
第三部分创建名为REPOSRC~SRC的全文索引,针对DATA列。允许高效全文搜索文本数据。索引为异步创建,减少即时性能影响。语言检测设为英语,用于指导处理文本数据语言类型。全文索引关闭模糊搜索、搜索优化及文本分析等选项,以满足特定性能或功能需求。
综上所述,这段SQL语句设计体现HANA内存数据库高效数据存储与检索能力。通过精心设计的列表结构、优化表参数及全文索引创建,旨在提高特定数据模型处理性能与查询效率。设计考虑存储效率、访问速度与可维护性,充分利用HANA强大内存计算能力。
SAP ABAP Development Tool 提高开发效率的十个小技巧
这是 Jerry 年的第 篇文章,也是汪子熙公众号总共第 篇原创文章。
Jerry 已经有很长一阵子没有打开工作电脑上的 SAP ABAP Development Tool 了。在用 Visual Studio Code 进行 Angular 开发马上快满一年的时间点上,为了做到喜新不厌旧,本文把 SAP ABAP Development Tool 一些提高工作效率的使用小技巧罗列出来。欢迎大家在留言区补充。
关于 Jerry 之前分享过的 SAP ABAP Development Tool 使用技巧,请查阅这些文章:
假设我想打开 ABAP Development Tool 和颜色 (color) 相关的设置,但是我记不住具体的设置路径了,没有关系,使用快捷键 Ctrl + 3:
在输入框内输入 color,然后就能看到所有和 color 相关的设置。
选择自己想设置的条目,单击,即可迅速进入设置页面:
CDS view 数据预览之后,可以通过 Add filter 右边这个小图标,以不同的格式另存到本地以便进一步分析。
快捷键 Ctrl + Shift + A,在打开的弹出窗口里输入搜索条件,即可快速搜索并打开找到的对象。
支持常用的搜索通配符。
例如我们想查看标准视图 /DMO/I_Travel_U 的明细,无需打开其视图本身。
直接鼠标选中该视图,按 F2 即可在弹出窗口里查看,清晰准确,一目了然。
如果嫌这个弹出窗口尺寸太小,还可以将其以 ABAP Development Tool 属性视图的方式显示,点击这个小图标即可:
SAPGUI 里能在编写 ABAP 类方法源代码实现时,随时查看其方法参数定义,这一点我很喜欢。
在 ABAP Development Tool 里就无法随时看到方法参数定义了。
不过只需要按一下 Alt + F2, 方法参数定义又回来了:
我用了快一年的 Visual Studio Code 进行 Angular 开发了,真心喜欢其 Quick Fix 功能, 编译器能通过上下文,自动给出一些编译错误的解决方案。
ABAP Development Tool 里也有类似功能。比如下面的例子,代码第行,变量 lo_request 没有定义就直接使用,引起了一个编译错误。
想让你的方法能够像 Visual Studio Code 里显示的注释一样专业吗?在 SAP ABAP Development Tool 里当然也能做到。
在 ABAP Formatter 设置里,将 Keep Camel Case Identifiers 前的勾打上即可。
SAPGUI 里所有的 ABAP 关键字都只能设置为同一种颜色。而 ABAP Development Tool 里,能够为不同的关键字分别设置不同的颜色:
Visual Studio Code 需要安装额外的扩展才能实现这个颜色更改需求,而 ADT 本身的设置就足以工作了,相当赞。
假设我想查看名为 config 的属性在 Component 里所有的出现场景(Occurrences), 需要 Ctrl + F 打开搜索框,输入 .config. 这样,代码中所有出现 .config 的位置,会被高亮显示。
在 ABAP Development Tool 里就方便多了。
按 "Ctrl +," 的快捷键,可以在这些位置之间进行切换。
在使用该功能时,确保编辑器里的 "ABAP Occurrences" 处于开启状态。
希望这些小技巧能够帮助提高大家使用 SAP ABAP Development Tool 的开发效率。
2024-12-23 01:09
2024-12-23 00:41
2024-12-23 00:25
2024-12-23 00:02
2024-12-22 23:20
2024-12-22 23:12
2024-12-22 22:57
2024-12-22 22:49