DEMO:MB1B 311 移库 BAPI_GOODSMVT_CREATE_java

*&---------------------------------------------------------------------*

*& Report  ZDEMO_MB1B

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

report  zdemo_mb1b.

parameters: p_matnr type matnr.

parameters: p_werks type werks_d.

parameters: p_movef type lgort_d."move from

parameters: p_movet type lgort_d."move to

parameters: p_sernr type gernr.

*&BAPI

data: ls_goodsmvt_header      like  bapi2017_gm_head_01,

      lv_goodsmvt_code        like  bapi2017_gm_code.

data:

     lt_goodsmvt_item         like table of bapi2017_gm_item_create,

     ls_goodsmvt_item         like  bapi2017_gm_item_create,

     lt_goodsmvt_serialnumber like table of bapi2017_gm_serialnumber,

     ls_goodsmvt_serialnumber like  bapi2017_gm_serialnumber  .

data:lv_materialdocument      type  bapi2017_gm_head_ret-mat_doc,

     lv_matdocumentyear       type  bapi2017_gm_head_ret-doc_year.

data:lt_return                type table of   bapiret2.

data:lv_item_line             type int4.

field-symbols <ls_item>       like line of lt_goodsmvt_item.

start-of-selection.

  lv_goodsmvt_code-gm_code = '04'.

  ls_goodsmvt_header-pstng_date = sy-datum.

  ls_goodsmvt_header-doc_date = sy-datum.

  ls_goodsmvt_header-pr_uname = sy-uname.

  ls_goodsmvt_item-material    = p_matnr.

  ls_goodsmvt_item-plant       = p_werks.

  ls_goodsmvt_item-stge_loc    = p_movef.

  ls_goodsmvt_item-move_type   = '311'.

  ls_goodsmvt_item-move_plant  = p_werks.

  ls_goodsmvt_item-move_stloc  = p_movet.

  ls_goodsmvt_item-entry_qnt   = 1.

  read table lt_goodsmvt_item assigning <ls_item>

        with key  material    = p_matnr

                  plant       = p_werks

                  stge_loc    = p_movef

                  move_type   = '311'

                  move_plant  = p_werks

                  move_stloc  = p_movet.

  if sy-subrc = 0.

    <ls_item>-entry_qnt = <ls_item>-entry_qnt + 1.

  else.

    append ls_goodsmvt_item to lt_goodsmvt_item.

  endif.

  describe table lt_goodsmvt_item lines lv_item_line.

  ls_goodsmvt_serialnumber-matdoc_itm = lv_item_line.

  ls_goodsmvt_serialnumber-serialno   =  p_sernr.

  append ls_goodsmvt_serialnumber to lt_goodsmvt_serialnumber.

  call function 'BAPI_GOODSMVT_CREATE'

    exporting

      goodsmvt_header       = ls_goodsmvt_header

      goodsmvt_code         = lv_goodsmvt_code

    importing

      materialdocument      = lv_materialdocument

      matdocumentyear       = lv_matdocumentyear

    tables

      goodsmvt_item         = lt_goodsmvt_item[]

      goodsmvt_serialnumber = lt_goodsmvt_serialnumber

      return                = lt_return[].

  .

  call function 'BAPI_TRANSACTION_COMMIT'

    exporting

      wait = 'X'.

  write lv_materialdocument.