Friday, 7 March 2014

Sample Program for Classical ALV Report with Header by Shravankumar Ravula

*&---------------------------------------------------------------------*
*& Report  YSTEST_ALV                                                  *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ystest_alv                              .

TABLESmara.

*----------------------------------------------------------------------*
*                           TYPE-POOLS
*----------------------------------------------------------------------*
TYPE-POOLSslis.
*----------------------------------------------------------------------*
*                           TYPES DECLARATION
*----------------------------------------------------------------------*


TYPES BEGIN OF ty_mara,
        matnr TYPE mara-matnr,
          ersda TYPE mara-ersda,
          ernam TYPE mara-ernam,
       END OF ty_mara .

TYPESBEGIN OF gy_final,
        matnr TYPE mara-matnr,
           ersda TYPE mara-ersda,
           ernam TYPE mara-ernam,
            laeda  TYPE mara-ernam,
            aenam  TYPE mara-ernam,
            vpsta  TYPE mara-ernam,
            pstat TYPE mara-ernam,
            lvorm  TYPE mara-ernam,
            mtart  TYPE mara-ernam,
      END OF gy_final.

DATAgt_mara  TYPE STANDARD TABLE OF ty_mara,
      gw_mara TYPE ty_mara,
      gt_final TYPE TABLE OF gy_final,
      gw_final TYPE gy_final.

*--------------------------------------------------------------------*
*                    SLIS Variables
*--------------------------------------------------------------------*

DATAgw_event           TYPE slis_alv_event,                            " ALV EVENT
      gw_layout          TYPE slis_layout_alv,
      gt_fieldcat        TYPE slis_t_fieldcat_alv,
      gt_event           TYPE slis_t_event,                              " ALV EVENT
      gt_heading         TYPE slis_t_listheader,                       " ALV HEADING
      gw_grid_settings   TYPE  lvc_s_glay,
      gw_variant         TYPE disvariant,
      gw_fieldcat        TYPE slis_fieldcat_alv.


DATA gv_date(60TYPE .

*----------------------------------------------------------------------*
*                   CONSTANTS
*----------------------------------------------------------------------*

CONSTANTS :  gc_s          TYPE c              VALUE   'S',
             gc_x          TYPE char1          VALUE   'X',
             gc_top        TYPE slis_formname  VALUE 'TOP_OF_PAGE',
             gc_a          TYPE char1          VALUE   'A'.


*----------------------------------------------------------------------*
*                    SELECT-OPTIONS
*----------------------------------------------------------------------*
SELECTION-SCREENBEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERSp_matnr TYPE mara-matnr.


SELECTION-SCREEN:  END OF BLOCK b1.

*--------------------------------------------------------------------*
*                    START-OF-SELECTION
*--------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM sub_populate_mara.
  PERFORM sub_populate_final.
*  Prepare fieldcatalog
  PERFORM sub_fieldcat.
*  Build Event
  PERFORM populate_event.
* FOR ALV HEADER
  PERFORM build_comment  USING gt_heading[].
*  output display
  PERFORM sub_output_display.
*&---------------------------------------------------------------------*
*&      Form  SUB_POPULATE_MARA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_populate_mara .

  SELECT  matnr
          ersda
          ernam
          FROM mara INTO TABLE gt_mara
          WHERE matnr EQ p_matnr.


ENDFORM.                    " SUB_POPULATE_MARA
*&---------------------------------------------------------------------*
*&      Form  SUB_POPULATE_FINAL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_populate_final .

  LOOP AT gt_mara INTO gw_mara.
    gw_final-matnr  gw_mara-matnr.
    gw_final-ersda  gw_mara-ersda.
    gw_final-ernam     gw_mara-ernam.

    APPEND gw_final TO gt_final.
    CLEARgw_final.
  ENDLOOP.
ENDFORM.                    " SUB_POPULATE_FINAL
*&---------------------------------------------------------------------*
*&      Form  SUB_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_fieldcat .

  gw_fieldcat-fieldname   'MATNR'.
  gw_fieldcat-seltext_l   'Material Number'(004).
  gw_fieldcat-col_pos     0.
  APPEND gw_fieldcat TO gt_fieldcat.
  CLEAR gw_fieldcat.


  gw_fieldcat-fieldname   'ERSDA'.
  gw_fieldcat-seltext_l   'Creation Date'(005).
  gw_fieldcat-col_pos     1.
  APPEND gw_fieldcat TO gt_fieldcat.
  CLEAR gw_fieldcat.


  gw_fieldcat-fieldname   'ERNAM'.
  gw_fieldcat-seltext_l   'Created By'(005).
  gw_fieldcat-col_pos     1.
  APPEND gw_fieldcat TO gt_fieldcat.
  CLEAR gw_fieldcat.



ENDFORM.                    " SUB_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  POPULATE_EVENT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM populate_event .

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     0
    IMPORTING
      et_events       gt_event
    EXCEPTIONS
      list_type_wrong 1
      OTHERS          2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ELSE.
    SORT gt_event BY name.
    READ TABLE gt_event WITH KEY name slis_ev_top_of_page INTO gw_event
                                                               BINARY SEARCH.
    IF sy-subrc 0.
      MOVE gc_top TO gw_event-form.
      MODIFY gt_event FROM gw_event INDEX sy-tabix TRANSPORTING form.
    ENDIF.

  ENDIF.


ENDFORM.                    " POPULATE_EVENT
*&---------------------------------------------------------------------*
*&      Form  BUILD_COMMENT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_HEADING[]  text
*----------------------------------------------------------------------*
FORM build_comment  USING   p_heading TYPE slis_t_listheader.

  DATA:  l_hline TYPE slis_listheader,
          lv_title(50),
          lv_progname(20),
          lv_datum(11),
          lv_time(10),
          lv_username(30),
          lv_pagno(2),
          lv_pagno1(2),
          lv_client(10),
          l_f_info(132),
           lv_host(10).

  lv_title sy-title.
  lv_progname sy-cprog.
  lv_datum sy-datum.
  lv_time  sy-uzeit.
  lv_username sy-uname.
*  lv_pagno = sy-pagno.
  lv_pagno sy-pagno + 1.
  lv_pagno1 sy-pagno + 1.
  lv_client sy-mandt.
  lv_host sy-sysid.

  l_hline-typ  gc_s.
  l_hline-key  'REPORT TITLE:'.
  l_hline-info =  lv_title.
  APPEND l_hline TO p_heading.
  CLEAR l_hline.

  l_hline-typ  gc_s.
  l_hline-key  'PROGRAM NAME:'.
  l_hline-info =  lv_progname.
  APPEND l_hline TO p_heading.
  CLEAR l_hline.

  PERFORM get_gdp_date.

  CONCATENATE sy-timlo+0(2':' sy-timlo+2(2':' sy-timlo+4(2)
  INTO lv_time.

  l_hline-typ  gc_s.
  l_hline-key  'DATE:'.
  l_hline-info =  gv_date.
  APPEND l_hline TO p_heading.
  CLEAR l_hline.

  l_hline-typ  gc_s.
  l_hline-key  'TIME:'.
  l_hline-info =  lv_time.
  APPEND l_hline TO p_heading.
  CLEAR l_hline.


  CONCATENATE  lv_pagno '/' lv_pagno1 INTO l_f_info
*
                                         SEPARATED BY '   '.


  l_hline-typ  gc_s.
  l_hline-key  'PAGNO:'.
  l_hline-info =  l_f_info.
  APPEND l_hline TO p_heading.
  CLEAR l_hline.

  l_hline-typ  gc_s.
  l_hline-key  'USERID:'.
  l_hline-info =  lv_username.
  APPEND l_hline TO p_heading.
  CLEAR l_hline.


  l_hline-typ  gc_s.
  l_hline-key  'CLIENT:'.
  l_hline-info =  lv_client.
  APPEND l_hline TO p_heading.
  CLEAR l_hline.

  l_hline-typ  gc_s.
  l_hline-key  'SAP SYSTEM:'.
  l_hline-info =  lv_host.
  APPEND l_hline TO p_heading.
  CLEAR l_hline.

ENDFORM.                    " BUILD_COMMENT

***---------------------------------------------------------------------*
***       FORM TOP_OF_PAGE                                              *
**----------------------------------------------------------------------*
*Display top of page details which we defined in the report
*---------------------------------------------------------------------*
FORM top_of_page.                                           "#EC CALLED
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary gt_heading[].


ENDFORM.                    " BUILD_COMMENT

*&---------------------------------------------------------------------*
*&      Form  GET_GDP_DATE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_gdp_date .
  DATA lt_month_names TYPE TABLE OF t247 ,
         ls_month_names TYPE t247 .

  gv_date sy-datlo .
  CALL FUNCTION 'MONTH_NAMES_GET'
    EXPORTING
      language    sy-langu
    TABLES
      month_names lt_month_names.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    READ TABLE lt_month_names INTO ls_month_names
                   WITH KEY mnr   sy-datlo+4(2).
    IF sy-subrc EQ .
      CLEAR gv_date.
      CONCATENATE sy-datlo+6(2ls_month_names-ktx
                  sy-datlo+0(4INTO gv_date.
    ENDIF.
  ENDIF.

ENDFORM.                    " GET_GDP_DATE
*&---------------------------------------------------------------------*
*&      Form  SUB_OUTPUT_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_output_display .
  gw_layout-colwidth_optimize 'X'.
  gw_grid_settings-no_colwopt 'X'.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program sy-repid
      i_grid_settings    gw_grid_settings
      is_layout          gw_layout
      it_fieldcat        gt_fieldcat[]
      i_default          gc_x
      i_save             gc_a
      is_variant         gw_variant
      it_events          gt_event[]
    TABLES
      t_outtab           gt_final[]
    EXCEPTIONS
      program_error      1
      OTHERS             2.

  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.                    " SUB_OUTPUT_DISPLAY

No comments:

Post a Comment