http://blog.chinaunix.net/uid-697173-id-2680883.html
SAP New Enhancement Framework无废话篇 之
代码增强(Code Enhancement)
如果你对Enhancement Framework 中的Code Enhancement 感兴趣,并且不愿花半天时间看SAP的帮助,请参考本文.不足之处敬请指教.
这是一个普通ABAP Report,没有任何增强.
代码插入一个增强点(enhancement-point)
插入之后的代码:
以上只是设置了一个enhancement point, 没有去实现它,这时执行程序输出的内容和插入enhancement point 之前没有变化.
实际项目中我们要做的事情是: 实现(implementation) SAP预留给我们的enhancement point.具体操作如下:
1.切换到增强状态
点完后原有的代码不能编辑,如图中的XXXXXX,只能对代码进行增强相关的操作.
2.实现Enhancement point
实现之后的代码:
运行结果:
对于ENHANCEMENT-SECTION, 定义和实现的方法与ENHANCEMENT-POINT一样.
两者的区别是:插入新代码 和 替换旧代码
ENHANCEMENT-POINT 没有代码,只有一个预留点.
允许在这个位置插入新代码(implementation).
ENHANCEMENT-SECTION 和 END-ENHANCEMENT-SECTION.之间有代码, implementation 之后,替换旧代码,只执行新代码,原来的代码不再执行.
显式增强 和
隐式增强implicit 每个程序都有隐式增强. 不用 enhancment-point 和 enhancement-section
Show Implicit Enhancement option.
可以用 implicit enhancement 在report 或者 function module之后追加代码.具体方法 参考 enhancement-point
完整的语法格式:
ENHANCEMENT-POINT
ENHANCEMENT-POINT enh_id SPOTS spot1 spot2 ...
[STATIC]
[INCLUDE BOUND].
Extras:
1. ... STATIC
2. ... INCLUDE BOUND
ENHANCEMENT-SECTION
Syntax
ENHANCEMENT-SECTION enh_id SPOTS spot1 spot2 ...
[STATIC]
[INCLUDE BOUND].
...
END-ENHANCEMENT-SECTION.
Extras:
1. ... STATIC
2. ... INCLUDE BOUND
本例中的代码:
REPORT ZES_000000001.
WRITE : / 'Hellow! Code Enhancement! ' .
ENHANCEMENT-POINT ZENH_POINT000001 SPOTS ZENH_SPOT0000000001.
*$*$-Start: ZENH_POINT000001--------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZENHANC_IMP000000001. "active version
WRITE : / 'This is ENHANCEMENT-POINT ZENH_POINT000001 implementation. ' .
ENDENHANCEMENT.
*$*$-End: ZENH_POINT000001--------------------------------------------------------------------$*$*
参考资料
SAP help:
http://help.sap.com/saphelp_nw04s/helpdata/en/3b/0a39426f79f83ae10000000a1550b0/frameset.htm
SDN:
WIKI Enhancment Spot
(完)
本文出处:
http://blog.chinaunix.net/u2/64908/showart.php?id=1665547
PDF版下载地址: