3、交货单过账状态,交货单信息(ewm过账信息发给dms)
需求: erp生成交货单,然后交货单同步到ewm ,ewm交货过账以后会返回erp过账的状态
和包装等一些信息,这个时候我们这个点做增强,让ewm过完账同步erp的同时下发信
息给dms系统。
难点: 在找包装信息也就是HU信息的时候,发现他不跟交货单的过账状态一起更新erp,导致
在能取到交货单状态等信息的地方找不到HU信息。
解决办法:通过不断的调试,终于找到了HU的信息,但是发现只是底层的HU,我们要的是顶层的HU,
又在找到底层HU 的地方继续寻找,结果还是找了顶层HU。
因为这两个地方是不同的地发,先后顺序是交货单信息 ,hu信息,所以可以先取到交货单相
关的信息,最后来取HU。
交货单过账状态增强位置
程序: MV50AFZ1
位置: USEREXIT_SAVE_DOCUMENT.
过账状态为 C 。
取完有用信息后,放到全局变量里,等下个增强点使用
方法1: 在函数组里定义全局字段或者表,一边填值,一边取值。
方法2: 值传递
- 在调用的程序中:
EXPORT it_tab TO MEMORY 'Z_MEMORY'.
- 在被调用的程序中:
IMPORT T_ITAB FROM MEMORY 'Z_MEMORY'.
包装信息增强位置
至于怎么找到这个位置,那就是不的调试,我找了将近一个星期,盲目的通过搜索 erkp 和erko,找到可
能的位置进行调试,当然是在主程序里面搜索了。
函数组: V50L
函数模块:WS_DELIVERY_UPDATE
因为交货单包装信息存在erko 和 erpo中,所以通过debug找到这两个 表
前一个增强得值:
通过数据测试得到 包装的信息存在表 :VERPO_TAB
但是会有两条数据,一条有底层HU ,一条有顶层HU,我们先用交货单和行号取得底层HU,
然后在通过交货单和底层HU取到顶层HU。
LOOP AT LT_DATA INTO DATA(LS_DATA).
READ TABLE VERPO_TAB INTO DATA(LS_VERPO_TAB) WITH KEY VBELN = LS_DATA-VBELN
POSNR = LS_DATA-POSNR.
IF SY-SUBRC = 0.
LS_DATA-EXIDV = LS_VERPO_TAB-EXIDV_OB.
ENDIF.
CLEAR LS_VERPO_TAB.
READ TABLE VERPO_TAB INTO LS_VERPO_TAB WITH KEY VBELN = LS_DATA-VBELN
EXIDV = LS_DATA-EXIDV.
IF SY-SUBRC = 0.
LS_DATA-EXIDV = LS_VERPO_TAB-EXIDV_OB.
ENDIF.
IS_INPUT-EXIDV = LS_VERPO_TAB-EXIDV_OB.
MODIFY IT_INPUT FROM IS_INPUT TRANSPORTING EXIDV WHERE vbeln = LS_DATA-VBELN
AND POSNR = LS_DATA-POSNR.
****获取EWM HU 总数量
CALL FUNCTION 'ZEWM_FM_IF_DM005' DESTINATION LV_RFCDEST
EXPORTING
IV_VBELN = LS_DATA-VBELN
IV_HUIDENT = LS_DATA-EXIDV
IMPORTING
IV_QUAN = IV_QUAN
EXCEPTIONS
CONMUNICATION_FAILURE = 1
SYSTEM_FAILURE = 2.
LS_DATA-ZLFIMG = IV_QUAN.
MOVE-CORRESPONDING LS_DATA TO LS_GZZT.
APPEND LS_GZZT TO LT_GZZT.
MODIFY LT_DATA FROM LS_DATA.
CLEAR LS_DATA.CLEAR LS_GZZT.
ENDLOOP.