Quantcast
Viewing all articles
Browse latest Browse all 9656

Re: Generating dynamic columns in ALV Report

Hi Malikarjun,

 

See this code, it will be helpful.

 

*Type pools declaration for ALV
TYPE-POOLS: SLIS.                    " ALV Global Types

*data declaration for dynamic internal table and alv
DATA:     L_STRUCTURE   TYPEREFTODATA,
           L_TABLE    TYPEREFTODATA,
           STRUC_DESC   TYPEREFTO CL_ABAP_STRUCTDESCR,
           LT_LAYOUT   TYPE SLIS_LAYOUT_ALV,
           LS_LVC_FIELDCATALOGUE  TYPE LVC_S_FCAT,
           LT_LVC_FIELDCATALOGUE  TYPE LVC_T_FCAT,
           LS_FIELDCATALOGUE TYPE SLIS_FIELDCAT_ALV,
           LT_FIELDCATALOGUE TYPE SLIS_T_FIELDCAT_ALV.

*field symbols declaration
FIELD-SYMBOLS :
   <IT_TABLE>    TYPESTANDARDTABLE,
   <DYN_STR>         TYPEANY,
   <STR_COMP> TYPE ABAP_COMPDESCR.

*declarations for grid title
DATA : T1(30),
        T2(10),
        T3(50).

*selection screen declaration for table input
PARAMETERS : P_TABLE LIKE DD02L-TABNAME.

*initialization event
INITIALIZATION.

*start of selection event
START-OF-SELECTION.

*texts for grid title
   T1 = 'Dynamic ALV display for table'.
   T2 = P_TABLE.

   CONCATENATE T1 T2 INTO T3 SEPARATEDBY SPACE.

* Dynamic creation of a structure
   CREATEDATA L_STRUCTURE TYPE (P_TABLE).
   ASSIGN L_STRUCTURE->* TO<DYN_STR>.

* Fields Structure
   STRUC_DESC ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( <DYN_STR> ).

   LOOPAT STRUC_DESC->COMPONENTS ASSIGNING<STR_COMP>.
*   Build Fieldcatalog
     LS_LVC_FIELDCATALOGUE-FIELDNAME = <STR_COMP>-NAME.
     LS_LVC_FIELDCATALOGUE-REF_TABLE = P_TABLE.
     APPEND LS_LVC_FIELDCATALOGUE TO LT_LVC_FIELDCATALOGUE.
*   Build Fieldcatalog
     LS_FIELDCATALOGUE-FIELDNAME = <STR_COMP>-NAME.
     LS_FIELDCATALOGUE-REF_TABNAME = P_TABLE.
     APPEND LS_FIELDCATALOGUE TO LT_FIELDCATALOGUE.
   ENDLOOP.

* Create internal table dynamic
   CALLMETHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
     EXPORTING
       IT_FIELDCATALOG = LT_LVC_FIELDCATALOGUE
     IMPORTING
       EP_TABLE        = L_TABLE.

   ASSIGN L_TABLE->* TO<IT_TABLE>.

* Read data from the table selected.

   SELECT * FROM (P_TABLE)
     INTO CORRESPONDING FIELDSOFTABLE<IT_TABLE>.

* ALV Layout
   LT_LAYOUT-ZEBRA = 'X'.
   LT_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
   LT_LAYOUT-WINDOW_TITLEBAR = T3.

*ALV  output
   CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       IS_LAYOUT     = LT_LAYOUT
       IT_FIELDCAT   = LT_FIELDCATALOGUE
     TABLES
       T_OUTTAB      = <IT_TABLE>
     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.

 

Regards,

Ramesh.T


Viewing all articles
Browse latest Browse all 9656

Trending Articles