Friday, 25 August 2017

201 -Consumption for cost center from warehouse for MB1

REPORT zmm_gi201.

TABLES mara.

TYPES BEGIN OF ty_out,
          sno   TYPE i,
          matnr TYPE mara-matnr,
          maktx TYPE makt-maktx,
          menge TYPE ekbe-menge,
          meins TYPE mara-meins,
          mblnr TYPE mblnr,
        END OF ty_out.
TYPES BEGIN OF ty_doc,
          mblnr TYPE mblnr,
        END OF ty_doc.

DATA it_doc TYPE TABLE OF ty_doc WITH HEADER LINE.
DATA it_mara TYPE TABLE OF mara WITH HEADER LINE.
DATA it_makt TYPE TABLE OF makt WITH HEADER LINE.
DATA it_out TYPE TABLE OF ty_out WITH HEADER LINE.
"""""
DATA it_head TYPE bapi2017_gm_head_01.
DATA it_code TYPE bapi2017_gm_code.
DATA goodsmvt_headret LIKE  bapi2017_gm_head_ret.
DATA materialdocument TYPE  bapi2017_gm_head_ret-mat_doc.
DATA matdocumentyear  TYPE  bapi2017_gm_head_ret-doc_year.
DATA it_item TYPE  TABLE OF bapi2017_gm_item_create WITH HEADER LINE.
DATA it_return TYPE TABLE OF bapiret2 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_matnr FOR mara-matnr.
PARAMETERS p_werks TYPE marc-werks OBLIGATORY.
PARAMETERS p_date TYPE sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

  SELECT FROM mara INTO TABLE it_mara WHERE matnr IN s_matnr.
  IF it_mara[] IS NOT INITIAL.
    SELECT FROM makt INTO TABLE it_makt FOR ALL ENTRIES IN it_mara WHERE matnr it_mara-matnr
                                                                    AND spras 'EN'.
  ENDIF.

  LOOP AT it_mara.
    it_out-sno it_out-sno + 1.
    it_out-matnr it_mara-matnr.
    it_out-meins it_mara-meins.
    READ TABLE it_makt WITH  KEY matnr it_mara-matnr.
    IF sy-subrc 0.
      it_out-maktx it_makt-maktx.
    ENDIF.
    APPEND it_out.
  ENDLOOP.

  DATA it_fieldcat TYPE slis_t_fieldcat_alv.
  DATA wa_fieldcat TYPE slis_fieldcat_alv.

  wa_fieldcat-fieldname     'SNO'.
  wa_fieldcat-tabname       'IT_OUT'.
  wa_fieldcat-seltext_l 'SNO'.
  wa_fieldcat-outputlen '04'.
  APPEND wa_fieldcat TO  it_fieldcat.
  CLEAR wa_fieldcat.

  wa_fieldcat-fieldname     'MATNR'.
  wa_fieldcat-tabname       'IT_OUT'.
  wa_fieldcat-seltext_l     'Material'.
  wa_fieldcat-outputlen     '05'.
  APPEND wa_fieldcat TO  it_fieldcat.
  CLEAR wa_fieldcat.

  wa_fieldcat-fieldname     'MAKTX'.
  wa_fieldcat-tabname       'IT_OUT'.
  wa_fieldcat-seltext_l     'Description'.
  wa_fieldcat-outputlen     '30'.
  APPEND wa_fieldcat TO  it_fieldcat.
  CLEAR wa_fieldcat.

  wa_fieldcat-fieldname     'MENGE'.
  wa_fieldcat-tabname       'IT_OUT'.
  wa_fieldcat-edit 'X'.
  wa_fieldcat-qfieldname 'MEINS'.
  wa_fieldcat-no_zero =     'X'.
  wa_fieldcat-ref_tabname 'MSEG'.
  wa_fieldcat-ref_fieldname 'MENGE'.
  APPEND wa_fieldcat TO  it_fieldcat.
  CLEAR wa_fieldcat.

  wa_fieldcat-fieldname     'MEINS'.
  wa_fieldcat-tabname       'IT_OUT'.
  wa_fieldcat-seltext_l     'Uom'.
  wa_fieldcat-outputlen     '03'.
  wa_fieldcat-ref_tabname 'MARA'.
  wa_fieldcat-ref_fieldname 'MEINS'.
  APPEND wa_fieldcat TO  it_fieldcat.
  CLEAR wa_fieldcat.

  wa_fieldcat-fieldname     'MBLNR'.
  wa_fieldcat-tabname       'IT_OUT'.
  wa_fieldcat-seltext_l     'Material Doc'.
  wa_fieldcat-outputlen     '12'.
  wa_fieldcat-ref_tabname 'MSEG'.
  wa_fieldcat-ref_fieldname 'MBLNR'.
  APPEND wa_fieldcat TO  it_fieldcat.
  CLEAR wa_fieldcat.


  DATAg_repid LIKE sy-repid.
  DATAvariant_detail LIKE disvariant.
  g_repid sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       g_repid
      i_callback_top_of_page   'TOP-OF-PAGE '
*     is_layout                = gs_layout
*     it_sort                  = gt_sort[]
      i_callback_user_command  'STAT'
      it_fieldcat              it_fieldcat[]
*     IT_EVENTS                = GT_EVENTS[]
      i_save                   'U'
      is_variant               variant_detail
*     I_GRID_SETTINGS          = LC_GLAY "IMPORTANT
      i_callback_pf_status_set 'FORM_PF_STATUS' "NOW
    TABLES
      t_outtab                 it_out.


FORM top-of-page.
  DATAt_header  TYPE slis_t_listheader,
        wa_header TYPE slis_listheader.

  DATA ztime(10TYPE c.
  DATA time TYPE sy-uzeit.
  time =  sy-uzeit.

  WRITE time TO ztime.

  wa_header-typ  'H'.
  wa_header-info '201 -Consumption for cost center from warehouse'.
  APPEND wa_header TO t_header.
  CLEAR wa_header.

  wa_header-typ  'S'.
  wa_header-key 'Date: '.
  CONCATENATE  sy-datum+6(2'.'
               sy-datum+4(2'.'
               sy-datum(4INTO wa_header-info.
  APPEND wa_header TO t_header.
  CLEARwa_header.

  wa_header-typ  'S'.
  wa_header-key 'Time: '.
  wa_header-info ztime.
  APPEND wa_header TO t_header.
  CLEARwa_header.


  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary t_header.
ENDFORM.

FORM form_pf_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'GUI_STATUS' OF PROGRAM g_repid.
ENDFORM.

FORM stat USING ls_ucomm LIKE sy-ucomm
                selfield TYPE slis_selfield.


  DATA ref_grid TYPE REF TO cl_gui_alv_grid"NEW
  selfield-refresh 'X'.
  IF ref_grid IS INITIAL.
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid ref_grid.
  ENDIF.

  IF NOT ref_grid IS INITIAL.
    CALL METHOD ref_grid->check_changed_data.
  ENDIF.

  CASE ls_ucomm.
    WHEN '&DATA_SAVE'.

      it_item-move_type  '201'.
      it_item-plant      p_werks .
      LOOP AT it_out WHERE menge IS NOT INITIAL.
        it_item-material it_out-matnr.
        it_item-stge_loc p_werks.
        it_item-costcenter p_werks.
        it_item-entry_qnt it_out-menge.
        APPEND  it_item.
      ENDLOOP.

      it_head-pstng_date p_date.
      it_head-doc_date p_date.
      it_head-pr_uname sy-uname.
      it_code-gm_code '03'.

      IF it_item[] IS NOT INITIAL.
        CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
          EXPORTING
            goodsmvt_header  it_head
            goodsmvt_code    it_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_doc-mblnr materialdocument.
          APPEND it_doc.
        ENDIF.
        IF materialdocument IS  INITIAL.
          MESSAGE it_return-message TYPE 'W'.
        ENDIF.
        REFRESH  it_item.
        REFRESH it_out.
      ENDIF.

     LOOP AT IT_OUT.
      IT_OUT-MBLNR =  materialdocument.
       MODIFY IT_OUT.
       ENDLOOP.
  ENDCASE.

ENDFORM.

No comments:

Post a Comment