我要做IW32的一个增强,但是USER-EXIT和BADI都不能实现我需要的功能,这个时候我想到了ENHANCEMENT SPOT,于是就DEBUG标准程序,找到相应的位置,然后做修改,下面是实现的步骤:
首先,我要修改的是组件移动类型的值,我debug标准程序,找到了IW32是在程序LCOMKF1O的complete_resb这个FORM下面修改了组件移动类型的值,具体是在LINE221行开始做修改,首先根据开发类arbgeb读出tcoko这个表的值,tcoko就是存放的移动类型,下面再根据具体的情况,把tcoko的移动类型赋值过去。所以我就想,我把我自己建的表的值move corresponding to TCOKO,那么下面赋值给移动类型的值就是我自己建的表的值了,所以我就在取了TCOKO以后把值给它替换掉。
第二,找到位置以后,就是找它对应的ENHANCEMENT SPOT。我们发现在220行有一个ENHANCEMENT-SECTION:COMPLETE_RESB_08 SPOTS ES_SAPLCOMK.这个是一个ENHANCEMENT OPTION,双击COMPLETE_RESB_08可以看到,如图:
ENHANCEMENT OPTION是不能用的,必须对它implementation才能用,原理应该和BADI一样吧。
第三,就是对这个ENHANCEMENT OPTION做implementation。
在程序LCOMKF1O里点击工具栏的这个按钮,然后把鼠标放在ENHANCEMENT-SECTION COMPLETE_RESB_08 SPOTS ES_SAPLCOMK的位置,做如下图操作:
EDIT——ENHANCEMENT OPERTATIONS——CREATE,填入一些必填字段,注意要Z打头,
这个时候就会生成一个ENHANCEMENT POINT.
标号是SAP自动生成的,例如下面这段代码就是我生成后的代码