ALV Reports

Check latest blog on creating basic ALV grid report in sab ABAP


  Function modules for developing ALV Reports
   REUSE_ALV_GRID_DISPLAY Ã  Display ALV data in GRID format 
  REUSE_ALV_LIST_DISPLAY Ã  Display ALV data in LIST format 
  REUSE_ALV_COMMENTARY_WRITE Ã  Display TOP-OF-PAGE,                                                                                           LOGO,END-OF-LIST.
  REUSE_ALV_FIELDCATELOG_MERGEà Generate field catalog automatically 
  REUSE_ALV_EVENTS_GET      Ã  Display ALV Events 
  REUSE_ALV_HIERSEQ_LIST_DISPLAYà Display hierarchical ALV 
  REUSE_ALV_BLOCKED_LIST_DISPLAY Ã  Display blocked ALV
  List of ALV’s
  ALV with structure
  ALV with field category options
  ALV with field catalog merge
  ALV with layout options
  ALV with totals and sub totals
  ALV with LOGO/ TOP OF PAGE / END OF LIST
  Interactive ALV
  hierarchical ALV

  ALV Structures
  Business Requirement
  Develop a material master Report which displays all the fields
   STEPS
  Declare an internal table and work area for MARA table
  Write  an select statement to fetch the data
  Call the function module REUSE_ALV_GRID_DISPLAY and specify the Below parameters
                          Structure Name
                          Program Name
                          Itab Name

  FieldCatelog: It is an int.Table which contains the list of the fields to be displayed in ALV Report
  It is also used to set various properties for each field.
  The properties/options are:
              1. COL_POS     = 1.
              2. FIELD NAMEà Specifies the name of the field
              3. TABLE NAMEà Specifies the name of the internal table
              4.         SELTEXT_S       Ã  Specifies short
                          SELTEXT_L       Ã  Specifies Long
                          SELTEXT_M     Ã  Specifies medium
              5. DO_SUM     = ‘X’     Ã  For grand totals
              6. SUBTOT       = ‘X’     Ã  Sub totals to be calculated
              7. EDIT = ‘X’     Ã  Field can be editable
              8. EMPHASIZE = ‘CXYZ’ Ã  Specifies the Color to the fields
                                                  C – Indicates color
                                                  X – Color Numbers
                                                  Y – Backgroundcolor – 1 On BG color
                                                                                        0 off BG color
                                                  Z – Font color 1  OnFont color
                                                                           0 Off font color
              9. REFERENCE TABLENAME
                  REFERENCE FIELDNAME     Ã  To copy all the properties                                                                                            from data dictionary to a                                                                                     field catalog field. 
              10. KEY            Ã  Specify the key field
              11. HOTSPOT  Ã   For selection.
  Generation of Fieldcatelog :
                         It is generated using 2 ways.
                         1)Manually
                         2)Automatically by using FM
  Steps for Example Program on field catalog
  Declare the internal table and work area for the field catalog
   DATA  : i_fcat  TYPE slis_t_fieldcat_alv.
*DATA  : wa_fcat TYPE slis_fieldcat_alv.
DATA  : wa_fcat like LINE OF i_fcat.
  Fill the fieldcatelog Itab with all fields and their corresponding properties.
  wa_fcat-col_pos = 1. "v_pos.
wa_fcat-fieldname = 'KUNNR'.
*wa_fcat-tabname = 'I_KNA1'.
WA_FCAT-SELTEXT_L = 'CUST_NUM'.
*WA_FCAT-EDIT  = 'X'.
WA_FCAT-EMPHASIZE = 'C610'.
WA_FCAT-REF_TABNAME = 'KNA1'.
  
WA_FCAT-REF_FIELDNAME = 'KUNNR'.
*WA_FCAT-KEY = 'X'.
  APPEND WA_FCAT TO I_FCAT.
CLEAR  WA_FCAT.
  Call the function module and Export the field catalog in internal table as exporting parameters to IT_FCAT.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
   I_CALLBACK_PROGRAM                = 'SY-REPID'
   IT_FIELDCAT                                       = I_FCAT
  TABLES
    T_OUTTAB                                       = I_KNA1.
ALV with Layout
  Layout
  It is a structure or work area which is used to decorate or embellish the output of ALV Report
  Layout contains the few properties to decorate the ALV output  
  The properties are,
              1. ZEEBRA       = ‘X’.    Ã  Displays ALV with alternative colors
              2. COLWIDTH-OPTIMIZE = ‘X’. Ã  Each column in ALV o/p   displayed with maximum length, to display the entire data.
              3. EDIT= ‘X’.à All the columns are displayed in editable mode.
              4. NO_VLINE   = ‘X’.   Ã  Vertical lines will not be displayed
              5. NO_HLINE   = ‘X’.   Ã  Horizontal lines will not be displayed
  Steps:
  Declare a work area for the Layout
  DATA  : wa_layout TYPE slis_layout_alv.
  Fill the WA with various options.
    wa_layout-zebra  = 'X'.
  wa_layout-colwidth_optimize = 'X'.
*  wa_layout-edit  = 'X'.
*  wa_layout-no_vline  = 'X'.
  wa_layout-no_hline  = 'X'.
  Call the function module and send the WA as exporting parameter to IS_LAYOUT.
   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
   I_CALLBACK_PROGRAM                = SY-REPID
   IS_LAYOUT                         = WA_LAYOUT
   IT_FIELDCAT                       = I_FCAT
  TABLES
    T_OUTTAB                          = I_KNA1.
  ALV Reports with Totals
  The totals can be calculated in two ways
  By clicking on ∑ ALV output field.
  By programmatically setting the option
                          DO_SUM = ‘X’, for an currency/quantity field in FCAT
  WA_FCAT-COL_POS = ’5’.
WA_FCAT-FIELDNAME = 'NETWR'.
WA_FCAT-SELTEXT_M = 'NETPRICE‘.                          WA_FCAT-DO_SUM  = 'X'.
APPEND WA_FCAT TO I_FCAT.
  ALV Reports with and sub totals
  To calculate sub totals, we need to find out on what basis (field name) the sub totals need to be calculated.
  We need to sort the field in ascending order.
  Then we need to set the property
                          SUBTOT = ‘X’ in FCAT.
  WA_SORT-FIELDNAME = 'VBELN'.
WA_SORT-UP  = 'X'.
WA_SORT-SUBTOT  = 'X'.
APPEND WA_SORT TO I_SORT.
  Steps :
  Declare the internal table and work area for the sorting
  DATA  : I_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA  : WA_SORT TYPE SLIS_SORTINFO_ALV.
  Specify the field and subtot = ‘X’ .
  WA_SORT-FIELDNAME = 'VBELN'.
WA_SORT-UP  = 'X'.
WA_SORT-SUBTOT  = 'X'.
APPEND WA_SORT TO I_SORT.
  .
  Call the function module and send the SORT  internal table as exporting parameters to IT_SORT
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
   I_CALLBACK_PROGRAM                = SY-REPID
   IT_FIELDCAT                       = I_FCAT
   IT_SORT                               = I_SORT
  TABLES
    T_OUTTAB                          = I_VBAP.
  ALV with field catalog merge
   We can create a field catalog either manually or by automatically
  REUSE_ALV_FIELDCATELOG_MERGE is the function module which is used to create field catalog automatically
  But this is obsolete because, the function module uses the old syntax for declaring internal tables 
              I.e. the   internal table should be created as below and all the fields in the internal table must be declared using LIKE statement not the TYPE statement.                               DATA: BEGIN OF I_MARA OCCURS 0,
                       MATNR LIKE MARA-MATNR,
                       MTART LIKE MARA-MTART,
                       MEINS LIKE MARA-MEINS,
                      END OF I_MARA.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE’
 EXPORTING
   I_PROGRAM_NAME               = SY-REPID
   I_INTERNAL_TABNAME           = 'I_MARA'
   I_INCLNAME                   = SY-REPID
  CHANGING
    CT_FIELDCAT                  = I_FCAT.
  LOOP AT I_FCAT INTO WA_FCAT.
  IF WA_FCAT-FIELDNAME  = 'MEINS'.
      WA_FCAT-NO_OUT    = 'X'.  "For hiding the field
ELSEIF WA_FCAT-FIELDNAME  = 'MTART'.
        WA_FCAT-KEY = 'X‘.
  ENDIF.
   MODIFY I_FCAT FROM WA_FCAT INDEX SY-TABIX.
ENDLOOP.
  ALV Reports with top of page/ Events 
  There are totally 17 events available for ALV reporting
  The function module REUSE_ALV_EVENTS_GET will display all the list of ALV events
  Below are some events
  Top-Of-Page
  End-Of-List
  At User command
  Set PF status
  ALV  with LOGO:
  For Logo’s in the ALV , We have two steps.
  1. Upload the Logo from our system into SAP.
  2. Call the FM “Reuse_Alv_Commentary_Write” and Export the Logo
      name.     
  STEP1: “OAER” is the T-Code for upload the Logo’s into SAP.
  => Go to  OAER  Tcode.
        ClassName – Pictures
        ClassType  – OT
        ObjectKey   – ARJUN
        Click on the Standard Document Types
        Double Click on the SCREEN Option for browse the image.
  Click on the Save Button.
  STEP2:
     Call Function  ‘REUSE_ALV_COMMENTARY_WRITE’
         Exporting
             I_LOGO       =  ‘ARJUN’.

  TOP-OF-PAGE
  Call the function module REUSE_ALV_EVENTS_GET
  Provide the sub routine name for top-of-page event
  Write below down the code in sub routine
  Call the function module REUSE_ALV_COMMENTARY_WRITE to display top-of-page in ALV
  Finally export the events into internal table to the REUSE_ALV_GRID_DISPLAY
  STEP1:Data Declarations for TOP-OF-PAGE.
  TYPE-POOLS: SLIS.
  Data: I_EVENTS  type  SLIS_T_EVENT.
  Data: WA_EVENTS  like line of  I_EVENTS.
  Data: I_HEADING  type  SLIS_T_LISTHEADER.
  Data: WA_HEADING  like line of  I_HEADING.
  STEP2:
Call Function ‘ REUSE_ALV_EVENTS_GET’
  Importing
      ET_EVENTS    =  I_EVENTS.
      Read Table   I_EVENTS  into   WA_EVENTS 
                                                     with key NAME  =  ‘TOP-OF-PAGE’.
      WA_EVENTS-FORM  =  ‘ FORM_TOP_OF_PAGE ’.
      Modify I_EVENTS  into  WA_EVENTS  index  SY–TABIX.
  Form  FORM_TOP_OF_PAGE.
  WA_HEADING - TYP  =  ‘H’.
  WA_HEADING – INFO = ‘MATERIAL  MASTER  REPORT’ .
  Append  WA_HEADING  to  I_HEADING.
  WA_HEADING - TYP  =  ‘S’.
  WA_HEADING – KEY = ‘USERNAME’.
  WA_HEADING – INFO = SY – UNAME.
  Append  WA_HEADING  to  I_HEADING.
  WA_HEADING - TYP  =  ‘A’.
  WA_HEADING – KEY = ‘DATE’.
  WA_HEADING – INFO = SY – DATUM.
  Append  WA_HEADING  to  I_HEADING.
  STEP3:
     Call Function  ‘REUSE_ALV_COMMENTARY_WRITE’
         Exporting
             IT_LIST_COMMENTARY   =  I_HEADING.
    EndForm.
  STEP4:
     Call Function  ‘REUSE_ALV_GRID_DISPLAY’
        Exporting
            I_Callback_Programme  =  SY – REPID
            IT_Events                          =  I_EVENTS
        Tables
            T_OutTab                          =  I_MARA.
    
  END -OF-LIST:
  Call the function module REUSE_ALV_EVENTS_GET
  Provide the sub routine name for End-of-List event
  Write below down the code in sub routine
  Call the function module REUSE_ALV_COMMENTARY_WRITE to display End-of-List in ALV
  Finally export the events into internal table to the REUSE_ALV_GRID_DISPLAY
  STEP1:Data Declarations for End-of-List.
  TYPE-POOLS: SLIS.
  Data: I_EVENTS  type  SLIS_T_EVENT.
  Data: WA_EVENTS  like line of  I_EVENTS.
  Data: I_HEADING  type  SLIS_T_LISTHEADER.
  Data: WA_HEADING  like line of  I_HEADING.
  STEP2:
Call Function ‘ REUSE_ALV_EVENTS_GET’
  Importing
      ET_EVENTS    =  I_EVENTS.
      Read Table   I_EVENTS  into   WA_EVENTS 
                                                     with key NAME  =  ‘END_OF_LIST’.
      WA_EVENTS-FORM  =  ‘ FORM_END_OF_LIST’.
      Modify I_EVENTS  into  WA_EVENTS  index  SY–TABIX.
  Form  FORM_END_OF_LIST.
  WA_HEADING - TYP  =  ‘S’.
  WA_HEADING – INFO = ‘ALL RIGHTS RESERVED TO THE                                                                  COMPANY’ .
  Append  WA_HEADING  to  I_HEADING.
  STEP3:
     Call Function  ‘REUSE_ALV_COMMENTARY_WRITE’
         Exporting
             IT_LIST_COMMENTARY   =  I_HEADING
             I_END_OF_LIST_GRID      =  ‘X’.
    EndForm.
  STEP4:
     Call Function  ‘REUSE_ALV_GRID_DISPLAY’
        Exporting
            I_Callback_Programme  =  SY – REPID
            IT_Events                          =  I_EVENTS
        Tables
            T_OutTab                          =  I_MARA.


  INTERACTIVE  ALV’s:
  Call the function module REUSE_ALV_EVENTS_GET
  Provide the sub routine name for USER_COMMAND
  Write below down the code in sub routine
  In the Sub routine Call the function module REUSE_ALV_GRID_DISPLAY to display Secondary ALV
  Finally export the events into internal table to the REUSE_ALV_GRID_DISPLAY
  STEP1:Data Declarations .
  Type-Pools: SLIS.
  Data:  I_Events  type SLIS_T_EVENT.
  Data:  WA_Events like line of  I_Events.
  Data:  V_VBELN  type  VBAK – VBELN.
  STEP2:
  Call Function ‘REUSE_ALV_EVENTS_GET’
      Importing
          ET_EVENTS      =  I_EVENTS.
  Read Table I_EVENTS into WA_EVENTS with key NAME = ‘USER_COMMAND’.
  WA_EVENTS-FORM  =  ‘FORM_USER_COMMAND’.
  MODIFY I_EVENTS  from  WA_EVENTS index  SY-TABIX.
  Form FORM_USER_COMMAND using  UCOMM  type  SY-UCOMM
                                                                 SELFIELD type SLIS_SELFIELD.
  READ TABLE I_VBAK into WA_VBAK index SELFIELD-TABINDEX.
   
  Select  * from VBAP into corresponding  fields  of  table I_VBAP
                                         where VBELN = WA_VBAK-VBELN.
  STEP3:
  CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
      Exporting
           I_CALLBACK_PROGRAME   =  SY-REPID
           I_STRUCTURE_NAME            =  ‘VBAP’
      Tables
           T_OUTTAB                               =  I_VBAP.
  STEP4:
     Call Function  ‘REUSE_ALV_GRID_DISPLAY’
        Exporting
            I_Callback_Programme  =  SY – REPID
            I_StructureName              =  ‘VBAK’
            IT_Events                          =  I_EVENTS
        Tables
            T_OutTab                          =  I_VBAK.
  HIERARCHIAL  ALV’s:
  Create User-Defined Types for  Header Data and Item Data.
  Write the code in Subroutines for Header data and Item Data.
  Create the Fieldcatalog .
  Create subroutine for Hierarchy.
           Form Create_Hierarchy.
                Key – Header01  =  ‘VBELN’.
                Key – Item01       =  ‘VBELN’.
            EndForm.
  Finally,For Display Exports Header Data, Item Data, and Fieldcatalog to the function module  REUSE_ALV_HIERSEQ_LIST_DISPLAY.

  Call Function  ‘REUSE_ALV_HIERSEQ_LIST_DISPLAY’
        Exporting
            I_Callback_Program       =  SY – REPID
            IT_Fieldcat                       =  I_FCAT
            I_Tabname_Header         =  ‘I_VBAK’
            I_Tabname_Item              =  ‘I_VBAP’
            Is_KeyInfo                        =  KEY
        Tables
            T_Outtab_Header            =  I_VBAK


            T_Outtab_Item                 =  I_VBAP.
Previous
Next Post »