第一代:基于源码增强(子过程subroutine)
第一代增强基于源代码,是SAP提供的一个空代码的子过程。在这个子过程中用户可以添加自己的代码,控制自己的需求。这类增强集中在一些文件名倒数第二个字符为Z的包含程序中。 一般是以UserExit_打头的子过程,因此形象地称其为用户出口。
用户出口Include在SAP标准程序的源代码里,可以说是源代码的一部分,更改用户出口就相当于更改SAP标准程序,是需要在SAP Service MarketPlace里申请对象键(Access Key)才能更改,不需要建立工程;由于是在标准程序中,所以标准程序的全局数据都可以使用,但同时系统升级时会被新版本覆盖。
用户出口的说明可以从后台配置SPRO的相关模块的路径找到,大部分SD的出口都是此类增强。
查找此类出口的方法:
1、在程序中查找文件名倒数第二个字符为Z的Include包含程序。
2、在后台查找对应的模块增强:在程序中搜索USEREXIT_打头的子过程;在SAP中以PERFORM的形式被调用。
3、单击”Display Object List”按钮,在子程序列表查找“UserExit_”打头的子过程。
第二代:基于函数模块增强(Function)
第二代增强基于函数模块,用事务:SAP增强管理(SMOD)和增强编辑器(CMOD)维护。在SAP发布的版本中,使用Call Customer-Function 'xxx'调用函数模块,所以可以通过在程序中搜索 Customer-Function来查找第二代增强,第二代增强函数名构成为Exit_程序名_'xxx(3 digital number)'。它们在发布时只有一句代码include "ZXxxxxxx",修改时无需像第一代增强一样申请对象键,直接按两次Enter键就可以了。但同时这种增强以及后面几代的增强都不能像第一代一样随便使用程序的全局数据,只能使用接口中传递进来的参数。由于带有关键字Customer,故被称为Customer Exits(客户出口)。
第二代增强主要有4类:
E.Ehancement exits:这些出口以Exit_打头,可以在SE37中查看,也可以在数据字典TFDIR(函数表)中查询Exit_打头的函数
C.GUI codes(GUI增强):用于区域菜单和工具菜单栏的增强
S.Subscreens(屏幕增强):用于子屏幕设计增强
T.include structure增强:用于表结构的增强
另外,按用途分类:
功能模块出口(Function Module Exits):在SAP标准事务中添加业务逻辑,一般用于验证标准事务中的字段
屏幕出口(Screen Exits):定义自己的子屏幕嵌入应用屏幕,在标准事务中添加子屏幕
菜单出口(Menu