1、业务背景
一般情况下,在设计产品时,明确了物料的计量单位,并在维护物料主数据时,维护完整单位数据。
但也有例外情况,例如当设计产品时,不明确未来的打包方式,不明确要维护哪些种计量单位,只有当生产完成之后,再确定通过包还是箱等方式包装产品,并将新的计量单位同步给外围系统方便运输。因此就需要在生产完成之后,再修改对应的物料主数据的计量单位。
前台操作,事务代码MM02,维护物料的量纲和附加数据里面的计量单位
附加数据
2、代码参考
调用BAPI:BAPI_MATERIAL_SAVEDATA,增删改计量单位
"--------------------@斌将军--------------------
DATA:ls_head TYPE bapimathead,
ls_mara TYPE bapi_mara,
ls_marax TYPE bapi_marax,
lt_marm TYPE TABLE OF bapi_marm,
ls_marm TYPE bapi_marm,
lt_marmx TYPE TABLE OF bapi_marmx,
ls_marmx TYPE bapi_marmx,
ls_return TYPE bapiret2.
ls_head-material = '000000000002000076'. "SAP物料编码
"修改量纲
ls_mara-net_weight = 1."净重
ls_marax-net_weight = 'X'."净重
CLEAR:ls_marm.
ls_marm-alt_unit = 'M'."基本单位
ls_marm-gross_wt = 3."毛重
ls_marm-unit_of_wt = 'KG'."重量单位
ls_marm-volume = 1."业务量
ls_marm-volumeunit = 'M3'."体积单位
APPEND ls_marm TO lt_marm.
CLEAR:ls_marmx.
ls_marmx-alt_unit = 'M'."基本单位
ls_marmx-gross_wt = 'X'."毛重
ls_marmx-unit_of_wt = 'X'."重量单位
ls_marmx-volume = 'X'."业务量
ls_marmx-volumeunit = 'X'."体积单位
APPEND ls_marmx TO lt_marmx.
"删除附加数据计量单位
CLEAR:ls_marm.
ls_marm-alt_unit = 'EA'."基本单位
ls_marm-del_flag = 'X'."删除
APPEND ls_marm TO lt_marm.
"维护多个单位
CLEAR:ls_marm.
ls_marm-alt_unit = 'EA'."基本单位
ls_marm-numerator = 23."分子
ls_marm-denominatr = 10."分母
APPEND ls_marm TO lt_marm.
CLEAR:ls_marmx.
ls_marmx-alt_unit = 'EA'."基本单位
ls_marmx-numerator = 'X'."分子
ls_marmx-denominatr = 'X'."分母
APPEND ls_marmx TO lt_marmx.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = ls_head
clientdata = ls_mara
clientdatax = ls_marax
IMPORTING
return = ls_return
TABLES
unitsofmeasure = lt_marm
unitsofmeasurex = lt_marmx.
IF ls_return-type = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
MESSAGE ls_return-message TYPE 'S' DISPLAY LIKE 'E'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
MESSAGE '成功' TYPE 'S'.
ENDIF.
"--------------------@斌将军--------------------
定期更文,欢迎关注