维护物料主数据

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.

 

 

猜你喜欢

转载自blog.csdn.net/cylcylcylcylwo/article/details/114078035