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.