User Exits
用户出口是在SAP标准程序中预留的特殊插入点,允许用户插入自定义代码。常见的SD用户出口包括:
- MV45AFZZ:用于销售订单处理。常用的子程序有:
USEREXIT_MOVE_FIELD_TO_VBAP
:在销售订单项目数据传输到VBAP表之前。USEREXIT_SAVE_DOCUMENT_PREPARE
:在保存销售订单之前。
- MV50AFZ1:用于发货处理。常用的子程序有:
USEREXIT_SAVE_DOCUMENT
:在保存发货单之前
Customer Exits
客户出口是SAP提供的另一种增强方式,通常以函数模块的形式出现。常见的SD客户出口包括:
- SAPLV60B(发票凭证创建):
EXIT_SAPLV60B_008
:在发票凭证保存前修改数据。
- SAPMV45A(销售订单创建):
EXIT_SAPMV45A_002
:在销售订单头部数据处理期间。
- SAPMV45A(销售订单项目创建):
EXIT_SAPMV45A_004
:在销售订单项目数据处理期间。
BAdIs (Business Add-Ins)
BAdIs是SAP增强技术中的一种,提供了更灵活和面向对象的增强方式。常见的SD模块BAdIs包括:
- BADI_SD_SALES:用于销售订单处理。可以在订单创建、修改、删除时进行增强。
- BADI_SD_DELIVERY:用于发货处理。在发货单创建、修改、删除时进行增强。
- BADI_SD_BILLING:用于发票处理。在发票创建、修改、删除时进行增强。
其他增强类型
- 字段扩展(Field Exits):允许用户在特定字段输入时插入自定义逻辑。虽然在新的SAP版本中不再推荐使用,但在一些旧版本中仍然存在。
- 增强框架(Enhancement Framework):包括内联增强(Inline Enhancements)、增强点(Enhancement Points)、增强段(Enhancement Sections)等,用于在代码的特定位置插入自定义逻辑。
常见场景及示例
- 自动计算附加费用:通过用户出口
USEREXIT_PRICING_PREPARE_TKOMP
,在定价过程中自动计算附加费用。 - 销售订单审核:通过BAdI
BADI_SD_SALES
,在销售订单保存之前进行自定义审核逻辑。 - 发货单创建时的额外验证:通过客户出口
EXIT_SAPMV50A_002
,在发货单保存之前进行额外的业务逻辑验证。