BAPI_MATERIAL_SAVEREPLICA 批量维护物料主数据
BAPI_MATERIAL_SAVEDATA 单个维护(比如库存地点也是一个工厂一个库存地点维护的)
如果物料已经有成本了,再维护物料的价格,会报错 M8 155,“标准成本估计存在于期间12 2016中”,意思是不能在mm02维护成本,需要在mr21中维护。
创建分类视图用BAPI_OBJCL_CREATE
如果要写入用户名,改sy-uname,用户在sap不存在也可以写进去
demo
function zwm_xxx_material_update.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IV_MATNR) TYPE MATNR
*" EXPORTING
*" VALUE(RTYPE) TYPE BAPI_MTYPE
*" VALUE(RTMSG) TYPE BAPI_MSG
*" TABLES
*" T_DATA STRUCTURE ZWM_S_XXX_MATERIAL_UPDATE
*"----------------------------------------------------------------------
zfmparavalsave1 'ZWM_XXX_MATERIAL_UPDATE'.
zfmparavalsave2 'B'.
perform frm_matn1_input changing iv_matnr.
read table t_data index 1.
data ls_headdata type bapimathead.
data ls_clientdata type bapi_mara.
data ls_clientdatax type bapi_marax.
data ls_warehousenumberdata type bapi_mlgn.
data ls_warehousenumberdatax type bapi_mlgnx.
data ls_return type bapiret2.
data lt_unitsofmeasure type standard table of bapi_marm with header line.
data lt_unitsofmeasurex type standard table of bapi_marmx with header line.
data lt_returnmessages type standard table of bapi_matreturn2 with header line.
ls_headdata-material = iv_matnr.
ls_clientdata-size_dim = t_data-groes. "Size/dimensions
ls_clientdata-net_weight = t_data-ntgew. "Net Weight
ls_clientdatax-size_dim = 'X'.
ls_clientdatax-net_weight = 'X'.
select single meins,gewei
into @data(ls_mara)
from mara
where matnr = @iv_matnr.
lt_unitsofmeasure-alt_unit = ls_mara-meins.
lt_unitsofmeasure-gross_wt = t_data-brgew. "Gross Weight
append lt_unitsofmeasure.
lt_unitsofmeasurex-alt_unit = ls_mara-meins.
lt_unitsofmeasurex-gross_wt = 'X'.
append lt_unitsofmeasurex.
ls_warehousenumberdata-whse_no = t_data-lgnum. "Warehouse Number / Warehouse Complex
ls_warehousenumberdata-placement = t_data-ltkze. "Storage type indicator for stock placement
ls_warehousenumberdata-withdrawal = t_data-ltkza. "Storage type indicator for stock removal
ls_warehousenumberdatax-whse_no = t_data-lgnum.
ls_warehousenumberdatax-placement = 'X'.
ls_warehousenumberdatax-withdrawal = 'X'.
call function 'BAPI_MATERIAL_SAVEDATA'
exporting
headdata = ls_headdata
clientdata = ls_clientdata
clientdatax = ls_clientdatax
warehousenumberdata = ls_warehousenumberdata
warehousenumberdatax = ls_warehousenumberdatax
importing
return = ls_return
tables
unitsofmeasure = lt_unitsofmeasure
unitsofmeasurex = lt_unitsofmeasurex
returnmessages = lt_returnmessages.
if ls_return-type = 'A' or ls_return-type = 'E' or ls_return-type = 'X'.
call function 'BAPI_TRANSACTION_ROLLBACK'.
loop at lt_returnmessages where type ca 'AEX'.
rtype = 'E'.
message id lt_returnmessages-id type lt_returnmessages-type number lt_returnmessages-number
with lt_returnmessages-message_v1 lt_returnmessages-message_v2
lt_returnmessages-message_v3 lt_returnmessages-message_v4
into data(lv_msg).
rtmsg = rtmsg && lv_msg && ';'.
endloop.
else.
rtype = 'S'.
rtmsg = 'success'.
endif.
zfmparavalsave2 'R'.
endfunction.