【SAP Abap】X-DOC:SE18/19 - SAP第四代增强概念理解
- 1、Tcode
- 2、概念
- 3、增强选项类型
- 4、增强实现类型
- 5、增强操作方式
- 6、增强选项与增强实现关系
- 7、增强实施建议
1、Tcode
SE18:Business Add-Ins: Definitions(增强点定义/查看),用于增强选项的查看与维护。
SE19:Business Add-Ins: Implementations(增强实施),基于增强点创建和维护增强实施。
2、概念
(1)Enhancement Spot(增强容器),用于组织增强选项,一个Spot内可以有多个增强选项,一般一个程序建一个Spot即可。
(2)Enhancement Options(增强选项),包含以下两种类型的增强选项:Point、Section,一个程序可以建多个Option。
(3)Enhancement Implementation Point,在ABAP程序中定义的一个位置,用于插入增强实施代码。
(4)Enhancement Implementation Section,在ABAP程序中定义的一个区域,其中的代码将会被增强实施替换。
3、增强选项类型
(1)显式增强选项:
ENHANCEMENT-POINT/SECTION zen_name SPOTS zspots_name STATIC .
显式增强选项由增强点管理,必须事先插入到源代码中,并通过增强实现进行增强。
(2)隐式增强选项
隐式增强选项由增强框架提供,不需要开发人员做任何特定准备,它们不必属于容器(增强点)。
它们也通过增强实现得到增强。
4、增强实现类型
(1)静态形式(Declaration):增强选项添加STATIC,对应隐式增强实现时的声明类型,一般用于数据声明的增强。当增强实现所在包的switch状态为开和备用(On & Stand-by)时,代码会被执行;对于ENHANCEMENT-SECTION中的数据声明,可以重新定义。
(2)动态形式(Code):增强选项不添加STATIC,对应隐式增强实现时的代码类型,一般用于可执行代码的增强。当增强实现所在包的switch状态为开(On )时,代码才会被执行。对于ENHANCEMENT-SECTION中的数据声明,为静态全局变量,不能被替换。
两者区别:
当增强实施未设置switch时,代码都会执行,但静态形式的效率更高一些。
不建议使用静态SECTION,因为会更改数据声明,可能导致不可预料的问题。
5、增强操作方式
参考:【SAP Abap】SAP第四代增强开发DEMO
增强Demo:
REPORT yz_demo_enhancement_4g.WRITE: / 'BEGIN,来自主程序'.
SKIP." 静态增强点
ENHANCEMENT-POINT YPOINT1 SPOTS YSPOTS1 STATIC .
*$*$-Start: YPOINT1-----------------------------------------------------------------------------$*$*
ENHANCEMENT 1 YEH001. "active versiondata: gv_po1(10) VALUE 'Test1'.write: / '增强点1-静态YPOINT1实施:' && gv_po1.
ENDENHANCEMENT.
ENHANCEMENT 2 YEH002. "active version
*write: / '增强点1-静态YPOINT1实施2:' && gv_po1.
ENDENHANCEMENT.
*$*$-End: YPOINT1-----------------------------------------------------------------------------$*$*SKIP.
" 动态增强点
ENHANCEMENT-POINT YPOINT2 SPOTS YSPOTS1 .
*$*$-Start: YPOINT2-----------------------------------------------------------------------------$*$*
ENHANCEMENT 2 YEH001. "active versionwrite: / '增强点2-YPOINT2实施,获取YPOINT1中的变量:' && gv_po1.data: gv_po2(10) VALUE 'Test2'.write: / '增强点2-YPOINT2实施:' && gv_po2.
ENDENHANCEMENT.
*$*$-End: YPOINT2-----------------------------------------------------------------------------$*$*SKIP.
" 静态增强段(数据能重定义)
ENHANCEMENT-SECTION YSECTION1 SPOTS YSPOTS1 STATIC .DATA: gv_sec1(10) VALUE 'SEC1'.WRITE: / 'YSECTION1预留代码:' && gv_sec1. " 实施后代码被替代
END-ENHANCEMENT-SECTION.
*$*$-Start: YSECTION1---------------------------------------------------------------------------$*$*
ENHANCEMENT 3 YEH001. "active versionDATA: gv_sec1 type d VALUE '20230517'. " 变更数据定义WRITE: / '增强段1-静态YSECTION1实施:' && gv_sec1.write: / '增强段1-静态YSECTION1实施,获取YPOINT1中的变量:' && gv_po1.
ENDENHANCEMENT.
*$*$-End: YSECTION1---------------------------------------------------------------------------$*$*SKIP.
WRITE: / '主程序-获取YSECTION1中的变量:' && gv_sec1.
SKIP." 静态增强段(数据不能重定义)
ENHANCEMENT-SECTION YSECTION2 SPOTS YSPOTS1 .DATA: gv_sec2(10) VALUE 'SEC2'. "此处变量在其定义后全局可用WRITE: / 'YSECTION2预留代码:' && gv_sec2. " 实施后代码被替代,不再执行
END-ENHANCEMENT-SECTION.
*$*$-Start: YSECTION2---------------------------------------------------------------------------$*$*
ENHANCEMENT 4 YEH001. "active version"DATA: gv_sec2(10) VALUE 'SEC2'. "不能重定义"WRITE: / 'YSECTION2预留代码:' && gv_sec2. "不能获取被替换代码中的变量write: / '增强段2-YSECTION2实施:不能重定义变量'.write: / '增强段2-YSECTION2实施,获取YPOINT2中的变量:' && gv_po2.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Enhancement Exit YSECTION2, Enhancement YEH001, End A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 YEH003S. "active version
*write: / '增强段2-YSECTION2实施,来自静态隐式增强'.
ENDENHANCEMENT.
*$*$-End: (1)---------------------------------------------------------------------------------$*$*
ENDENHANCEMENT.
ENHANCEMENT 1 YEH002. "active versionWRITE: / '增强实施2 YEH002:不能获取被替代代码中的变量'. " 仅此第一个实施生效
ENDENHANCEMENT.
*$*$-End: YSECTION2---------------------------------------------------------------------------$*$*SKIP.
WRITE: / '主程序-获取YSECTION2中的变量:' && gv_sec2. "可以获取SKIP.
WRITE: / 'END,来自主程序'.
6、增强选项与增强实现关系
一个增强点可以有多个增强实现代码,按创建顺序从上到下排序,执行顺序亦是如此;
一个增强段可以有多个增强实现,按创建顺序从上到下排序,但只有第一个实现生效;
一个增强实现,可以跨多个增强点/段,代码块按实施顺序显示为:ENHANCEMENT 1,2,3,…,它们同属于一个实现,同时生效,其中的代码可以有一定的逻辑连贯性。
7、增强实施建议
相关功能可以在一个实施中实现,不相关的功能建议分开实施。
原创文章,转载请注明来源-X档案