Friday, 25 August 2017

Create Movement type 351 to 101 after creating PO





REPORT zpo_massupload.

TABLES ekko,ekpo.
TYPES BEGIN OF ty_out,
          mblnr TYPE mblnr,
          ebeln TYPE ekko-ebeln,
        END OF ty_out.

DATA it_ekko TYPE TABLE OF ekko WITH HEADER LINE.
DATA it_ekpo TYPE TABLE OF ekpo WITH HEADER LINE.
DATA it_ekbe TYPE TABLE OF ekbe WITH HEADER LINE.
DATA it_out TYPE TABLE OF ty_out WITH HEADER LINE.
DATAls_header TYPE bapi2017_gm_head_01,
      ls_code   TYPE bapi2017_gm_code,
      it_item   TYPE STANDARD TABLE OF bapi2017_gm_item_create,
      wa_item   TYPE bapi2017_gm_item_create.
DATA it_return TYPE TABLE OF bapiret2 WITH HEADER LINE.
DATA materialdocument TYPE  bapi2017_gm_head_ret-mat_doc.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_ebeln FOR ekko-ebeln.
PARAMETERSp_budat TYPE sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

  SELECT FROM ekbe INTO TABLE it_ekbe WHERE ebeln IN s_ebeln
                                           AND bwart '351'.


  IF it_ekbe[] IS NOT INITIAL.
    SELECT FROM ekko INTO TABLE it_ekko FOR ALL ENTRIES IN it_ekbe  WHERE ebeln it_ekbe-ebeln.
    SELECT FROM ekpo INTO TABLE it_ekpo FOR ALL ENTRIES IN it_ekbe  WHERE ebeln it_ekbe-ebeln
                                                                       AND matnr  it_ekbe-matnr
                                                                       AND ebelp it_ekbe-ebelp
                                                                       AND ELIKZ <> 'X'
                                                                       AND STAPO <> 'X'.
  ENDIF.

  ls_header-pstng_date    p_budat .
  ls_header-doc_date      p_budat .
  ls_code-gm_code         '01'.
  ls_header-header_txt    'Stock In Transit'.
  ls_header-doc_date   p_budat.

  LOOP AT it_ekko.
    CLEAR it_item[].
    LOOP AT it_ekpo WHERE ebeln it_ekko-ebeln.
      READ TABLE it_ekbe WITH  KEY ebeln it_ekpo-ebeln matnr it_ekpo-matnr
                                    ebelp it_ekpo-ebelp.
      if sy-subrc 0.
      wa_item-material     it_ekpo-matnr.
      wa_item-stge_loc     it_ekpo-werks.
      wa_item-plant        it_ekpo-werks.
      wa_item-move_type    '101'.
      wa_item-entry_qnt    it_ekbe-menge.
      wa_item-entry_uom    it_ekpo-meins.
      wa_item-po_number    it_ekpo-ebeln.
      wa_item-po_item      it_ekpo-ebelp.
      wa_item-mvt_ind      'B'.
*     wa_item-no_more_gr   = 'X'.
*     wa_item-line_id     = lv_line_id.
*     wa_item-parent_id   = lv_parent_id.
      APPEND wa_item TO it_item.
      CLEAR wa_item.
      ENDIF.
    ENDLOOP.
    IF it_item[] IS NOT INITIAL.
      CLEAR it_return[].
      CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
        EXPORTING
          goodsmvt_header  ls_header
          goodsmvt_code    ls_code
*         TESTRUN          = ' '
*         GOODSMVT_REF_EWM =
        IMPORTING
*         goodsmvt_headret = goodsmvt_headret
          materialdocument materialdocument
*         matdocumentyear  = matdocumentyear
        TABLES
          goodsmvt_item    it_item
*         GOODSMVT_SERIALNUMBER         =
          return           it_return.
*              GOODSMVT_SERV_PART_DATA       =
*              EXTENSIONIN      =

      COMMIT WORK AND WAIT.
      IF materialdocument IS NOT INITIAL .
        it_out-mblnr materialdocument.
        it_out-ebeln it_ekpo-ebeln.
        APPEND it_out.
      ENDIF.
    ENDIF.
    REFRESH  it_item.
  ENDLOOP.


  LOOP AT it_out.
    WRITE / it_out-mblnr,
              it_out-ebeln.
  ENDLOOP.

No comments:

Post a Comment