本文主要是介绍BAPI_*_DELIVERY_CHANGE BAPI附加字段增强,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
描述:BAPI修改交货单扩展字段
业务需求:通过调用外向交货单修改的BAPI完成对LIKP&LIPS增强字段的修改
直接上操作:
1、VBKOK&VBPOK添加增强字段
2、增强点BADI:LE_SHP_DELIVERY_UPDATE创建实施
METHOD if_ex_le_shp_delivery_update~update_header.MOVE is_vbkok-zaddress TO cs_likp-zaddress .MOVE is_vbkok-zcontact TO cs_likp-zcontact .MOVE is_vbkok-ztel TO cs_likp-ztel .MOVE is_vbkok-zord TO cs_likp-zord .MOVE is_vbkok-zwlgs TO cs_likp-zwlgs .MOVE is_vbkok-zfws TO cs_likp-zfws .MOVE is_vbkok-zxsqd TO cs_likp-zxsqd .MOVE is_vbkok-zcrtid TO cs_likp-zcrtid .ENDMETHOD.
method IF_EX_LE_SHP_DELIVERY_UPDATE~UPDATE_ITEM.MOVE IS_VBPOK-ZJQBM TO CS_LIPS-ZJQBM .endmethod.
完事激活
3、BADI:SMOD_V50B0001->EXIT_SAPLV50I_010添加增强逻辑
METHOD if_ex_smod_v50b0001~exit_saplv50i_010.READ TABLE extension2 INTO DATA(ls_extension2) WITH KEY param = 'LIKP' field = 'ZADDRESS' .IF sy-subrc = 0 .MOVE ls_extension2-value TO cs_vbkok-zaddress .CLEAR : ls_extension2 .ENDIF .READ TABLE extension2 INTO ls_extension2 WITH KEY param = 'LIKP' field = 'ZCONTACT' .IF sy-subrc = 0 .MOVE ls_extension2-value TO cs_vbkok-zcontact .CLEAR : ls_extension2 .ENDIF .READ TABLE extension2 INTO ls_extension2 WITH KEY param = 'LIKP' field = 'ZTEL' .IF sy-subrc = 0 .MOVE ls_extension2-value TO cs_vbkok-ztel .CLEAR : ls_extension2 .ENDIF .READ TABLE extension2 INTO ls_extension2 WITH KEY param = 'LIKP' field = 'ZORD' .IF sy-subrc = 0 .MOVE ls_extension2-value TO cs_vbkok-zord .CLEAR : ls_extension2 .ENDIF .READ TABLE extension2 INTO ls_extension2 WITH KEY param = 'LIKP' field = 'ZWLGS' .IF sy-subrc = 0 .MOVE ls_extension2-value TO cs_vbkok-zwlgs .CLEAR : ls_extension2 .ENDIF .READ TABLE extension2 INTO ls_extension2 WITH KEY param = 'LIKP' field = 'ZFWS' .IF sy-subrc = 0 .MOVE ls_extension2-value TO cs_vbkok-zfws .CLEAR : ls_extension2 .ENDIF .READ TABLE extension2 INTO ls_extension2 WITH KEY param = 'LIKP' field = 'ZXSQD' .IF sy-subrc = 0 .MOVE ls_extension2-value TO cs_vbkok-zxsqd .CLEAR : ls_extension2 .ENDIF .READ TABLE extension2 INTO ls_extension2 WITH KEY param = 'LIKP' field = 'ZCRTID' .IF sy-subrc = 0 .MOVE ls_extension2-value TO cs_vbkok-zcrtid .CLEAR : ls_extension2 .ENDIF .LOOP AT ct_vbpok ASSIGNING FIELD-SYMBOL(<fs_vbpok>) .LOOP AT extension2 INTO ls_extension2 WHERE param = 'LIPS' AND field = 'ZJQBM' AND row = <fs_vbpok>-posnr_vl .MOVE ls_extension2-value TO <fs_vbpok>-zjqbm .CLEAR ls_extension2 .ENDLOOP .ENDLOOP .ENDMETHOD.
完事激活
4、BAPI相关代码
lv_head_data-deliv_numb = lv_vbeln_in .lv_head_cont-deliv_numb = lv_vbeln_in .lv_delivery = lv_vbeln_in .SELECT * FROM lips INTO TABLE @DATA(lt_lips_tab) WHERE vbeln = @lv_vbeln_in .LOOP AT import_info-mt_sd002_request-import_item[] INTO ls_item .ls_item_data-deliv_numb = lv_vbeln_in .ls_item_data-deliv_item = ls_item-posnr .ls_item_data-dlv_qty = ls_item-lfimg .READ TABLE lt_lips_tab INTO DATA(ls_lips_con) WITH KEY posnr = ls_item-posnr .IF sy-subrc = 0 .ls_item_data-fact_unit_nom = ls_lips_con-umvkz .ls_item_data-fact_unit_denom = ls_lips_con-umvkn .ENDIF .APPEND ls_item_data TO lt_item_data .ls_item_cont-deliv_numb = lv_vbeln_in .ls_item_cont-deliv_item = ls_item-posnr .ls_item_cont-chg_delqty = 'X' .APPEND ls_item_cont TO lt_item_cont .ls_item_data_spl-deliv_numb = lv_vbeln_in .ls_item_data_spl-deliv_item = ls_item-posnr .ls_item_data_spl-stge_loc = ls_item-lgort .APPEND ls_item_data_spl TO lt_item_data_spl .*扩展字段处理.IF import_info-mt_sd002_request-import_head-zaddress IS NOT INITIAL .ls_extension2-field = 'ZADDRESS' .ls_extension2-param = 'LIKP' .ls_extension2-value = import_info-mt_sd002_request-import_head-zaddress .APPEND ls_extension2 TO lt_extension2 .CLEAR : ls_extension2 .ENDIF .IF import_info-mt_sd002_request-import_head-zcontact IS NOT INITIAL .ls_extension2-field = 'ZCONTACT' .ls_extension2-param = 'LIKP' .ls_extension2-value = import_info-mt_sd002_request-import_head-zcontact .APPEND ls_extension2 TO lt_extension2 .CLEAR : ls_extension2 .ENDIF .IF import_info-mt_sd002_request-import_head-ztel IS NOT INITIAL .ls_extension2-field = 'ZTEL' .ls_extension2-param = 'LIKP' .ls_extension2-value = import_info-mt_sd002_request-import_head-ztel .APPEND ls_extension2 TO lt_extension2 .CLEAR : ls_extension2 .ENDIF .IF import_info-mt_sd002_request-import_head-zord IS NOT INITIAL .ls_extension2-field = 'ZORD' .ls_extension2-param = 'LIKP' .ls_extension2-value = import_info-mt_sd002_request-import_head-zord .APPEND ls_extension2 TO lt_extension2 .CLEAR : ls_extension2 .ENDIF .IF import_info-mt_sd002_request-import_head-zwlgs IS NOT INITIAL .ls_extension2-field = 'ZWLGS' .ls_extension2-param = 'LIKP' .ls_extension2-value = import_info-mt_sd002_request-import_head-zwlgs .APPEND ls_extension2 TO lt_extension2 .CLEAR : ls_extension2 .ENDIF .IF import_info-mt_sd002_request-import_head-zfws IS NOT INITIAL .ls_extension2-field = 'ZFWS' .ls_extension2-param = 'LIKP' .ls_extension2-value = import_info-mt_sd002_request-import_head-zfws .APPEND ls_extension2 TO lt_extension2 .CLEAR : ls_extension2 .ENDIF .IF import_info-mt_sd002_request-import_head-zxsqd IS NOT INITIAL .ls_extension2-field = 'ZXSQD' .ls_extension2-param = 'LIKP' .ls_extension2-value = import_info-mt_sd002_request-import_head-zxsqd .APPEND ls_extension2 TO lt_extension2 .CLEAR : ls_extension2 .ENDIF .IF import_info-mt_sd002_request-import_head-zcrtid IS NOT INITIAL .ls_extension2-field = 'ZCRTID' .ls_extension2-param = 'LIKP' .ls_extension2-value = import_info-mt_sd002_request-import_head-zcrtid .APPEND ls_extension2 TO lt_extension2 .CLEAR : ls_extension2 .ENDIF .IF ls_item-zjqbm IS NOT INITIAL .ls_extension2-field = 'ZJQBM' .ls_extension2-param = 'LIPS' .ls_extension2-row = ls_item-posnr .ls_extension2-value = ls_item-zjqbm .APPEND ls_extension2 TO lt_extension2 .CLEAR : ls_extension2 .ENDIF .CLEAR : ls_item ,ls_item_data ,ls_item_cont ,ls_item_data_spl ,ls_lips.ENDLOOP.CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'EXPORTINGheader_data = lv_head_dataheader_control = lv_head_contdelivery = lv_deliveryTABLESitem_data = lt_item_dataitem_control = lt_item_contextension1 = lt_extensionextension2 = lt_extension2return = lt_returnitem_data_spl = lt_item_data_spl.
*增强BUG:做完这俩增强行项目扩展字段可以更新,但是抬头还是不行,最后也没发现问题。
DEBUG找到增强点MV50AFZ1->USEREXIT_SAVE_DOCUMENT_PREPARE
经过测试,可以抛内存将抬头的扩展字段写入这个增强点。
这篇关于BAPI_*_DELIVERY_CHANGE BAPI附加字段增强的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!