20250411笔记-EWM-PPF增强实现思路

缺乏S账号的生活真的好难啊。

背景是SAP交货单在传输EWM之后,虽然有交货单审核这个动作,但是老是有人再次修改SAP交货单。为了防止两侧数据不一致,SAP逻辑是,SAP交货单再次传输EWM。EWM原处理逻辑是再次创建交货单,因为KEY值SAP交货单重复,会DUMP。目前放开了限制,已经实现数量变更自动同步EWM,除此之外其他的调整传输EWM会报错。我们又不想继续放开更多的更新限制。于是我们选择了删除EWM交货单。

目前交货单两个场景,内向和外向,内向在删除之后会自动创建一个新的单号出来,很怪,后面在查。外向删除之后会产生一个队列给SAP,SAP会同步删除交货单,这很明显不是我们想要的。于是我们开始寻找增强。

1PPF调用点

参考网址:How to Debug PPF action in SAP EWM - SAP Community

类似于我们找BADI增强,在CL_EXITHANDLER里面打断点。我们在 CL_TRIGGER_PPF->IF_ACTION_PPF~EXECUTE打断点。
 CL_TRIGGER_PPF断点

需要注意的是,我们要打外部断点,因为是新开进程执行的PPF。

另一个需要注意的是,需要修改调试器参数文件,保存即可。

image-20250411155020746

image-20250411155057693

2获取ACTION关键字

action我想大部分EWM开发都很熟悉,同一类型业务数据的处理,都是走同一个类方法,action传参决定执行的内部类方法。

类:/SCWM/CL_IM_ERP_MAPOUT

类方法:IF_EX_EXEC_METHODCALL_PPF~EXECUTE

image-20250411160526108

3找PPF确定的执行类

表:/SCDL/TMP_SRVDET

image-20250411160716997

4全局搜索BADI

image-20250411160920901

image-20250411160944531

image-20250411161015519

通常PUBLISH方法是最后的推送。如果找不到BADI的话,评估一下,是否跳过推送。

image-20250411160842749

5筛选BADI

/SCDL/MP_SRV_OUT_SAP是内部实施,跳过。如果实在找不到,也可以考虑在内部实施的增强点附近做隐式增强。

image-20250411161215141

/SCDL/MP_OUT_EXT目前来看符合要求。

image-20250411161324991

无示例代码,建个实施丢到测试环境。

image-20250411161504881

代码如下:需要增加更多的判断条件

  method /SCDL/IF_EX_MP_SRV_OUT~BEFORE_ADAPTER_CALL.
    "ct_data  type /SCDL/AF_DLV_TAB   /SCDL/AF_DLV_STR
    FIELD-SYMBOLS :
                   <fs_data> TYPE /scdl/af_dlv_str.
    LOOP AT ct_data ASSIGNING <fs_data>.
      IF <fs_data>-s_head-s_ctrl-action_code = '05'."移去
        CO_MESSAGE_BOX->ADD_MESSAGE(
          is_symsg = VALUE #(
                              msgty = 'E'
                              msgid = 'ZEWMPROG'
                              msgno = '000'
                              msgv1 = '外向交货单删除不推送SAP'
                              )
           ).
      ENDIF.
    ENDLOOP.
  endmethod.

6其他

其实,还有个不是办法的办法。同EWM修改外向交货单过账日期增强一样。最终EWM产生的数据,都会产生队列传输到SAP。我们在EWM处理队列数据,或在SAP队列的处理函数中处理数据,这两者我认为是等效的。

例如本次,我不想推队列给SAP,那么我在SAP队列中,可以判断交货单是否在EWM删除,如果删除,那么我中止队列处理。

image-20250411162243360

7最后的最后

没有S账号的日子真的难过

因为没找到这个BADI的文档,所以后面该测试测试,是否会影响正常的功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值