采购订单收货BAPI

1. Intruduction

The bapi is used by migo.

2.code example

 DATA: GT_GOODSMVT_HEADER  LIKE BAPI2017_GM_HEAD_01,
       GT_GOODSMVT_ITEM    LIKE BAPI2017_GM_ITEM_CREATE OCCURS 0 WITH HEADER LINE,
       GT_RETURN           LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
  DATA: GT_GOODSMVT_HEADRET LIKE BAPI2017_GM_HEAD_RET,
        GOODSMVT_CODE_TMP   TYPE BAPI2017_GM_CODE.
  DATA: L_RETURN            LIKE BAPIRET2.
"根据收货单,做MIGO收货
  "抬头数据
  GT_GOODSMVT_HEADER-PSTNG_DATE = SY-DATUM. "过账日期
  GT_GOODSMVT_HEADER-REF_DOC_NO = L_DELIVERY.
  GT_GOODSMVT_HEADER-PSTNG_DATE = SY-DATUM.
  GT_GOODSMVT_HEADER-DOC_DATE = SY-DATUM.
  GT_GOODSMVT_HEADER-PR_UNAME = SY-UNAME.
  GT_GOODSMVT_HEADER-HEADER_TXT = 'CWMS传SAP采购订单收货记账'.
  GOODSMVT_CODE_TMP = '01'.
  "行项目数据
  loop at itb_cwms_in INTO gw_cwms_in.
    GT_GOODSMVT_ITEM-MATERIAL  = gw_cwms_in-MATNR.
    GT_GOODSMVT_ITEM-PLANT     = gw_cwms_in-WERKS.
    GT_GOODSMVT_ITEM-STGE_LOC  = gw_cwms_in-LGORT.
    GT_GOODSMVT_ITEM-MOVE_TYPE = '101' .
    GT_GOODSMVT_ITEM-ENTRY_QNT = gw_cwms_in-MENGE .

    GT_GOODSMVT_ITEM-MVT_IND = 'B'.

    SELECT * INTO CORRESPONDING FIELDS OF  TABLE gt_ztcwms016
    FROM ztcwms016
    WHERE
           ZEBELN = gw_cwms_in-ZSHDH
       AND VBELN = gw_cwms_in-VBELN.

    READ TABLE gt_ztcwms016 INTO gw_ztcwms016 WITH  KEY  VBELN = gw_cwms_in-VBELN.

    "采购订单
    GT_GOODSMVT_ITEM-PO_NUMBER = gw_ztcwms016-EBELN.    "采购凭证号
    GT_GOODSMVT_ITEM-PO_ITEM   = gw_ztcwms016-EBELP.    "采购凭证行号
    APPEND GT_GOODSMVT_ITEM.
  ENDLOOP.
  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      GOODSMVT_HEADER  = GT_GOODSMVT_HEADER
      GOODSMVT_CODE    = GOODSMVT_CODE_TMP
    IMPORTING
      GOODSMVT_HEADRET = GT_GOODSMVT_HEADRET
    TABLES
      GOODSMVT_ITEM    = GT_GOODSMVT_ITEM
      RETURN           = GT_RETURN.

  IF GT_RETURN[] IS INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.

    MBLNR =  GT_GOODSMVT_HEADRET(10).
    CONCATENATE gw_cwms_in-ZSHDH 'DN收货成功。' INTO REMSG.
    "更新日志
    CLEAR:gw_ztcwms010.
    LOOP at gt_ztcwms010 INTO gw_ztcwms010.
      gw_ztcwms010-VBELN1 = GT_GOODSMVT_HEADRET(10). "过账凭证
      gw_ztcwms010-REID  = 'S'.
      gw_ztcwms010-REMSG = 'DN收货成功' .
      MODIFY gt_ztcwms010 FROM gw_ztcwms010.
      CLEAR:gw_ztcwms010.
    ENDLOOP.
    MODIFY ztcwms018 FROM TABLE gt_ztcwms010.
    COMMIT WORK AND WAIT.

  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    CONCATENATE gw_cwms_in-ZSHDH 'DN收货失败!' INTO REMSG.
    "更新日志
    CLEAR:gw_ztcwms010.
    LOOP at gt_ztcwms010 INTO gw_ztcwms010.
      gw_ztcwms010-VBELN1 = GT_GOODSMVT_HEADRET(10). "过账凭证
      gw_ztcwms010-REID  = 'E'.
      gw_ztcwms010-REMSG = 'DN收货失败' .
      MODIFY gt_ztcwms010 FROM gw_ztcwms010.
      CLEAR:gw_ztcwms010.
    ENDLOOP.
    MODIFY ztcwms018 FROM TABLE gt_ztcwms010[].
    COMMIT WORK AND WAIT.

    EXIT.
  ENDIF.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值