SAP_常用BAPI_建立修改物料主資料(BAPI_MATERIAL_SAVEDATA)
阿新 • • 發佈:2019-01-10
LOOP AT pt_out.
CLEAR: ls_headdata,ls_return.
REFRESH: lt_extensionin,lt_extensioninx.
"---判斷是否需要擴充套件修改
READ TABLE gt_mard WITH KEY matnr = pt_out-matnr
werks = pt_out-werks
lgort = pt_out-lgort
BINARY SEARCH.
IF sy-subrc EQ 0 AND gt_mard-lgort1 EQ pt_out-lgort1 AND gt_mard-lgort2 EQ pt_out-lgort2.
l_proc_n_lines = l_proc_n_lines + 1. "無需處理
pt_out-bz = '無需擴充套件'.
MODIFY pt_out TRANSPORTING bz.
CONTINUE.
ENDIF.
ls_headdata-material = pt_out-matnr.
ls_headdata-storage_view = 'X'.
ls_bapi_te_mard-plant = pt_out-werks.
ls_bapi_te_mard-stge_loc = pt_out-lgort.
ls_bapi_te_mard-lgort1 = pt_out-lgort1.
ls_bapi_te_mard-lgort2 = pt_out-lgort2.
ls_bapi_te_mardx-plant = pt_out-werks.
ls_bapi_te_mardx-stge_loc = pt_out-lgort.
ls_bapi_te_mardx-lgort1 = 'X'.
ls_bapi_te_mardx- lgort2 = 'X'.
lt_extensionin-structure = 'BAPI_TE_MARD'.
lt_extensionin-valuepart1 = ls_bapi_te_mard.
APPEND lt_extensionin.
CLEAR lt_extensionin.
lt_extensioninx-structure = 'BAPI_TE_MARDX'.
lt_extensioninx-valuepart1 = ls_bapi_te_mardx.
APPEND lt_extensioninx.
CLEAR lt_extensioninx.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = ls_headdata
* CLIENTDATA =
* CLIENTDATAX =
* PLANTDATA =
* PLANTDATAX =
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
* storagelocationdata =
* storagelocationdatax =
* VALUATIONDATA =
* VALUATIONDATAX =
* WAREHOUSENUMBERDATA =
* WAREHOUSENUMBERDATAX =
* SALESDATA =
* SALESDATAX =
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
* FLAG_ONLINE = ''
* FLAG_CAD_CALL = ' '
* NO_DEQUEUE = ''
* NO_ROLLBACK_WORK = ''
IMPORTING
return = ls_return
TABLES
* MATERIALDESCRIPTION =
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
* MATERIALLONGTEXT =
* TAXCLASSIFICATIONS =
* RETURNMESSAGES =
* PRTDATA =
* PRTDATAX =
extensionin = lt_extensionin
extensioninx = lt_extensioninx.
IF ls_return-type CA 'EA'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
CONCATENATE ls_return-message ls_return-message_v1
ls_return-message_v2 ls_return-message_v3
ls_return-message_v4 INTO pt_out-bz.
l_proc_f_lines = l_proc_f_lines + 1.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = c_strx.
pt_out-bz = '擴充套件成功'.
l_proc_s_lines = l_proc_s_lines + 1.
ENDIF.
"---已處理標識
gt_out-flag = '2'. "匯入資料已處理
MODIFY pt_out TRANSPORTING bz flag.
ENDLOOP.
CLEAR: ls_headdata,ls_return.
REFRESH: lt_extensionin,lt_extensioninx.
"---判斷是否需要擴充套件修改
READ TABLE gt_mard WITH KEY matnr = pt_out-matnr
werks = pt_out-werks
lgort = pt_out-lgort
BINARY
IF sy-subrc EQ 0 AND gt_mard-lgort1 EQ pt_out-lgort1 AND gt_mard-lgort2 EQ pt_out-lgort2.
l_proc_n_lines = l_proc_n_lines + 1. "無需處理
pt_out-bz = '無需擴充套件'.
MODIFY pt_out TRANSPORTING bz.
CONTINUE.
ENDIF.
ls_headdata-material = pt_out-matnr.
ls_headdata-storage_view =
ls_bapi_te_mard-plant = pt_out-werks.
ls_bapi_te_mard-stge_loc = pt_out-lgort.
ls_bapi_te_mard-lgort1 = pt_out-lgort1.
ls_bapi_te_mard-lgort2 = pt_out-lgort2.
ls_bapi_te_mardx-plant = pt_out-werks.
ls_bapi_te_mardx-stge_loc = pt_out-lgort.
ls_bapi_te_mardx-lgort1 = 'X'.
ls_bapi_te_mardx-
lt_extensionin-structure = 'BAPI_TE_MARD'.
lt_extensionin-valuepart1 = ls_bapi_te_mard.
APPEND lt_extensionin.
CLEAR lt_extensionin.
lt_extensioninx-structure = 'BAPI_TE_MARDX'.
lt_extensioninx-valuepart1 = ls_bapi_te_mardx.
APPEND lt_extensioninx.
CLEAR lt_extensioninx.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = ls_headdata
* CLIENTDATA =
* CLIENTDATAX =
* PLANTDATA =
* PLANTDATAX =
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
* storagelocationdata =
* storagelocationdatax =
* VALUATIONDATA =
* VALUATIONDATAX =
* WAREHOUSENUMBERDATA =
* WAREHOUSENUMBERDATAX =
* SALESDATA =
* SALESDATAX =
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
* FLAG_ONLINE = ''
* FLAG_CAD_CALL = ' '
* NO_DEQUEUE = ''
* NO_ROLLBACK_WORK = ''
IMPORTING
return = ls_return
TABLES
* MATERIALDESCRIPTION =
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
* MATERIALLONGTEXT =
* TAXCLASSIFICATIONS =
* RETURNMESSAGES =
* PRTDATA =
* PRTDATAX =
extensionin = lt_extensionin
extensioninx = lt_extensioninx.
IF ls_return-type CA 'EA'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
CONCATENATE ls_return-message ls_return-message_v1
ls_return-message_v2 ls_return-message_v3
ls_return-message_v4 INTO pt_out-bz.
l_proc_f_lines = l_proc_f_lines + 1.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = c_strx.
pt_out-bz = '擴充套件成功'.
l_proc_s_lines = l_proc_s_lines + 1.
ENDIF.
"---已處理標識
gt_out-flag = '2'. "匯入資料已處理
MODIFY pt_out TRANSPORTING bz flag.
ENDLOOP.