第二代出口-Customer Exit
二代出口一般也叫基于函数的出口。T-CODE在运行时会触发一些SAP预留的没有代码的FUNCATION,可以把这些FUNCATION称作为CALL FUNCTION-CUSTOMER。二代增强需要将增强放到PROJECT里面才能使用。
1、查找出口。
A、通过CALL CUSTOMER-FUNCTION来查找出口
查找事务代码的主程序,输入需要增强的事务代码(例如需要对创建SO做增强,则输入VA01),点击“状态”,找到主程序:
双击程序名进入程序,搜索“CALL CUSTOMER-FUNCTION”:
可以看见CALL CUSTOMER-FUNCTION的很多程序(404、930、911、910等)
而函数名称命名规则:EXIT_<程序名>_<序号>,即910实际程序名称为EXIT_SAPMV45A_911.通过双击或SE37下查看函数:
双击INCLUDE开头的函数就可以进入增加代码实现增强:
SE11在表MODSAP中查看函数对应的出口对象
通过事务代码SMOD查看出口对象和出口对象下的函数:
也可以点击上面图中的“测试执行”查看出口对象下能够使用的函数(绿色表示激活可用,红灯未激活):
需要激活才能使用(参考后文创建PROJECT并激活使用)。
总结:由于出口包含的增强程序名称是ZXX(Z开头,为SAP为用户增强预留程序),则可以修改。但910、911等程序太多,具体我们需要的是哪一个很难确定。下面介绍使用Package来确定出口的方法。
B、通过Package开发类来查找出口:
双击SAPMV45A程序名,点击“转到”查看属性下的Package:
事务代码SMOD,点击查看开发类(package)下的出口对象及描述:
进入可查看到开发类对应的增强名称及描述(根据描述判断是否是我们需要的):
选择我们需要的增强,查看组件:
双击组件,查看组件内的INCLUDE函数,双击INCLUDE可以增加增强代码:
根据INCLUDE函数的IMPORT\TABLE等输入输出参数声明变量,写逻辑程序实现增强:
C、PROJECT创建:
使用事务代码CMOD创建一个项目对象(Project),以便包含出口对象和函数:
接着选择“增强分配”进入“修改”添加出口对象,保存点击“组件”可以查看对象下的函数:
可以看见函数已经实现,但是还未激活(红色未激活,绿色激活),点击上方激活按钮,函数状态变成“绿色”激活状态。也可以点击“取消激活”:
激活后,回到事务代码VA01测试增强功能。
注意:一个Project可以包含多个出口对象。但一个出口对象组件只能被一个增强项目引用
D、使用函数:MODX_FUNCTION_ACTIVE_CHECK查找已经激活的增强函数function
SE37输入上述函数,点击运行:
输入要查找的主程序名:
点击查看:
程序命名规则:EXIT_<程序名>_<序号>,即003实际程序名称为EXIT_SAPMV45A_003.
注意:该函数可以用于当用户在做某事物代码的业务时发现无法继续做了,很有可能是标准程序做了增强导致的,此刻可以使用该函数来检查已经激活使用的增强。二代增强需要将增强放到PROJECT里面才能使用。