DATA goodsmvt_code LIKE bapi2017_gm_code VALUE ‘04’.
DATA goodsmvt_header LIKE bapi2017_gm_head_01.
DATA materialdocument LIKE bapi2017_gm_head_ret-mat_doc.
DATA matdocumentyear LIKE bapi2017_gm_head_ret-doc_year.
DATA goodsmvt_item TYPE bapi2017_gm_item_create OCCURS 0 WITH HEADER LINE.
DATA return TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA:lv_mess(200).
CLEAR:goodsmvt_item[],return[],materialdocument,matdocumentyear.
LOOP AT gt_alv INTO gs_alv.
CLEAR goodsmvt_item.
goodsmvt_item-move_type = ‘309’.
goodsmvt_item-item_text = ‘物料转物料’.
goodsmvt_item-material = gs_alv-matnr1. "转出
goodsmvt_item-move_mat = gs_alv-matnr2. "接收
goodsmvt_item-plant = gs_alv-werks.
goodsmvt_item-entry_qnt = gs_alv-menge.
goodsmvt_item-stge_loc = gs_alv-lgort1. "转出
IF gs_alv-lgort2 <> ‘’.
goodsmvt_item-move_stloc = gs_alv-lgort2. "接收
ENDIF.
APPEND goodsmvt_item.
ENDLOOP.
IF goodsmvt_item[] IS NOT INITIAL.
goodsmvt_header-pstng_date = sy-datum.
goodsmvt_header-doc_date = sy-datum.
goodsmvt_header-pr_uname = sy-uname.
goodsmvt_header-header_txt = ‘物料转物料’.
CLEAR lv_mess.
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[].
IF materialdocument IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .
LOOP AT return WHERE type = 'E'.
lv_mess = lv_mess && '/' && return-message.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
lv_mess = '处理成功'.
ENDIF.
LOOP AT gt_alv INTO gs_alv.
gs_alv-mesg = lv_mess.
IF materialdocument <> ''.
gs_alv-mblnr = materialdocument.
gs_alv-mjahr = matdocumentyear.
gs_alv-incon = icon_green_light.
ELSE.
gs_alv-incon = icon_red_light.
ENDIF.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.
ENDIF.