SAP_常用BAPI_货物移动案例(BAPI_GOODSMVT_CREATE)

BAPI_GOODSMVT_CREATE的功能是用于货物移动,其主要可以实现MB*事务代码的一些功能,其中该BAPI的参数GOODSMVT_CODE就控制了对应哪个事务代码的功能,下面给出该参数的值和对应的事务码:
01 MB01
02 MB31
03 MB1A
04 MB1B
05 MB1C
06 MB11
07 MB04
这些值存储在表T158G中

MKPF存的是物料凭证表头信息,MSEG存的是物料凭证行项目信息。

例子:

FUNCTION ybapi_goodsmvt_create.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(IS_GOODSMVT_HEADER) LIKE  BAPI2017_GM_HEAD_01 STRUCTURE
*"        BAPI2017_GM_HEAD_01
*"  EXPORTING
*"     VALUE(O_MBLNR) TYPE  MKPF-MBLNR
*"     VALUE(O_MJAHR) TYPE  MKPF-MJAHR
*"     VALUE(O_MSG) TYPE  STRING
*"  TABLES
*"      T_GOODSMVT_ITEM STRUCTURE  BAPI2017_GM_ITEM_CREATE
*"----------------------------------------------------------------------
  DATAlt_return TYPE TABLE OF bapiret2 WITH HEADER LINE.

  CLEARis_goodsmvt_header.
  REFRESHt_goodsmvt_item.

**--TEST
  "---header
  is_goodsmvt_header-pstng_date sy-datum.
  is_goodsmvt_header-doc_date sy-datum.
  is_goodsmvt_header-pr_uname sy-uname.
  is_goodsmvt_header-header_txt 'HEADER short text'.

  "---item
  t_goodsmvt_item-material '000000600000009999'.
  t_goodsmvt_item-plant '3000'.
  t_goodsmvt_item-stge_loc 'PK02'.
  t_goodsmvt_item-move_type '101'.
  t_goodsmvt_item-entry_qnt '9'.
  t_goodsmvt_item-entry_uom 'EA'.
  t_goodsmvt_item-po_number '4500000097'.
  t_goodsmvt_item-po_item '00010'.
  t_goodsmvt_item-mvt_ind 'B'.
  t_goodsmvt_item-move_mat '3000000098'.
  t_goodsmvt_item-move_plant '3000'.
  t_goodsmvt_item-move_plant 'PK03'.
  t_goodsmvt_item-nb_slips '2'.
  APPEND t_goodsmvt_item.
  CLEAR t_goodsmvt_item.


  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      goodsmvt_header  is_goodsmvt_header
      goodsmvt_code    '02'
      testrun          'X'
    IMPORTING
      materialdocument o_mblnr
      matdocumentyear  o_mjahr
    TABLES
      goodsmvt_item    t_goodsmvt_item
      return           lt_return.

  LOOP AT lt_return WHERE type EQ 'A' OR type EQ 'E'.
    IF sy-tabix EQ 1.
      o_msg '创建失败:'.
    ENDIF.
    CONCATENATE o_msg lt_return-message INTO o_msg.
  ENDLOOP.

  IF NOT o_msg IS INITIAL.
    EXIT.
  ELSE.
    REFRESHlt_return.
    CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
      EXPORTING
        goodsmvt_header  is_goodsmvt_header
        goodsmvt_code    '02'
      IMPORTING
        materialdocument o_mblnr
        matdocumentyear  o_mjahr
      TABLES
        goodsmvt_item    t_goodsmvt_item
        return           lt_return.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait 'X'.
    CONCATENATE '物料凭证:' o_mblnr '在年度' o_mjahr '已成功创建!' INTO o_msg.
  ENDIF.

**--生产订单收退料
  CLEARis_goodsmvt_header.
  REFRESHt_goodsmvt_item.

**--TEST
  "---header
  is_goodsmvt_header-pstng_date sy-datum.
  is_goodsmvt_header-doc_date sy-datum.
  is_goodsmvt_header-pr_uname sy-uname.
  is_goodsmvt_header-header_txt 'HEADER short text'.

  "---item
  t_goodsmvt_item-material '000000003102000245'.
  t_goodsmvt_item-plant '1201'.
  t_goodsmvt_item-stge_loc '1006'.
  t_goodsmvt_item-move_type '261'.  "库存管理
  t_goodsmvt_item-entry_qnt '9'.
  t_goodsmvt_item-entry_uom 'EA'.
  t_goodsmvt_item-orderid '000010003579'"MO号
  t_goodsmvt_item-reserv_no '0000107118'"预留编号
  t_goodsmvt_item-res_item '0019'.        "预留项目
  APPEND t_goodsmvt_item.
  CLEAR t_goodsmvt_item.


  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      goodsmvt_header  is_goodsmvt_header
      goodsmvt_code    '03'
      testrun          'X'
    IMPORTING
      materialdocument o_mblnr
      matdocumentyear  o_mjahr
    TABLES
      goodsmvt_item    t_goodsmvt_item
      return           lt_return.

  LOOP AT lt_return WHERE type EQ 'A' OR type EQ 'E'.
    IF sy-tabix EQ 1.
      o_msg '创建失败:'.
    ENDIF.
    CONCATENATE o_msg lt_return-message INTO o_msg.
  ENDLOOP.

  IF NOT o_msg IS INITIAL.
    EXIT.
  ELSE.
    REFRESHlt_return.
    CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
      EXPORTING
        goodsmvt_header  is_goodsmvt_header
        goodsmvt_code    '03'
      IMPORTING
        materialdocument o_mblnr
        matdocumentyear  o_mjahr
      TABLES
        goodsmvt_item    t_goodsmvt_item
        return           lt_return.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait 'X'.
    CONCATENATE o_mblnr '在年度' o_mjahr '已成功创建!' INTO o_msg.
  ENDIF.
ENDFUNCTION.

你可能感兴趣的:(SAP_常用BAPI)