BADI:MB_GOODSMOVEMENT
METHOD if_ex_mb_bapi_goodsmvt_create~extensionin_to_matdoc.
DATA:
c_lenstruc TYPE i VALUE 30,
wa_bapi_mb_header TYPE bapi_te_xmkpf,
wa_bapi_mb_item TYPE bapi_te_xmseg,
wa_extension_in TYPE bapiparex.
FIELD-SYMBOLS:
<fs_imseg> TYPE imseg.
CHECK NOT extension_in[] IS INITIAL.
* Analyze IMSEG for document structure and assign LINE_IDs if necessary
CALL METHOD cl_mmim_line_id_manager=>analyze_mb_create
CHANGING
ct_imseg = ct_imseg[]
EXCEPTIONS
duplicate_line_id = 1
OTHERS = 2.
LOOP AT extension_in INTO wa_extension_in.
CASE wa_extension_in-structure.
* extension of MKPF
WHEN 'BAPI_TE_XMKPF'.
MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_header.
MOVE-CORRESPONDING wa_bapi_mb_header TO cs_imkpf.
* extension of MSEG
WHEN 'BAPI_TE_XMSEG'.
MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_item.
READ TABLE ct_imseg
WITH KEY line_id = wa_bapi_mb_item-matdoc_itm
ASSIGNING <fs_imseg>.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING wa_bapi_mb_item TO <fs_imseg>.
ENDIF.
ENDCASE.
ENDLOOP.
ENDMETHOD.
IF ls_itemdata-zysh IS NOT INITIAL OR ls_itemdata-zplxh IS NOT INITIAL .".
ls_extensionin-structure = 'BAPI_TE_XMSEG'.
ls_extensionin-valuepart1+14(4) = ls_itemdata-item_id.
IF ls_itemdata-zysh IS NOT INITIAL.
READ TABLE lt_zfit_0001 INTO DATA(ls_e0001) WITH KEY zzysm = ls_itemdata-zysh BINARY SEARCH.
IF sy-subrc = 0.
ls_extensionin-valuepart1+18(100) = ls_itemdata-zysh.
ls_extensionin-valuepart1+118(100) = ls_e0001-zzysmms.
ELSE.
ls_extensionin-valuepart1+18(100) = ls_itemdata-zysh.
ENDIF.
ENDIF.
IF ls_itemdata-zplxh IS NOT INITIAL.
READ TABLE lt_zfit_0002 INTO DATA(ls_e0002) WITH KEY zzplxh = ls_itemdata-zplxh BINARY SEARCH.
IF sy-subrc = 0.
DATA(lv_lenth) = strlen( ls_itemdata-zplxh ).
ls_extensionin-valuepart1+218(22) = ls_itemdata-zplxh.
IF lv_lenth GT 22.
ls_extensionin-valuepart2+0(78) = ls_itemdata-zplxh+22(*).
ENDIF.
ls_extensionin-valuepart2+78(100) = ls_e0002-zzplxhms.
ENDIF.
ENDIF.
* "srm单号
* IF ls_itemdata-zshdh IS NOT INITIAL.
* ls_extensionin-valuepart3(240) = ls_itemdata-zshdh.
* ENDIF.
*
* "srm行项目
* IF ls_itemdata-zshdh_item IS NOT INITIAL.
* ls_extensionin-valuepart4(240) = ls_itemdata-zshdh_item.
* ENDIF.
APPEND ls_extensionin TO lt_extensionin.
ENDIF.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_header
goodsmvt_code = lv_gcode
IMPORTING
goodsmvt_headret = ls_goodsmvt_headret
TABLES
goodsmvt_item = lt_item
goodsmvt_serialnumber = lt_xlh
return = lt_return
extensionin = lt_extensionin.