METHOD zii_si_mmi016_s4_ib_syn~si_mmi016_s4_ib_syn.
*** **** INSERT IMPLEMENTATION HERE **** ***
DATA: ls_item_req_header TYPE zdt_mmi016_s4_req_head.
DATA: lt_item_req_item TYPE zdt_mmi016_s4_req_item_tab,
ls_item_req_item LIKE LINE OF lt_item_req_item.
DATA:lv_error.
DATA:lt_ztmm006 TYPE TABLE OF ztmm006.
DATA:ls_ztmm006 TYPE ztmm006.
DATA:lv_xh TYPE ztmm006-xh.
DATA:lv_xhitem TYPE ztmm006-xhitem.
DATA goodsmvt_header TYPE bapi2017_gm_head_01.
DATA goodsmvt_code TYPE bapi2017_gm_code.
DATA materialdocument TYPE bapi2017_gm_head_ret-mat_doc.
DATA matdocumentyear TYPE bapi2017_gm_head_ret-doc_year.
DATA goodsmvt_item TYPE TABLE OF bapi2017_gm_item_create.
DATA ls_goodsmvt_item TYPE bapi2017_gm_item_create.
DATA return TYPE TABLE OF bapiret2.
DATA ls_return TYPE bapiret2.
DATA:lw_txz01 TYPE ekpo-txz01.
REFRESH:goodsmvt_item,return,lt_item_req_item,lt_ztmm006.
CLEAR:ls_item_req_header,goodsmvt_header,materialdocument,matdocumentyear,lv_error,lv_xh,lv_xhitem.
ls_item_req_header = input-mt_mmi016_s4_req-head.
lt_item_req_item = input-mt_mmi016_s4_req-item.
goodsmvt_header-pstng_date = ls_item_req_header-budat.
goodsmvt_header-doc_date = ls_item_req_header-doc_date.
goodsmvt_header-pr_uname = sy-uname.
goodsmvt_header-header_txt = ls_item_req_header-zoaid.
goodsmvt_code = '01'.
LOOP AT lt_item_req_item INTO ls_item_req_item.
CLEAR:ls_goodsmvt_item.
ls_goodsmvt_item-move_type = '101'. "移动类型
ls_goodsmvt_item-po_number = |{ ls_item_req_item-ebeln ALPHA = IN }|. "采购凭证号
ls_goodsmvt_item-po_item = |{ ls_item_req_item-ebelp ALPHA = IN }| . "采购凭证的项目编号
ls_goodsmvt_item-mvt_ind = 'B'. "移动标识 ’B‘为采购收货 ’F ' 生产收货
ls_goodsmvt_item-entry_qnt = ls_item_req_item-menge.
CLEAR lw_txz01. "20230315-yuchengyi-add
SELECT SINGLE txz01 INTO lw_txz01 FROM ekpo WHERE ebeln = ls_goodsmvt_item-po_number AND ebelp = ls_goodsmvt_item-po_item. "20230315-yuchengyi-add
ls_goodsmvt_item-item_text = ls_item_req_header-zoaid && '//' && lw_txz01. "20230315-yuchengyi-add
APPEND ls_goodsmvt_item TO goodsmvt_item.
ENDLOOP.
IF goodsmvt_item[] IS NOT INITIAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = goodsmvt_header
goodsmvt_code = goodsmvt_code
IMPORTING
materialdocument = materialdocument
matdocumentyear = matdocumentyear
TABLES
goodsmvt_item = goodsmvt_item[]
return = return[].
LOOP AT return INTO ls_return WHERE type = 'E'.
lv_error = 'E'.
output-mt_mmi016_s4_res-ztype = 'E'.
output-mt_mmi016_s4_res-mess = output-mt_mmi016_s4_res-ztype && '/' && ls_return-message.
ENDLOOP.
IF lv_error = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
output-mt_mmi016_s4_res-ztype = 'S'.
output-mt_mmi016_s4_res-mess = '验收成功,物料凭证:' && materialdocument.
output-mt_mmi016_s4_res-mblnr = materialdocument.
output-mt_mmi016_s4_res-gjahr = matdocumentyear.
ENDIF.
ENDIF.
SELECT MAX( xh ) INTO lv_xh FROM ztmm006.
ADD 1 TO lv_xh.
LOOP AT lt_item_req_item INTO ls_item_req_item.
ADD 1 TO lv_xhitem.
CLEAR:ls_ztmm006.
ls_ztmm006-xh = lv_xh.
ls_ztmm006-xhitem = lv_xhitem.
ls_ztmm006-zoaid = ls_item_req_header-zoaid.
ls_ztmm006-budat = ls_item_req_header-budat.
ls_ztmm006-doc_date = ls_item_req_header-doc_date.
ls_ztmm006-zoaitem = ls_item_req_item-zoaitem.
ls_ztmm006-ebeln = ls_item_req_item-ebeln.
ls_ztmm006-ebelp = ls_item_req_item-ebelp.
ls_ztmm006-menge = ls_item_req_item-menge.
ls_ztmm006-meins = ls_item_req_item-meins.
ls_ztmm006-ztype = output-mt_mmi016_s4_res-ztype.
ls_ztmm006-mess = output-mt_mmi016_s4_res-mess.
ls_ztmm006-mblnr = materialdocument.
ls_ztmm006-gjahr = matdocumentyear.
APPEND ls_ztmm006 TO lt_ztmm006.
ENDLOOP.
IF lt_ztmm006 IS NOT INITIAL.
MODIFY ztmm006 FROM TABLE lt_ztmm006.
ENDIF.
ENDMETHOD.