外向交货单新增行
需求:根据外围系统需求紧急发货,需要在原先DN上新增行
实现:
由于实践在网上找到的几个与DN相关BAPI之后,并未生效,想通过交货单增强处理的BADI进行实施
BADI: LE_SHP_DELIVERY_PROC
IF_EX_LE_SHP_DELIVERY_PROC~SAVE_DOCUMENT_PREPARE
BAPI:/SPE/OUTB_DLV_CHG_ITEMS_INSERT or BAPI_DELIVERYPROCESSING_EXEC
尝试后能触发该BADI的实现(搜到相关帖子该BAPI能实现DN新增行,自己尝试后并未实现,且失败无返回消息)
1.新建FM:ZSD_OUTB_DLV_ITEM_CTEATE
并创建全局变量 DATA:g_xlips TYPE LINE OF shp_lips_t.用于DN行数据传输
FUNCTION zsd_outb_dlv_item_cteate. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(I_DN_ITEM) TYPE ZSD_DNITEM_ADD_API *" EXPORTING *" VALUE(O_MSGTY) TYPE BAPI_MTYPE *" VALUE(O_MSG) TYPE BAPI_MSG *"---------------------------------------------------------------------- DATA: ls_vbkok TYPE vbkok, ls_delivery_head TYPE likpvb, l_brgew LIKE marm-brgew, lt_return TYPE TABLE OF bapiret2 WITH HEADER LINE. " Record posnr before inserting new item SELECT SINGLE MAX( posnr ) FROM lips INTO @DATA(lv_posnr) WHERE vbeln = @i_dn_item-vbeln AND uecha = ''. ADD 10 TO lv_posnr. "Material SELECT SINGLE mtart,matkl,meins,maktx FROM mara INNER JOIN makt ON mara~matnr = makt~matnr AND spras = @sy-langu INTO ( @g_xlips-mtart,@g_xlips-matkl,@i_dn_item-meins,@g_xlips-arktx ) WHERE mara~matnr = @i_dn_item-matnr. "BRGEW 毛重 SELECT SINGLE brgew,gewei FROM marm INTO ( @l_brgew,@g_xlips-gewei ) WHERE matnr = @i_dn_item-matnr AND meinh = @i_dn_item-meins. g_xlips-mandt = sy-mandt. g_xlips-vbeln = i_dn_item-vbeln. g_xlips-posnr = lv_posnr. g_xlips-pstyv = i_dn_item-pstyv. g_xlips-ernam = sy-uname. g_xlips-erzet = sy-uzeit. g_xlips-erdat = sy-datum. g_xlips-matnr = i_dn_item-matnr. g_xlips-werks = i_dn_item-werks. g_xlips-lgort = i_dn_item-lgort. g_xlips-charg = i_dn_item-charg. "批次 g_xlips-lfimg = i_dn_item-lfimg. "交货数量 g_xlips-meins = i_dn_item-meins. g_xlips-vrkme = i_dn_item-meins. "i_dn_item-vrkme. Default g_xlips-umvkz = 1. g_xlips-umvkn = 1. g_xlips-brgew = l_brgew * i_dn_item-lfimg. "毛重 g_xlips-lgmng = i_dn_item-lfimg. "实际交货数 g_xlips-mbdat = sy-datum. "备料/可用性日期 g_xlips-fkrel = 'J'. "开票相关 g_xlips-xchpf = 'X'. g_xlips-xchar = 'X'. g_xlips-lfimg_flo = i_dn_item-lfimg. g_xlips-ormng = i_dn_item-lfimg. CALL FUNCTION '/SPE/OUTB_DLV_CHG_ITEMS_INSERT' EXPORTING if_delivery_number = i_dn_item-vbeln is_vbkok = ls_vbkok is_delivery_head = ls_delivery_head TABLES * it_new_items = lt_new_items et_return = lt_return. READ TABLE lt_return WITH KEY type = 'E'. IF sy-subrc NE 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF. " Get new item number in delivery SELECT SINGLE COUNT(*) FROM lips WHERE vbeln = @i_dn_item-vbeln AND posnr = @lv_posnr. IF sy-subrc = 0. o_msgty = 'S'. ELSE. o_msgty = 'E'. ENDIF. ENDFUNCTION.
2.BADI: LE_SHP_DELIVERY_PROC 实施
全局变量g_xlips 中有部分与后续交货过账相关参数 通过直接赋值
METHOD if_ex_le_shp_delivery_proc~save_document_prepare. DATA:wa_xlips LIKE LINE OF ct_xlips, wa_xlikp LIKE LINE OF ct_xlikp, g_xlips TYPE char40 VALUE '(SAPLZFG_SD001)G_XLIPS'. FIELD-SYMBOLS <fs_xlips> TYPE lipsvb. READ TABLE ct_xlikp INTO wa_xlikp INDEX 1. IF wa_xlikp-updkz = 'U'. ASSIGN (g_xlips) TO <fs_xlips>. IF <fs_xlips> IS ASSIGNED. READ TABLE ct_xlips INTO wa_xlips INDEX 1. CHECK sy-subrc = 0. <fs_xlips>-updkz = 'I'. <fs_xlips>-bwart = wa_xlips-bwart. <fs_xlips>-sumbd = wa_xlips-sumbd . <fs_xlips>-mtvfp = wa_xlips-mtvfp . <fs_xlips>-vtweg = wa_xlips-vtweg . <fs_xlips>-spart = wa_xlips-spart . <fs_xlips>-prctr = wa_xlips-prctr . <fs_xlips>-bedar_lf = wa_xlips-bedar_lf . <fs_xlips>-kzbew = wa_xlips-kzbew . <fs_xlips>-berid = wa_xlips-berid . <fs_xlips>-akmng = wa_xlips-akmng . <fs_xlips>-gmcontrol = wa_xlips-gmcontrol. <fs_xlips>-posting_change = wa_xlips-posting_change. <fs_xlips>-gbsta = wa_xlips-gbsta. <fs_xlips>-uvall = wa_xlips-uvall . <fs_xlips>-uvfak = wa_xlips-uvfak . <fs_xlips>-uvpak = wa_xlips-uvpak . <fs_xlips>-uvpik = wa_xlips-uvpik . <fs_xlips>-uvvlk = wa_xlips-uvvlk . <fs_xlips>-uvwak = wa_xlips-uvwak . <fs_xlips>-wbsta = wa_xlips-wbsta . <fs_xlips>-lfdez = wa_xlips-lfdez . APPEND <fs_xlips> TO ct_xlips. ENDIF. ENDIF. ENDMETHOD.
如有更合适方法请告知,感谢分享。
分类:
ABAP
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通