"ABAP增强基础详解"
在ABAP编程中,增强是一种扩展标准SAP功能的方法,允许开发者在不修改标准代码的情况下插入自定义逻辑。这篇文档详细介绍了两种主要的增强方式:第一代基于源码增强(子过程subroutine)和第二代基于函数出口增强(Function)。
1. 第一代增强:基于源码增强
这种方法涉及到对SAP标准源代码的直接修改,通常在包含程序的Z开头的文件中找到。例如,SAPMV45A中的MV45ATZZ和MV45AOZZ等Include文件包含了UserExit_开头的子模块。要进行源码增强,首先需要在SAP Service Marketplace申请对象键(ACCESS KEY),然后才能修改这些子程序。此外,可以在SPRO中搜索USEREXIT关键字来定位相关的增强点。
2. 第二代增强:基于函数出口增强
第二代增强使用SMOD和CMOD工具进行维护,无需多次激活。函数出口以`CALLCUSTOMER-FUNCTION<3位数字>`的方式被调用。出口函数的命名规则是EXIT_<程序名>_<3位数字>,其中<程序名>指的是调用该出口函数的程序名。此外,针对数据表的增强,可通过添加以"CI_"打头的结构来扩展字段。
第二代增强主要分为以下四类:
- E.Functionexits:函数增强,这是最常用的增强方式,用于在SAP系统运行后期添加新的业务逻辑,如在销售订单VA02中设置采购订单长度限制或特定字符检查。
- C.GUIcodes:GUI增强,用于修改用户界面的行为或外观。
- S.Screens:屏幕增强,通过CALLCUSTOMER-SUBSCREEN调用,通常在系统上线初期进行,后期较少使用。
- T.Tabes:表结构增强,用于扩展SAP表结构,增加新的字段。
找到增强点的方法包括:
- 搜索程序中的CUSTOMER-FUNCTION,根据3位数字编号找到对应的出口函数名,然后查询MODSAP表以获取增强对象。
- 调试系统函数MODX_FUNCTION_ACTIVE_CHECK,它会显示所有已激活的增强。
- 通过代码分析查找包含"CALL CUSTOMER-"或"EXIT_"等关键词的语句,以确定增强位置。
通过理解并熟练掌握这两种增强技术,开发者可以灵活地定制SAP系统,以满足特定业务需求,同时保持与标准系统的兼容性,避免升级时遇到问题。在实施增强时,应始终遵循最佳实践,确保增强的可维护性和可扩展性。