ABAP -- BAPI_GOODSMVT_CREATE -- MIGO生产订单投料接收过账

*      BAPI_GOODSMVT_CREATE
    DATA lt_item   TYPE STANDARD TABLE OF bapi2017_gm_item_create.
    DATA lt_return TYPE STANDARD TABLE OF bapiret2.
    CLEAR : lt_item , lt_return.

*    DATA(ls_code) = VALUE bapi2017_gm_code( GM_CODE = '02' ).
    DATA(ls_code) = COND bapi2017_gm_code( WHEN iv_bwart = '261' AND iv_zjhw = '' THEN '02'
                                           WHEN iv_bwart = '261' AND iv_zjhw = 'X' THEN '05'
                                           WHEN iv_bwart = '101' THEN '03' ).

    DATA(ls_header) = VALUE bapi2017_gm_head_01( doc_date   = iv_cpudt_mkpf " 凭证中的凭证日期
                                                 pstng_date = iv_budat_mkpf " 凭证中的过帐日期
                                                 pr_uname   = sy-uname ).   " 用户名
    lt_item = VALUE #( ( orderid = iv_aufnr
                         material_long = iv_matnr
                         plant      = iv_werks
                         stge_loc   = iv_lgort
                         batch = iv_charg
                         "101-按生产订单计划外过账,不考虑预留;261-按生产订单过账,考虑订单预留
                         move_type  = iv_bwart"移动类型(库存管理)
                         entry_qnt  = iv_menge
*                         mvt_ind = 'F'
                          ) ).

    CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
      EXPORTING
        goodsmvt_header  = ls_header
        goodsmvt_code    = ls_code "T158G
      IMPORTING
        materialdocument = ev_mblnr
      TABLES
        goodsmvt_item    = lt_item
        return           = lt_return.

该案例涉及三种情况:

1. 

2.

3. 

为了区分开三种情况,需要确定goodsmvt_code。在网上查找相关资料如下:

  • T158G MMIM: BAPI 货物移动的可能代码

01 MB01 按采购订单的货物移动

02 MB31 按生产订单的货物移动

03 MB1A 货物提取(工单退料)

04 MB1B 转移过帐

05 MB1C 其他收货

06 MB11 货物移动

07 MB04 "物料供应"消耗的事后调整

  • T158B 检查表: 业务处理码的移动类型

 但是相关T-CODE已经弃用,只能根据描述确定goodsmvt_code。暂时不清楚有没有其它方法可以确定不同移动类型的goodsmvt_code。

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、付费专栏及课程。

余额充值