在SAP/ERP项目的实施中销售管理模块(SD)的创建和修改发货单(DN)经常会遇到检查校验的需求,来防止业务人员创建错误的DN,SAP系统这方面的配置功能也非常强大,通常情况下不需要写开发代码,通过配置可以实现大部分需求,但是在实际项目中还是会遇到一些特殊的需求,不能通过配置实现,需要进行增强开发。 SAP系统这方面主要增强点有如下两点: 增强点1: 程序:MV50AFZ1 子例程(FORM): USEREXIT_SAVE_DOCUMENT_PREPARE. 增强点2: BADI: LE_SHP_DELIVERY_PROC 接口:IF_EX_LE_SHP_DELIVERY_PROC 方法: IF_EX_LE_SHP_DELIVERY_PROC~DELIVERY_FINAL_CHECK 这两增强点主要用于创建或修改交货单(DN)时候保存前的各种合规性的检查和校验。 具体业务需求: 某公司的财务要求针对退货的销售订单的DN,在做发货过账时候需要检查对应SO的成本价格是否为0,如果是0不允许发货过账。 具体增强开发逻辑: 通过交货单行项目对应的SO,在表VBAK中取到SO的订单类型和价格条件记录号,然后再通过条件记录号在表KONV里面取到销售订单的成本价,然后判断成本价是否为零,如果是零报错提示。 备注:KONV价格条件记录表里面保存是SO里定价过程里各条件类型的价格,比如销售价、成本价、税、现金折扣等。 具体的增强实施步骤 1.创建BADI增强实施项目 输入实施名称点击确认,继续按如下步骤操作 如果正式开发环境需要选择包,这里是学习系统,不需要传输,所以选择本地对象即可。继续按如下步骤操作。 在下面的方法里面写上具体的增强代码 这里需要注意下:SY-UCOMM = 'WABU_T' ,这个表示点击“发货过账”图标才触发校验检查,如果是发货单创建和修改保存前检查不需要这个条件。另外如果有开发批量的交货单发货过账的功能,是捕捉不到这鼠标点击事件的,应该会跳过这条件,所以需要在批量程序或增强程序中处理下。
增强实施后效果如下 往期相关文章荐读: 1.SAP ERP系统SD模块常用增强之一:VA01&VA02创建或修改SO的输入检查2.SAP ERP系统实施隐式增强中"声明"和"代码"的区别和用途介绍 3.通过一个例子介绍SAPSmartform的应用及其技术细节和要点 ABAP入门好书推荐: |
|