ABAP-MIGO批导(261移动类型)

发布时间 2023-05-20 10:45:23作者: TigerMan
DATA:ls_head   TYPE bapi2017_gm_head_01,
     ls_code   TYPE bapi2017_gm_code,
     ls_item   TYPE bapi2017_gm_item_create,
     lt_item   TYPE TABLE OF bapi2017_gm_item_create,
     ls_return TYPE bapiret2,
     lt_return TYPE TABLE OF bapiret2.

CLEAR ls_head .
CLEAR ls_code .
CLEAR ls_item .
REFRESH lt_item .
CLEAR ls_return .
REFRESH lt_return .

ls_head-pstng_date = is_input-budat .
ls_head-doc_date = is_input-bldat .
ls_head-header_txt = is_input-bktxt .
ls_head-ref_doc_no = is_input-xblnr .

ls_code-gm_code = '03' .

LOOP AT ti_item ASSIGNING FIELD-SYMBOL(<fs_item>) .

  CLEAR ls_item .
  ls_item-material = <fs_item>-matnr .
  ls_item-entry_qnt = <fs_item>-menge .
  ls_item-base_uom = <fs_item>-meins .
  ls_item-orderid = <fs_item>-aufnr .
  ls_item-xstob = ''.
  ls_item-move_type = '261' .
  ls_item-plant = <fs_item>-werks .
  ls_item-stge_loc = <fs_item>-lgort .
  ls_item-batch = <fs_item>-charg .
  ls_item-item_text = <fs_item>-sgtxt .
  ls_item-sales_ord = <fs_item>-kdauf .
  ls_item-s_ord_item = <fs_item>-kdpos .
  APPEND ls_item TO lt_item .

ENDLOOP .

IF es_output-type <> 'E' .

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      goodsmvt_header  = ls_head
      goodsmvt_code    = ls_code
*     TESTRUN          = ' '
*     GOODSMVT_REF_EWM =
*     GOODSMVT_PRINT_CTRL           =
    IMPORTING
*     GOODSMVT_HEADRET =
      materialdocument = es_output-mblnr
*     MATDOCUMENTYEAR  =
    TABLES
      goodsmvt_item    = lt_item
*     GOODSMVT_SERIALNUMBER         =
      return           = lt_return
*     GOODSMVT_SERV_PART_DATA       =
*     EXTENSIONIN      =
*     GOODSMVT_ITEM_CWM             =
    .

  IF es_output-mblnr IS INITIAL .

    es_output-type = 'E' .
    LOOP AT lt_return INTO ls_return WHERE type = 'E' .

      es_output-message = ls_return-message && ';' && es_output-message .

    ENDLOOP .
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    
  ELSE .
    
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    es_output-type = 'S' .
    es_output-message = '创建成功' .

  ENDIF .

ENDIF .