BAPI_GOODSMVT_CREATE 工单发料 261 实例

DATA LS_HEADER         TYPE BAPI2017_GM_HEAD_01.
DATA LS_CODE           TYPE BAPI2017_GM_CODE.
DATA LV_REDOC          TYPE BAPI2017_GM_HEAD_RET-MAT_DOC.     "返回的凭证号码
DATA LT_ITEM           TYPE STANDARD TABLE OF BAPI2017_GM_ITEM_CREATE.
DATA LS_ITEM           TYPE BAPI2017_GM_ITEM_CREATE.
DATA LT_RETURN         TYPE STANDARD TABLE OF BAPIRET2.
DATA LS_RETURN         TYPE BAPIRET2.


"抬头数据
LS_HEADER-PSTNG_DATE = SY-DATUM.
LS_HEADER-DOC_DATE = SY-DATUM.

"分配事务代码--过账码
LS_CODE-GM_CODE = '03'.

"ITEM
CLEAR GS_ALV.
LOOP AT GT_ALV INTO GS_ALV WHERE SEL = 'X'.
  LS_ITEM-MATERIAL = GS_ALV-MATNR1.             "料号
  LS_ITEM-PLANT = GS_ALV-WERKS.                 "工厂
  LS_ITEM-STGE_LOC = GS_ALV-LGORT.              "库存地点
  LS_ITEM-MOVE_TYPE = '261'.                    "移动类型(库存管理)
  LS_ITEM-ORDERID =   GS_ALV-AUFNR.             "工单
  LS_ITEM-RESERV_NO = GS_ALV-RSNUM.             "预留/相关需求的编号 RESB~RSNUM
  LS_ITEM-RES_ITEM = GS_ALV-RSPOS.              "预留/相关需求的项目编号 RESB~RSPOS
  LS_ITEM-ENTRY_QNT = GS_ALV-ZCMNG.           "发料数量
  LS_ITEM-ENTRY_UOM = GS_ALV-MEINS.             "计量单位

  APPEND LS_ITEM TO LT_ITEM.
ENDLOOP.

"BAPI
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
  GOODSMVT_HEADER  = LS_HEADER
  GOODSMVT_CODE    = LS_CODE
IMPORTING
  MATERIALDOCUMENT = LV_REDOC
TABLES
  GOODSMVT_ITEM    = LT_ITEM
  RETURN           = LT_RETURN.

IF ( LINE_EXISTS( LT_RETURN[ TYPE = 'A' ] ) ) OR ( LINE_EXISTS( LT_RETURN[ TYPE = 'E' ] ) ).
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

  DATA: LT_MSG_TAB TYPE ESP1_MESSAGE_TAB_TYPE,
        WA_MSG_TAB LIKE LINE OF LT_MSG_TAB.

  LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = 'A' OR TYPE = 'E'.
    WA_MSG_TAB-MSGID  = LS_RETURN-ID.
    WA_MSG_TAB-MSGTY  = LS_RETURN-TYPE.
    WA_MSG_TAB-MSGNO  = LS_RETURN-NUMBER.
    WA_MSG_TAB-MSGV1  = LS_RETURN-MESSAGE_V1.
    WA_MSG_TAB-MSGV2  = LS_RETURN-MESSAGE_V2.
    WA_MSG_TAB-MSGV3  = LS_RETURN-MESSAGE_V3.
    WA_MSG_TAB-MSGV4  = LS_RETURN-MESSAGE_V4.
    WA_MSG_TAB-LINENO = LS_RETURN-ROW.
    APPEND WA_MSG_TAB TO LT_MSG_TAB.
  ENDLOOP.

  CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
  TABLES
    I_MESSAGE_TAB = LT_MSG_TAB.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  EXPORTING
    WAIT = 'X'.
ENDIF.
上一篇:CF1479D Odd Mineral Resource 题解


下一篇:[NOIP2017 提高组] 列队 题解