DATA:ls_head TYPE bapi2017_gm_head_01,
ls_code TYPE bapi2017_gm_code,
ls_item TYPE bapi2017_gm_item_create,
lt_item TYPE TABLE OF bapi2017_gm_item_create,
ls_return TYPE bapiret2,
lt_return TYPE TABLE OF bapiret2.
CLEAR ls_head .
CLEAR ls_code .
CLEAR ls_item .
REFRESH lt_item .
CLEAR ls_return .
REFRESH lt_return .
ls_head-pstng_date = is_input-budat .
ls_head-doc_date = is_input-bldat .
ls_head-header_txt = is_input-bktxt .
ls_head-ref_doc_no = is_input-xblnr .
ls_code-gm_code = '03' .
LOOP AT ti_item ASSIGNING FIELD-SYMBOL(<fs_item>) .
CLEAR ls_item .
ls_item-material = <fs_item>-matnr .
ls_item-entry_qnt = <fs_item>-menge .
ls_item-base_uom = <fs_item>-meins .
ls_item-orderid = <fs_item>-aufnr .
ls_item-xstob = ''.
ls_item-move_type = '261' .
ls_item-plant = <fs_item>-werks .
ls_item-stge_loc = <fs_item>-lgort .
ls_item-batch = <fs_item>-charg .
ls_item-item_text = <fs_item>-sgtxt .
ls_item-sales_ord = <fs_item>-kdauf .
ls_item-s_ord_item = <fs_item>-kdpos .
APPEND ls_item TO lt_item .
ENDLOOP .
IF es_output-type <> 'E' .
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_head
goodsmvt_code = ls_code
* TESTRUN = ' '
* GOODSMVT_REF_EWM =
* GOODSMVT_PRINT_CTRL =
IMPORTING
* GOODSMVT_HEADRET =
materialdocument = es_output-mblnr
* MATDOCUMENTYEAR =
TABLES
goodsmvt_item = lt_item
* GOODSMVT_SERIALNUMBER =
return = lt_return
* GOODSMVT_SERV_PART_DATA =
* EXTENSIONIN =
* GOODSMVT_ITEM_CWM =
.
IF es_output-mblnr IS INITIAL .
es_output-type = 'E' .
LOOP AT lt_return INTO ls_return WHERE type = 'E' .
es_output-message = ls_return-message && ';' && es_output-message .
ENDLOOP .
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
es_output-type = 'S' .
es_output-message = '创建成功' .
ENDIF .
ENDIF .