一,基于源码增强。
这些FORM大都存储于倒数第二个字符为Z的包含程序中,比如SAPMV50A的包含程序MV50AFZ1,里面的FORM一般为userexit开头,我们可以找到对应的FORM,然后在里面写增强。
二,基于出口函数增强。
通过SMOD和CMOD维护。我们可以在程序中查找CALL CUSTOMER-FUNCTION 然后后面有跟着三个数字的。它的出口函数可以通过SE37: EXIT_程序名(不是INCLUDE,是主程序)_三位数字 找到。然后根据出口函数到MODSAP表中查找对应的增强点。使用SMOD查看这个增强点的明细。增强屏幕的调用是使用CALL CUSTOMER-SUBSCREEN。
TFDIR表存储了所有函数的信息 包括出口函数,MAND字段为C标识该函数是激活状态。
三,基于类的增强(BADI)。
通过SE18和SE19来进行维护。在主程序中查找CL_EXITHANDLER=>GET_INSTANCE,EXIT_NAME就是要找的BADI,可以通过SE18查看。也可以在调试过程中输入SE24,CL_EXITHANDLER=>GET_INSTANCE,通过类的调试找到EXIT_NAME。
命名规则:
Badi definition: Z<badi>
Interface: ZIF_EX_<badi>
BADI implementation:Z<impl>
Implementing class:ZCL_IM_<impl>
BADI的信息存储在SXS_INTER,SXC_EXIT,SXC_CLASS,SXC_ATTR.