扩充多个物料
调用BAPI:BAPI_MATERIAL_SAVEREPLICA
DATA:ls_return TYPE bapiret2,
lt_head TYPE TABLE OF bapie1matheader WITH HEADER LINE,
lt_mard TYPE TABLE OF bapie1mard WITH HEADER LINE,
lt_mardx TYPE TABLE OF bapie1mardx WITH HEADER LINE.
lt_head-function = '009'.
lt_head-material = 'HYM01'.
lt_head-storage_view = 'X'.
APPEND lt_head.
CLEAR lt_head.
lt_mard-function = '009'.
lt_mard-material = 'HYM01'.
lt_mard-plant = '1000'.
lt_mard-stge_loc = '1002'.
APPEND lt_mard.
CLEAR lt_mard.
lt_mardx-function = '009'.
lt_mardx-material = 'HYM01'.
lt_mardx-plant = '1000'.
lt_mardx-stge_loc = '1002'.
APPEND lt_mardx.
CLEAR lt_mardx.
CALL FUNCTION 'BAPI_MATERIAL_SAVEREPLICA'
EXPORTING
noappllog = 'X'
nochangedoc = ''
testrun = ''
inpfldcheck = ''
IMPORTING
return = ls_return
TABLES
headdata = lt_head
storagelocationdata = lt_mard
storagelocationdatax = lt_mardx.
IF ls_return-type <> 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
单个物料
DATA: ls_head TYPE bapimathead,
ls_stld TYPE bapi_mard,
ls_stldx TYPE bapi_mardx,
ls_return TYPE bapiret2.
BREAK yangtao.
LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_out>).
CLEAR:ls_head,ls_stld,ls_stldx.
ls_head-material = <fs_out>-matnr. " 物料编号
ls_head-storage_view = 'X'. " 存储视图
ls_stld-plant = <fs_out>-werks. " 工厂
ls_stld-stge_loc = <fs_out>-lgort. " 存储地点
ls_stldx-plant = <fs_out>-werks. " 工厂
ls_stldx-stge_loc = <fs_out>-lgort. " 存储地点
CLEAR ls_return.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = ls_head " 物料
storagelocationdata = ls_stld " 工厂&存储地点
storagelocationdatax = ls_stldx " 工厂&存储地点
IMPORTING
return = ls_return.
IF ls_return-type CA 'AEX'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
<fs_out>-bapi_mtype = 'E'.
<fs_out>-bapi_msg = ls_return-message.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
<fs_out>-bapi_mtype = 'S'.
<fs_out>-bapi_msg = '扩充成功'.
ENDIF.
ENDLOOP.