BAPI_MATERIAL_SAVEREPLICA扩展字段注意

16 篇文章 1 订阅

     BAPI_MATERIAL_SAVEREPLICA中需要对物料主数据比如MARA的附加结构进行维护时,需要使用BAPI的扩展结构。经过调试BAPI发现FORM extension_preprocess FORM process_extension都是处理扩展字段,但FORM extension_preprocess只处理扩展参数的 valuepart1部分,而 FORM process_extension 才会处理扩展字段的所有部分。

在包含文件L1001MASSUEBF01中 FORM extension_preprocess 处理如下:

在包含文件L1001MASSUEBF01中 FORM process_extension 处理如下:MOVE it_p_extensionin+c_length TO wa_bapi_te_e1mara 或MOVE it_p_extensionin+c_length TO wa_bapi_te_e1mara2才是处理扩展字段的所有部分。

传入的结构名有两个

cust_mara  LIKE t133d-routn VALUE 'BAPI_TE_E1MARA',

cust_mara2 LIKE t133d-routn VALUE 'BAPI_TE_E1MARA2'

BAPI_TE_E1MARA 的字段MATERIAL长度只有18位,适合SAP ECC, BAPI_TE_E1MARA2 的字段MATERIAL长度40位,适合SAP S4

表it_p_extensionin的结构如下图:

      结构wa_bapi_te_e1mara 或 wa_bapi_te_e1mara2 如下图。其中结构ZABAPI_TE_E1MARA2中的字段是需要给物料主数据表MARA中附加的相关字段,需要开发人员手动添加,注意:ZABAPI_TE_E1MARA2中字段类型都要为字符型

 

*处理扩展字段
  DATA:begin of ls_exmara.
      data matnr type mara-matnr.
      include STRUCTURE zabapi_te_e1mara2.
  data end of ls_exmara.

  DATA:begin of ls_exmarax.
      data matnr type mara-matnr.
      include STRUCTURE zabapi_te_e1mara2x.
  data end of ls_exmarax.

  DATA: l_valuepart(960),
        l_valuepartx(960).
  data:lt_extensionin like STANDARD TABLE OF bapie1parex WITH HEADER LINE,
       lt_extensioninx like STANDARD TABLE OF bapie1parexx WITH HEADER LINE.

  MOVE-CORRESPONDING zsmara TO ls_exmara.
  l_valuepart = ls_exmara.

  lt_extensionin-material_long  = zsmara-matnr.
  lt_extensionin-structure = 'BAPI_TE_E1MARA2'.
  lt_extensionin-valuepart1 = l_valuepart(240).
  lt_extensionin-valuepart2 = l_valuepart+240(480).
  APPEND lt_extensionin.

  ls_exmarax-matnr = zsmara-matnr.
  ls_exmarax-BRGEW = 'X'.
  ls_exmarax-VOLEH = 'X'.
  ls_exmarax-VOLUM = 'X'.
  ls_exmarax-ZZCPLB = 'X'.
  ls_exmarax-ZZCC = 'X'.
  ls_exmarax-ZZSW = 'X'.
  ls_exmarax-ZZGL = 'X'.
  ls_exmarax-ZZZDKH = 'X'.
  ls_exmarax-ZZCX = 'X'.
  ls_exmarax-ZZJX = 'X'.
  ls_exmarax-ZZHGBM = 'X'.
  ls_exmarax-ZZSQR = 'X'.
  ls_exmarax-ZZSQDAT = 'X'.
  ls_exmarax-ZZGLGX = 'X'.
  ls_exmarax-ZZWLCR = 'X'.
  ls_exmarax-ZZBQTY = 'X'.
  ls_exmarax-ZZBZGG = 'X'.
  ls_exmarax-ZZPRD = 'X'.
  ls_exmarax-ZZAUFNR = 'X'.
  ls_exmarax-ZZOBNAME = 'X'.

  l_valuepartx = ls_exmarax.
  lt_extensioninx-material_long  = zsmara-matnr.
  lt_extensioninx-structure = 'BAPI_TE_E1MARA2X'.
  lt_extensioninx-valuepart1 = l_valuepartx(240).
  lt_extensioninx-valuepart2 = l_valuepartx+240(480).
  APPEND lt_extensioninx.

  CALL FUNCTION 'BAPI_MATERIAL_SAVEREPLICA'
    EXPORTING
      noappllog           = ''
      nochangedoc         = ''
      testrun             = ''
      inpfldcheck         = ''
*     FLAG_CAD_CALL       = ' '
*     NO_ROLLBACK_WORK    = ' '
*     FLAG_ONLINE         = ' '
    IMPORTING
      return              = ls_return
    TABLES
      headdata            = it_headdata
      clientdata          = lt_clientdata
      clientdatax         = lt_clientdatax
      plantdata           = lt_plantdata
      plantdatax          = lt_plantdatax
      materialdescription = lt_bapimakt
      extensionin         =  lt_extensionin    "扩展字段
      extensioninx        =  lt_extensioninx
      materiallongtext    = lt_mltx
      returnmessages      = lt_return.

注:附加结构中的字段必须分配字段组,才能在MARA中更新成功!这是在程序 LMGMUF02的 FORM ABMISCHEN_TABELLE中的751行控制.

字段组的分配保存在透明表T130F中.配置如下:

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值