美文网首页SAP收藏文章技术文SAP
SAP BAPI 批量修改物料主数据增强字段

SAP BAPI 批量修改物料主数据增强字段

作者: Mmm_余安 | 来源:发表于2018-12-25 19:45 被阅读80次

    通过屏幕增强,我在MM01中增强两个字段


    image.png
    • 数据定义
    * BAPI数据声明
    DATA: CLIDAINP  LIKE BAPI_MARA_GA, "客户端层次物料数据
          CLIDAOUT  LIKE  BAPI_MARA,    "客户端层次物料数据
          CLIDAOUTX LIKE  BAPI_MARAX,  "BAPI_MARA 的复选框结构
          HEADDATA  LIKE  BAPIMATHEAD,  "带有控制信息的表头段
          RETURN    LIKE  BAPIRET2,     "返回参数
          RETURNMES LIKE BAPI_MATRETURN2 OCCURS 0 WITH HEADER LINE.
    DATA:LT_EXTENSION  TYPE STANDARD TABLE OF BAPIPAREX , "参考结构
         LS_EXTENSION  TYPE BAPIPAREX,
         LT_EXTENSIONX TYPE STANDARD TABLE OF BAPIPAREXX , "参考结构
         LS_EXTENSIONX TYPE BAPIPAREXX.
    DATA:WA_ZEXTEN  LIKE BAPI_TE_MARA,
         WA_ZEXTENX LIKE BAPI_TE_MARAX.
    
    • 读取物料数据
          CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
            EXPORTING
              MATERIAL   = GS_TAB-MATNR
            IMPORTING
              CLIENTDATA = CLIDAINP
            TABLES
              RETURN     = RETURNMES.
          IF SY-SUBRC EQ 0.
            CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
              EXPORTING
                WAIT = 'X'.
          ENDIF.
    

    BAPI_MATERIAL_GET_ALL 这个FUNCTION可以取出该物料下的基础数据

    • 抬头数据 ,物料和视图维护
          HEADDATA-MATERIAL    = GS_TAB-MATNR.
          HEADDATA-BASIC_VIEW  = 'X'.
    
          WA_ZEXTEN-MATERIAL    = GS_TAB-MATNR.
          "物料是必须要给的,不然报S类型的消息,但是不更新MARA表
          WA_ZEXTEN-ZJPAUDIT = GS_TAB-JPAUDIT.
          "要更新的字段
          LS_EXTENSION-STRUCTURE = 'BAPI_TE_MARA'.
         "扩展结构是系统标准的(敲重点)
          LS_EXTENSION-VALUEPART1 = WA_ZEXTEN.
          APPEND LS_EXTENSION TO LT_EXTENSION.
          CLEAR LS_EXTENSION.
    
          *给更新字段打上啊X标识
         WA_ZEXTENX-MATERIAL    = GS_TAB-MATNR.
          WA_ZEXTENX-ZJPAUDIT = 'X'.
          LS_EXTENSIONX-STRUCTURE = 'BAPI_TE_MARAX'.
          LS_EXTENSIONX-VALUEPART1 = WA_ZEXTENX.
          APPEND LS_EXTENSIONX TO LT_EXTENSIONX.
          CLEAR LS_EXTENSIONX.
    

    附加结构参考


    image.png image.png

    自己往标准结构,表里面插入数据,一般通过附加结构,新建一个结构插入,插入的结构不可以提前建好引用,我的理解是你通过点击结构的附加结构按钮,建立的会出现某种勾稽关系吧。

    • CallBAPI
          CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
            EXPORTING
              HEADDATA       = HEADDATA
              CLIENTDATA     = CLIDAOUT
              CLIENTDATAX    = CLIDAOUTX
            IMPORTING
              RETURN         = RETURN
            TABLES
              RETURNMESSAGES = RETURNMES
              EXTENSIONIN    = LT_EXTENSION "敲重点
              EXTENSIONINX   = LT_EXTENSIONX."敲重点
          IF RETURN-TYPE = 'E'.
            GS_TAB-TYPE = 'E'.
            GS_TAB-MESS = RETURN-MESSAGE.
            ROLLBACK WORK.
          ELSE.
            GS_TAB-MESS = TEXT-011.
            GS_TAB-TYPE = 'S'.
            CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
              EXPORTING
                WAIT = 'X'.
          ENDIF.
          MODIFY GT_TAB FROM GS_TAB.
          CLEAR GS_TAB.
          MESSAGE TEXT-011 TYPE 'S'.
        ELSE.
          GS_TAB-TYPE = 'E'.
          GS_TAB-MESS = TEXT-012 .
          MODIFY GT_TAB FROM GS_TAB.
          CLEAR GS_TAB.
        ENDIF.
    

    先确定自己的前台可以跑通,在测试bapi

    相关文章

      网友评论

        本文标题:SAP BAPI 批量修改物料主数据增强字段

        本文链接:https://www.haomeiwen.com/subject/allqlqtx.html