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

通过屏幕增强,我在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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,088评论 2 89
  • 业务背景介绍 UF公司其产成品会根据客户需求进行细节上零件变更,每次都需新增物料主数据以及搭建新的BOM和对应的工...
    图逗阅读 11,593评论 1 5
  • 4原则 原则1、聚焦最重要目标 从根本上来说,一个人想做的约到,他最终能完成的越少。想到在《聚焦,决定你企业的未来...
    heliee阅读 434评论 0 1
  • 今天不忙 晚上来辆别克 订球笼套 换两个 我们分工明确 没耽误多少时间 换完试完车 没问题 客户今天晚上要 ...
    不够穷没有野心阅读 153评论 0 0
  • 我跟鹅是高中同学,算是闺蜜吧。 刚上大学那会儿,微信还没普及,我们每周都给彼此打电话,聊聊近况,有时候会眉飞色舞地...
    卷毛张Z阅读 550评论 0 1