我想以编程方式更改以下特殊情况的材料的移动/平均价格:
VPRSV = 'S' (Standard price)
MLMAA = 'X' (Material Ledger activated)
MLAST = '3' (Material Price Determination = '3' (Single-/Multilevel))
period = current
当当前期间已存在给定材料的材料文档时,它必须工作。我需要的所有其他特殊情况都已解决。
我正在搜索功能模块,相当于使用MM02
更改移动平均价格,而不是MR21
。
也许BAPI_MATVAL_PRICE_CHANGE
正是我正在寻找的?
令我困惑的是,我找不到一个参数来确定我想要改变移动平均价格而不是标准价格。我错过了一个参数吗?如果没有,它会改变标准价格还是移动平均价格?
我不确定此功能模块是否等同于MM02
或MR21
。
答案 0 :(得分:1)
您应该使用BAPI_MATERIAL_SAVEDATA
来执行此操作。为了成功更新平均价格,应该填写几个强制性结构:
HEADDATA-MATERIAL = P_MATNR. "material number
HEADDATA-ACCOUNT_VIEW = 'X'.
VALDATA-VAL_AREA = P_BWKEY. "valuation area
VALDATA-VAL_TYPE = P_BWTAR. "valuation type
VALDATA-MOVING_PR = P_STPRS. "new value of moving price
VALDATAX-VAL_AREA = P_BWKEY. "valuation area for tax accounting
VALDATAX-VAL_TYPE = P_BWTAR. "valuation type for tax accounting
VALDATAX-MOVING_PR = 'X'. "update indicator
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = HEADDATA
VALUATIONDATA = VALDATA
VALUATIONDATAX = VALDATAX
IMPORTING
RETURN = BAPI_RETURN
TABLES
MATERIALDESCRIPTION = INT_MAKT
.