以编程方式更改物料主数据(MM02)的平均价格

时间:2016-08-15 13:58:40

标签: sap abap bapi function-module

我想以编程方式更改以下特殊情况的材料的移动/平均价格:

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正是我正在寻找的?

令我困惑的是,我找不到一个参数来确定我想要改变移动平均价格而不是标准价格。我错过了一个参数吗?如果没有,它会改变标准价格还是移动平均价格?

我不确定此功能模块是否等同于MM02MR21

1 个答案:

答案 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
.