清风阳2012

导航

关于enhancement point的简单使用 (ABAP 增强)

这是一个普通的report,没有任何增强。(如图1)

 
代码中插入一个增强点。(如图2,图3)

 

 

ZENH_SPOT01相当于一个容器,创建一个增强点的必要条件是要有一个容器。每个增强点(如ZENH_POINT01)都可以创建到这个容器当中,也可以再创建一个容器。删除这个容器的方法:在本地对象或它的包中删除或在SE18中删除,激活程序,退出再进。
插入后的代码。(如图4)

 

以上只是设置了一个enhancement point,而没有去实现它,这时执行程序输出的内容和插入enhancement point

之前没有变化。实际项目中我们要做的事情是:实现(implementation)SAP预留给我们的enhancement point。

具体操作如下:

1.切换到增强状态(如图5)

 
点完后原有的代码不能编辑,只能对代码进行增强。

2.实现Enhancement point(如图6),光标要定位到这行代码上。

 
弹出窗口(如图7)。

 

3.增强之后的代码(如图8,图9),在增强状态下激活一次。

 

 

4.然后在非增强状态下激活一次。(如图10)

 

5.可以看到增强后的效果。(如图11)

 
 
 
ENHANCEMENT 1  ZENH_IMP01.    "active version
ENDENHANCEMENT.
增强的修改,edit->enhancement operations->change implementation.
 
对于ENHANCEMENT-SECTION, 定义和实现的方法与ENHANCEMENT-POINT一样。两者的区别是:enhancement-point
没有代码,只有一个预留点,允许在这个位置插入新代码(implementation).
而enhancement-section和end-enhancement-section.之间有代码,implementation之后,替换旧代码,只执行
新代码,原来的代码不再执行。
 
编辑状态下能create option.编辑状态下不能编辑增强块,只能编辑其它地方。
增强状态下能对某个option create implementation.增强状态下只能编辑增强块,不能编辑
其它地方.
"例:

REPORT  ztest_enhpoint.
ENHANCEMENT-SECTION ZENH_SECTION01 SPOTS ZENH_SPOT02 .
WRITE:'SECTION 01'.
END-ENHANCEMENT-SECTION.
*$*$-Start: ZENH_SECTION01----------------------------------------------------------------------$*$*
ENHANCEMENT 2  ZENH_IMP01.    "active version
write:'SECTION 02'.
ENDENHANCEMENT.
*$*$-End:   ZENH_SECTION01----------------------------------------------------------------------$*$*
WRITE:'aaa'.
ENHANCEMENT-POINT ZENH_POINT01 SPOTS ZENH_SPOT01 .
*$*$-Start: ZENH_POINT01------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZENH_IMP01.    "active version
write:'ENH,aaa'.
ENDENHANCEMENT.
ENHANCEMENT 1  ZENH_IMP02.    "active version
write:'ENH,bbb'.
ENDENHANCEMENT.
*$*$-End:   ZENH_POINT01------------------------------------------------------------------------$*$*
WRITE:'bbb'.

* 先创建一个enhancement point在容器spot01里,并创建它的2个实现;
* 又创建一个enhancement section在容器spot2里,在section中输出'section 01',再选中section01,创建implimentation,
* 在这里不创建新的imp,而是选择ZENH_IMP01.(这样也可以,说明一个程序中的imp可以随时用,id增加了1),修改imp,输出'section 01'.
* 执行结果,我发现Section 01不再输出了。。

posted on 2012-03-15 13:42  清风阳2012  阅读(1525)  评论(0编辑  收藏  举报