使用BAPI_GOODSMVT_CREATE向…

此BAPI的参数GMCODE 标识对应哪个Tcode的业务,如下:
* GMCODE Table T158G - 01 - MB01 - Goods Receipts for Purchase Order
02 - MB31 - Goods Receipts for Prod Order
03 - MB1A - Goods Issue
04 - MB1B - Transfer Posting
05 - MB1C - Enter Other Goods Receipt
06 – MB11
针对用户业务需求,我这里需要三种移动类型的物料凭证:1、向PM订单发货-计划性的(非限制使用库存,标准移动类型是261,我们用自定义的Z67);2、向PM订单发货-供应商寄售库存(标准移动类型是261,特殊库存标志K,我们用Z67/K);3、向PM订单发货-随机备件(使用移动类型Z73,从451copy过来的;随机备件是使用移动类型451收货的物料)

    CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
       EXPORTING
         GOODSMVT_HEADER             = GMHEAD ”抬头数据,记账日期、凭证日期、用户、抬头文本等。
         GOODSMVT_CODE               = GMCODE  ”Tcode对应的两位码
  TESTRUN                     = ' '
   IMPORTING
    GOODSMVT_HEADRET            = GOODSMVT_HEADRET
   MATERIALDOCUMENT            = MATERIALDOCUMENT ”货物移动凭证号
  MATDOCUMENTYEAR             =
       TABLES
         GOODSMVT_ITEM               = ITAB ”货物移动行项目
  GOODSMVT_SERIALNUMBER       =
         RETURN                      = RETURN  ” 返回消息
             .

1-向PM订单发货-计划性的和2-向PM订单发货-供应商寄售库存使用MB1A来完成,GMCODE 为 03,3-向PM订单发货-随机备件使用Tcode

MB1C完成,对应GMCODE 为 05.

不同类型的凭证对应的行项目需要的字段也是不同的,以下是这三种业务对应的行项目。
1、向PM订单发货-计划性的
      CLEAR ITAB.
      ITAB-MATERIAL =  WA_OUT-MATNR."物料号
      ITAB-PLANT =  S_IWERK-LOW.    "工厂
      ITAB-STGE_LOC = WA_OUT-LGORT. "库存地点
      ITAB-MOVE_TYPE = 'Z67'.        "移动类型
      ITAB-ENTRY_QNT = WA_OUT-F_LABST."非限制使用库存发料数量
      ITAB-ENTRY_UOM = WA_OUT-MEINS.  "单位
      ITAB-ORDERID = S_AUFNR.     "PM订单号
      ITAB-RESERV_NO = WA_OUT-RSNUM.  "订单对应的预留号
      ITAB-RES_ITEM = WA_OUT-RSPOS.  "预留项目号
      APPEND ITAB."非限制使用库存发料明细
这种发货方式采用预留号,是计划性的,除了记账货物移动凭证外,能够更新PM订单中的已提货数量栏位,也可以将ITAB-WITHDRAWN = 'X',该预定的最后发货,将最后发货的标记栏位打勾,下面这种方式是非计划的,也能发货到PM订单,只是记录物料凭证,不更新PM订单中的已提货数量栏位,
      CLEAR ITAB.
      ITAB-MATERIAL =  WA_OUT-MATNR."物料号
      ITAB-PLANT =  S_IWERK-LOW.    "工厂
      ITAB-STGE_LOC = WA_OUT-LGORT. "库存地点
      ITAB-MOVE_TYPE = 'Z67'.        "移动类型
      ITAB-ENTRY_QNT = WA_OUT-F_LABST."非限制使用库存发料数量
      ITAB-ENTRY_UOM = WA_OUT-MEINS.  "单位
      ITAB-ORDERID = S_AUFNR.     "PM订单号
      APPEND ITAB."非限制使用库存发料明细
2、向PM订单发货-供应商寄售库存,这种业务对应的物料凭证行项目表为:
      CLEAR ITAB.
      ITAB-MATERIAL =  WA_OUT-MATNR."物料号
      ITAB-PLANT =  S_IWERK-LOW.    "工厂
      ITAB-STGE_LOC = WA_OUT-LGORT. "库存地点
      ITAB-MOVE_TYPE = 'Z67'.        "移动类型
      ITAB-SPEC_STOCK = 'K'.         "特殊库存标识
      ITAB-VENDOR = WA_OUT-LIFNR.    "供应商
      ITAB-ENTRY_QNT = WA_OUT-F_SLABS."寄售库存发料数量
      ITAB-ENTRY_UOM = WA_OUT-MEINS.  "单位
      ITAB-ORDERID = S_AUFNR-LOW.     "订单
      APPEND ITAB67."寄售库存发料明细
3、向PM订单发货-随机备件,这种业务对应的物料凭证行项目表为
      CLEAR ITAB.
      ITAB-MATERIAL =  WA_OUT-MATNR."物料号
      ITAB-PLANT =  S_IWERK-LOW.    "工厂
      ITAB-STGE_LOC = WA_OUT-LGORT. "库存地点
      ITAB-MOVE_TYPE = 'Z73'.        "移动类型
      ITAB-VENDOR = WA_OUT-LIFNR.    "供应商
      ITAB-ENTRY_QNT = WA_OUT-F_RETME."随机备件发料数量
      ITAB-ENTRY_UOM = WA_OUT-MEINS.  "单位
      ITAB-ORDERID = S_AUFNR-LOW.     "订单
      APPEND ITAB73."随机备件发料明细
执行BAPI,判断返回消息RETURN,进行commit或rollback,如下:
LOOP AT RETURN.
    IF RETURN-TYPE = 'E'.
      FLAG = 'NO'.
    ENDIF.
  ENDLOOP.
  IF FLAG = 'OK'.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
         EXPORTING
             WAIT          = 'X'
      IMPORTING
          RETURN        =
              .
  ELSEIF FLAG = 'NO'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
            IMPORTING
              RETURN        =
              .
  ENDIF.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BAPI_GOODSMVT_CREATE是一个用于生成物料凭证的BAPI。它有多个参数需要提供值,其中包括goodsmvt_header、goodsmvt_code和gt_good等。\[2\]在调用该BAPI时,需要将这些参数赋予相应的值。goodsmvt_header用于存储过账日期、操作者和抬头文本等抬头数据,goodsmvt_code用于指定使用的过账事务码。gt_good是一个重要的表,用于存储要进行货物移动的物料、数量等信息。调用BAPI后,可以通过返回参数goodsmvt_headret获取物料凭证编号和年份。\[2\] 以下是一个示例代码,展示了如何使用BAPI_GOODSMVT_CREATE进行物料凭证的生成: ```ABAP DATA: goodsmvt_header TYPE bapi2017_gm_head_01, goodsmvt_code TYPE bapi2017_gm_code, gt_good TYPE TABLE OF bapi2017_gm_item_create, gw_good TYPE bapi2017_gm_item_create, goodsmvt_headret TYPE bapi2017_gm_head_ret, return LIKE TABLE OF bapiret2 WITH HEADER LINE, materialdocument TYPE bapi2017_gm_head_ret-mat_doc, matdocumentyear TYPE bapi2017_gm_head_ret-doc_year, ev_msgty TYPE BAPI_MTYPE, ev_mestx TYPE BAPI_MSG. "设置好goodsmvt_header、goodsmvt_code和gt_good的值 CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code TABLES goodsmvt_item = gt_good IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear return = return. "处理返回的日志消息 LOOP AT return WHERE type = 'A' OR type = 'E'. ev_msgty = 'E'. ev_mestx = return-message. EXIT. ENDLOOP. ``` 以上是一个示例代码,展示了如何使用BAPI_GOODSMVT_CREATE进行物料凭证的生成。你可以根据自己的需求,设置相应的参数值,并根据返回的日志消息进行处理。\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [金色传说:SAP-BAPI-BAPI_GOODSMVT_CREATE创建物料凭证bapi的使用及参数值讲解](https://blog.csdn.net/weixin_43675474/article/details/122258115)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值