ABAP MARA 字段增强

参考链接:Solved: BAPI_MATERIAL_SAVEDATA extensionin DEC type dump - SAP Community

1.创建构造 

2.创建BADI T-code:SE18

创建好后,在class里边实装代码

  METHOD IF_EX_STNDRDMATERIAL_SAVE_DATA~MAP_EXTENSIONIN.
 
 
    DATA: LS_EXTENSIONIN       LIKE LINE OF EXTENSIONIN.
    DATA: LS_EXTENSIONINX      LIKE LINE OF EXTENSIONINX.
    DATA: LS_MARA_UEB          LIKE LINE OF MARA_UEB.
    DATA: LS_RES_FIELS         LIKE LINE OF RES_FIELDS.
 
    FIELD-SYMBOLS: <FS_MARA_UEB>   LIKE LINE OF MARA_UEB.
 
    DATA: YYYTEST TYPE YYYTEST.
 
    LOOP AT EXTENSIONIN INTO LS_EXTENSIONIN.
 
      CASE LS_EXTENSIONIN-STRUCTURE.
        WHEN 'YYYTEST'.
 
          YYYTEST-ZZNETPR = LS_EXTENSIONIN-VALUEPART1+0(18).
          YYYTEST-ZZCHAR  = LS_EXTENSIONIN-VALUEPART1+18(10).
 
*          ZSMATNR_CONFIGURABLE-KZKFG = LS_EXTENSIONIN-VALUEPART1+19(1).   "
**
          LOOP AT MARA_UEB ASSIGNING <FS_MARA_UEB>." WHERE MATNR = ZSMATNR_CONFIGURABLE-MATNR.
            <FS_MARA_UEB>-ZZNETPR =  LS_EXTENSIONIN-VALUEPART1+0(18).
            <FS_MARA_UEB>-ZZCHAR =  LS_EXTENSIONIN-VALUEPART1+18(10).
          ENDLOOP.
*
          IF YYYTEST-ZZNETPR IS NOT INITIAL.
*            READ TABLE MARA_UEB ASSIGNING <FS_MARA_UEB> WITH KEY MATNR = ZSMATNR_CONFIGURABLE-MATNR.
*            IF SY-SUBRC = 0.
              LS_RES_FIELS-FNAME = 'MARA-ZZNETPR'.
              LS_RES_FIELS-TRANC = <FS_MARA_UEB>-TRANC.
              LS_RES_FIELS-D_IND = <FS_MARA_UEB>-D_IND.
 
              APPEND LS_RES_FIELS TO RES_FIELDS.
              CLEAR LS_RES_FIELS.
 
              LS_RES_FIELS-FNAME = 'MARA-ZZCHAR'.
              LS_RES_FIELS-TRANC = <FS_MARA_UEB>-TRANC.
              LS_RES_FIELS-D_IND = <FS_MARA_UEB>-D_IND.
 
              APPEND LS_RES_FIELS TO RES_FIELDS.
*            ENDIF.
          ENDIF.
 
      ENDCASE.
    ENDLOOP.
 
  ENDMETHOD.

3.配置增强字段(没有这一步的话,存不进去值)

T-code:OMSR

路径:SPRO and open the activity "Logistics - General->Material Master->Field Selection->Assign Fields to Field Selection Groups"

最重要的是status的设置,不可为空

4.创建程序调用BAPI 编辑增强

DATA: T_EXTENSIONIN  TYPE TABLE OF BAPIPAREX  WITH HEADER LINE.
DATA: S_EXTENSIONIN  LIKE LINE OF T_EXTENSIONIN.
DATA: T_EXTENSIONINX TYPE TABLE OF BAPIPAREXX WITH HEADER LINE.
DATA: RETURN_T TYPE BAPIRET2.
DATA: S_EXTENSIONINX LIKE LINE OF T_EXTENSIONINX.
DATA: LS_MAIN TYPE YYYTEST.
DATA: HEADDATA TYPE BAPIMATHEAD.
DATA: CLIENTDATA          TYPE BAPI_MARA, "基本数据
      CLIENTDATAX         TYPE BAPI_MARAX,
      RETURNMESSAGES      TYPE TABLE OF BAPI_MATRETURN2,
      MATERIALDESCRIPTION TYPE TABLE OF BAPI_MAKT WITH HEADER LINE. "描述
 
CLEAR S_EXTENSIONIN.
CLEAR S_TE_MVKE.
 
HEADDATA-MATERIAL = '000012000000000064'.
HEADDATA-IND_SECTOR = '1'.
HEADDATA-MATL_TYPE = 'Z001'.
 
 
HEADDATA-BASIC_VIEW = 'X'.
 
CLIENTDATA-MATL_GROUP = '0001'. "品目group
CLIENTDATA-BASE_UOM = 'KG'.
CLIENTDATAX-BASE_UOM = 'X'.
CLIENTDATAX-MATL_GROUP = 'X'.
"品目テキスト
CLEAR MATERIALDESCRIPTION[].
*MATERIALDESCRIPTION-MATERIAL = '0704TEST01'. "品目text
MATERIALDESCRIPTION-LANGU_ISO = 'EN'.
MATERIALDESCRIPTION-MATL_DESC = 'LANGU_ISO'.
APPEND MATERIALDESCRIPTION.
S_EXTENSIONIN-STRUCTURE  = 'YYYTEST'.
LS_MAIN-ZZNETPR = '99.99'.
LS_MAIN-ZZCHAR = '1234567890'.
S_EXTENSIONIN-VALUEPART1+0(18) = LS_MAIN-ZZNETPR.
S_EXTENSIONIN-VALUEPART1+18(10) = LS_MAIN-ZZCHAR.
APPEND S_EXTENSIONIN TO T_EXTENSIONIN.
"enhancement field 2
S_EXTENSIONINX-STRUCTURE  = 'YYYTEST'.
*LS_MAIN-ZZNETPR = '9999.9999'.
S_EXTENSIONINX-VALUEPART1+0(1) = 'X'.
S_EXTENSIONINX-VALUEPART1+1(1) = 'X'.
 
APPEND S_EXTENSIONINX TO T_EXTENSIONINX.
 
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  EXPORTING
    HEADDATA            = HEADDATA
    CLIENTDATA          = CLIENTDATA
    CLIENTDATAX         = CLIENTDATAX
*   PLANTDATA           = PLANTDATA
*   PLANTDATAX          = PLANTDATAX
*   FORECASTPARAMETERS  = FORECASTPARAMETERS
*   FORECASTPARAMETERSX = FORECASTPARAMETERSX
*   PLANNINGDATA        = PLANNINGDATA
*   PLANNINGDATAX       = PLANNINGDATAX
*   STORAGELOCATIONDATA = STORAGELOCATIONDATA
*   STORAGELOCATIONDATAX = STORAGELOCATIONDATAX
*   VALUATIONDATA       = VALUATIONDATA
*   VALUATIONDATAX      = VALUATIONDATAX
*   WAREHOUSENUMBERDATA = WAREHOUSENUMBERDATA
*   WAREHOUSENUMBERDATAX = WAREHOUSENUMBERDATAX
*   SALESDATA           = SALESDATA
*   SALESDATAX          = SALESDATAX
*   STORAGETYPEDATA     = STORAGETYPEDATA
*   STORAGETYPEDATAX    = STORAGETYPEDATAX
    FLAG_ONLINE         = ' '
    FLAG_CAD_CALL       = ' '
    NO_DEQUEUE          = ' '
    NO_ROLLBACK_WORK    = ' '
  IMPORTING
    RETURN              = RETURN_T
  TABLES
    MATERIALDESCRIPTION = MATERIALDESCRIPTION
*   UNITSOFMEASURE      = UNITSOFMEASURE
*   UNITSOFMEASUREX     = UNITSOFMEASUREX
**   internationalartnos  = internationalartnos
*   MATERIALLONGTEXT    = MATERIALLONGTEXT
*   TAXCLASSIFICATIONS  = TAXCLASSIFICATIONS
    RETURNMESSAGES      = RETURNMESSAGES
*   prtdata             = prtdata
*   prtdatax            = prtdatax
    EXTENSIONIN         = T_EXTENSIONIN
    EXTENSIONINX        = T_EXTENSIONINX.
 
BREAK-POINT.
IF RETURN_T-TYPE EQ 'S'.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT = 'X'.
*  APPEND RETURN_T TO ET_RETURN.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
 
*  ET_RETURN[]  = RETURNMESSAGES[].
ENDIF.

完成!

MM01/MM02需要修改画面的增强请参考以下内容:
http://t.csdnimg.cn/Uo67Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值