bapi_goodsmvt_create-GR

BAPI_GOODSMVT_CREATE 使用方法

* GMCODE Table T158G - 01 - MB01 - Goods Receipts for Purchase Order
*                      02 - MB31 - Goods Receipts for Prod Order
*                      03 - MB1A - Goods Issue
*                      04 - MB1B - Transfer Posting
*                      05 - MB1C - Enter Other Goods Receipt
*                      06 - MB11
*
* Domain: KZBEW - Movement Indicator
*      Goods movement w/o reference
*  B - Goods movement for purchase order
*  F - Goods movement for production order
*  L - Goods movement for delivery note
*  K - Goods movement for kanban requirement (WM - internal only)
*  O - Subsequent adjustment of "material-provided" consumption
*  W - Subsequent adjustment of proportion/product unit material

实例1-(Z01MMR0901 批量创建物料凭证  ):

  DATA: LS_GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01,
        LS_GOODSMVT_CODE   TYPE BAPI2017_GM_CODE,
*        lv_materialdocument TYPE bapi2017_gm_head_ret-mat_doc,
        LV_MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR,
        LT_GOODSMVT_ITEM   TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
        LS_GOODSMVT_ITEM   TYPE BAPI2017_GM_ITEM_CREATE,
        LT_RETURN          TYPE TABLE OF BAPIRET2,
        LS_RETURN          TYPE BAPIRET2,
        LS_OUTPUT          TYPE TY_UPLOAD.
  DATA: LV_MATERIALDOCUMENT TYPE MBLNR,
        LV_MESSAGE          TYPE CHAR255.

*抬头部分给值:

  LS_GOODSMVT_HEADER-PSTNG_DATE = SY-DATUM.
  LS_GOODSMVT_HEADER-DOC_DATE = SY-DATUM.
  LS_GOODSMVT_HEADER-PR_UNAME = SY-UNAME.
  LS_GOODSMVT_HEADER-REF_DOC_NO = PS_OUTPUT-XBLNR.  "单号
  LS_GOODSMVT_HEADER-HEADER_TXT = PS_OUTPUT-BKTXT.  "备注
  LS_GOODSMVT_CODE = '03'.  "MB1A

*行项目部分给值(根据移动类型有差异):
  LOOP AT PT_OUTPUT INTO LS_OUTPUT .
    LS_GOODSMVT_ITEM-MATERIAL  = LS_OUTPUT-MATNR.
    LS_GOODSMVT_ITEM-PLANT     = LS_OUTPUT-WERKS.
    LS_GOODSMVT_ITEM-STGE_LOC  = LS_OUTPUT-LGORT.
    LS_GOODSMVT_ITEM-MOVE_TYPE = LS_OUTPUT-BWART.
    LS_GOODSMVT_ITEM-ENTRY_QNT = LS_OUTPUT-ERFMG.
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = LS_OUTPUT-ERFME
*       LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = LS_GOODSMVT_ITEM-ENTRY_UOM
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.
    IF SY-SUBRC <> 0.
* Implement suitable error handling here
    ENDIF.

*    ls_goodsmvt_item-entry_uom = ls_output-erfme.
    LS_GOODSMVT_ITEM-ORDERID   = LS_OUTPUT-AUFNR. "生产订单
    IF LS_OUTPUT-BWART = '262' OR LS_OUTPUT-BWART = 'Y62'. "部分冲销
      LS_GOODSMVT_ITEM-XSTOB     = 'X'.
    ENDIF.
    APPEND LS_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM.
  ENDLOOP.

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      GOODSMVT_HEADER  = LS_GOODSMVT_HEADER
      GOODSMVT_CODE    = LS_GOODSMVT_CODE
    IMPORTING
      MATERIALDOCUMENT = LV_MATERIALDOCUMENT
      MATDOCUMENTYEAR  = LV_MATDOCUMENTYEAR
    TABLES
      GOODSMVT_ITEM    = LT_GOODSMVT_ITEM[]
      RETURN           = LT_RETURN[].

  IF LV_MATERIALDOCUMENT IS INITIAL.
*    pv_flg = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    PS_OUTPUT-MSGTYPE = 'E'.
    PS_OUTPUT-LIGHT = '1'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
    LV_MESSAGE = TEXT-001.
    PS_OUTPUT-MSGTYPE = 'S'.
    PS_OUTPUT-LIGHT = '3'.
  ENDIF.

  LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = 'E' .
    CONCATENATE LV_MESSAGE
                LS_RETURN-MESSAGE
                LS_RETURN-MESSAGE_V1
                LS_RETURN-MESSAGE_V2
                LS_RETURN-MESSAGE_V3
                LS_RETURN-MESSAGE_V4
                INTO LV_MESSAGE.
  ENDLOOP.
  PS_OUTPUT-MBLNR = LV_MATERIALDOCUMENT.
  PS_OUTPUT-MJAHR = LV_MATDOCUMENTYEAR.
  PS_OUTPUT-MESG  = LV_MESSAGE.
原文地址:https://www.cnblogs.com/rainysblog/p/6575190.html