ABAP 采购订单收货接口BAPI_GOODSMVT_CREATE

实现采购订单收货过账

注:采购订单退货(161),传入的移动类型也是101。


      LOOP AT TP_INPUT->REQDATA ASSIGNING FIELD-SYMBOL(<FS>).

*          明细行操作
           REFRESH IT_ITEM.
           CLEAR I_ITEM.
           LOOP AT <FS>->DETAILS ASSIGNING FIELD-SYMBOL(<FSITEM>).
             CLEAR:WK_ITEM.
             CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                EXPORTING
                  INPUT        = <FSITEM>->MATNR
               IMPORTING
                 OUTPUT        = <FSITEM>->MATNR.

             CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                EXPORTING
                  INPUT        = <FSITEM>->EBELN
               IMPORTING
                 OUTPUT        = <FSITEM>->EBELN .

             CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                EXPORTING
                  INPUT        = <FSITEM>->EBELP
               IMPORTING
                 OUTPUT        = <FSITEM>->EBELP.



             WK_ITEM-PO_NUMBER = <FSITEM>->EBELN. "PO订单
             WK_ITEM-PO_ITEM = <FSITEM>->EBELP. "行项目
             WK_ITEM-ITEM_TEXT = <FSITEM>->SGTXT. "项目文本
             WK_ITEM-PLANT = <FSITEM>->WERKS. "工厂
             WK_ITEM-VAL_SALES_ORD = <FSITEM>->KDAUF. "评估销售定单库存的销售订单号
             WK_ITEM-VAL_S_ORD_ITEM = <FSITEM>->KDPOS. "评估销售定单库存的销售订单行项目
             WK_ITEM-SALES_ORD = <FSITEM>->KDAUF. "销售订单
             WK_ITEM-S_ORD_ITEM = <FSITEM>->KDPOS. "销售订单行项目
             WK_ITEM-STGE_LOC = <FSITEM>->LGORT."存储位置
             WK_ITEM-BATCH = <FSITEM>->CHARG. "批次
             WK_ITEM-ENTRY_QNT = <FSITEM>->ERFMG. "数量
             WK_ITEM-ENTRY_UOM = <FSITEM>->ERFME. "采购单位
             WK_ITEM-MOVE_TYPE = <FSITEM>->BWART. "移动类型
             WK_ITEM-MVT_IND = 'B'. "移动标识  ’B‘为采购收货  ’F ' 生产收货

             WK_ITEM-MATERIAL = <FSITEM>->MATNR. "物料

* 凭证行的唯一标识
              IF <FSITEM>->BWART eq '543'.
* 上一行的识别码
                WK_ITEM-parent_id = l_parent_id.
                WK_ITEM-line_depth = '01'.
              ENDIF.
              WK_ITEM-line_id    = <FSITEM>->MESPOSNR.
              WK_ITEM-SPEC_STOCK = <FSITEM>->SOBKZ.
              l_parent_id        = <FSITEM>->MESPOSNR.


             APPEND WK_ITEM TO IT_ITEM.
*            输出数据结构设置
             CLEAR WK_OUTPUT.
             WK_OUTPUT-WERKS = <FSITEM>->WERKS.
             WK_OUTPUT-BUDAT = <FS>->BUDAT.
             WK_OUTPUT-MESMBLNR = <FS>->MESMBLNR.
             WK_OUTPUT-MESPOSNR = <FSITEM>->MESPOSNR.
             I_item = I_item + 1.
             WK_OUTPUT-POSNR = I_item.
             APPEND WK_OUTPUT TO IT_OUTPUT.


          ENDLOOP.
            CLEAR: WK_HEAD,WK_CODE.
            WK_HEAD-DOC_DATE = <FS>->BLDAT.  "凭证日期
            WK_HEAD-PSTNG_DATE = <FS>->BUDAT."过账日期
            WK_HEAD-PR_UNAME = SY-UNAME."创建用户
            WK_HEAD-HEADER_TXT = <FS>->BKTXT.
            WK_HEAD-REF_DOC_NO = <FS>->XBLNR.
            WK_CODE-GM_CODE = '01'.

            CLEAR V_MBLNR.
            CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
              EXPORTING
                GOODSMVT_HEADER               = WK_HEAD
                GOODSMVT_CODE                 = WK_CODE
              IMPORTING
                MATERIALDOCUMENT              = V_MBLNR
              TABLES
                GOODSMVT_ITEM                 = IT_ITEM
*                GOODSMVT_SERIALNUMBER         = IT_NUMB
                RETURN                        = IT_RETUN.

            CLEAR WK_RETUN.
            READ TABLE IT_RETUN INTO WK_RETUN WITH KEY TYPE = 'E'.
            IF SY-SUBRC = 0.
              CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
              O_CODE = 'E'.
              O_DESC = '过账失败!'.
              CONCATENATE O_DESC 'Reason: ' WK_RETUN-MESSAGE INTO O_DESC SEPARATED BY SPACE.
            ELSE.
              CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
              O_CODE = 'S'.
              O_DESC = '过账成功!'.
*             输出数据结果设置
              LOOP AT IT_OUTPUT INTO WK_OUTPUT WHERE MESMBLNR = <FS>->MESMBLNR.
                WK_OUTPUT-MBLNR = V_MBLNR.
                MODIFY IT_OUTPUT FROM WK_OUTPUT TRANSPORTING MBLNR.
              ENDLOOP.
             ENDIF.
        ENDLOOP.

在这里插入图片描述

GMCODE TCODE:
GM_Code 01: Goods receipt for purchase order
GM_Code 02: Goods receipt for production order
GM_Code 03: Goods issue
GM_Code 04: Transfer posting
GM_Code 05: Other goods receipts
GM_Code 06: Reversal of goods movements
GM_Code 07: Subsequent adjustment to a subcontract order

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值