Вы находитесь на странице: 1из 3

By Swarna S, Tata Consultancy Services *&---------------------------------------------------------------------* *& Report Z_TRANPOSEALV * *& Author : Swarna.S.

*&---------------------------------------------------------------------* *& AS: This simple ALV report display is in a transposed way *& Publised at SAPTechnical.com *&---------------------------------------------------------------------* REPORT Z_TRANSPOSEALV * Type pools declaration for ALV TYPE-POOLS: slis. *Declarations for ALV, dynamic table and col no for transpose DATA: l_col TYPE sy-tabix, l_structure TYPE REF TO data, l_dyntable TYPE REF TO data, wa_lvc_cat TYPE lvc_s_fcat, lt_lvc_cat TYPE lvc_t_fcat, lt_fieldcatalogue TYPE slis_t_fieldcat_alv, wa_fieldcat TYPE slis_fieldcat_alv, lt_fieldcat TYPE slis_t_fieldcat_alv, lt_layout TYPE slis_layout_alv. *Field symbols declarations FIELD-SYMBOLS : <header> TYPE ANY, <dynheader> TYPE ANY, <dyndata> TYPE ANY, <ls_table> TYPE ANY, <dynamictable> TYPE STANDARD TABLE, <it_table> TYPE STANDARD TABLE. *Input the name of the table PARAMETERS p_table TYPE dd02l-tabname OBLIGATORY. *Initialization event INITIALIZATION. *Start of selection event START-OF-SELECTION. * Create internal table of dynamic type CREATE DATA l_dyntable TYPE STANDARD TABLE OF (p_table) WITH NON-UNIQUE DEFAULT KEY. ASSIGN l_dyntable->* TO <it_table>. *select statement to select data from the table as input into *our dynamic internal table. *Here i have restricted only till 5 rows. *You can set a variable and give no of rows to be fetched *The variable can be set in your select statement SELECT * INTO CORRESPONDING FIELDS OF TABLE <it_table> FROM (p_table) up to 5 rows. *Fieldcatalogue definitions wa_lvc_cat-fieldname = 'COLUMNTEXT'. .

wa_lvc_cat-ref_table = 'LVC_S_DETA'. APPEND wa_lvc_cat TO lt_lvc_cat. wa_fieldcat-fieldname = 'COLUMNTEXT'. wa_fieldcat-ref_tabname = 'LVC_S_DETA'. wa_fieldcat-key = 'X'.. APPEND wa_fieldcat TO lt_fieldcat. DESCRIBE TABLE <it_table>. DO sy-tfill TIMES. For each line, a column 'VALUEx' is created in the fieldcatalog Build Fieldcatalog WRITE sy-index TO wa_lvc_cat-fieldname LEFT-JUSTIFIED. CONCATENATE 'VALUE' wa_lvc_cat-fieldname INTO wa_lvc_cat-fieldname. wa_lvc_cat-ref_field = 'VALUE'. wa_lvc_cat-ref_table = 'LVC_S_DETA'. APPEND wa_lvc_cat TO lt_lvc_cat. * Build Fieldcatalog CLEAR wa_fieldcat. wa_fieldcat-fieldname = wa_lvc_cat-fieldname. wa_fieldcat-ref_fieldname = 'VALUE'. wa_fieldcat-ref_tabname = 'LVC_S_DETA'. APPEND wa_fieldcat TO lt_fieldcat. ENDDO. * * * Create dynamic internal table CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = lt_lvc_cat IMPORTING ep_table = l_dyntable. ASSIGN l_dyntable->* TO <dynamictable>. * Create structure as structure of the internal table CREATE DATA l_structure LIKE LINE OF <dynamictable>. ASSIGN l_structure->* TO <header>. * Create structure = structure of the internal table CREATE DATA l_structure LIKE LINE OF <it_table>. ASSIGN l_structure->* TO <ls_table>. * Create field catalog from our table structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_structure_name = p_table CHANGING ct_fieldcat = lt_fieldcatalogue EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. DESCRIBE TABLE lt_fieldcatalogue.

* Fill the internal to display <dynamictable> DO sy-tfill TIMES. IF sy-index = 1. READ TABLE lt_fieldcatalogue INTO wa_fieldcat INDEX 1. ENDIF. * For each field of it_table ASSIGN COMPONENT 1 OF STRUCTURE <header> TO <dynheader>. IF sy-subrc NE 0. EXIT .ENDIF. READ TABLE lt_fieldcatalogue INTO wa_fieldcat INDEX sy-index. * Fill 1st column <dynheader> = wa_fieldcat-seltext_m. IF <dynheader> IS INITIAL. <dynheader> = wa_fieldcat-fieldname. ENDIF. *Filling the other columns LOOP AT <it_table> INTO <ls_table>. l_col = sy-tabix + 1. ASSIGN COMPONENT sy-index OF STRUCTURE <ls_table> TO <dyndata>. IF sy-subrc NE 0. EXIT .ENDIF. ASSIGN COMPONENT l_col OF STRUCTURE <header> TO <dynheader>. IF sy-subrc NE 0. EXIT .ENDIF. WRITE <dyndata> TO <dynheader> LEFT-JUSTIFIED. ENDLOOP. APPEND <header> TO <dynamictable>. ENDDO. *Layout for ALV output lt_layout-zebra = 'X'. lt_layout-no_colhead = 'X'.. lt_layout-colwidth_optimize ='X'. lt_layout-window_titlebar = 'ALV GRID TRANSPOSED'. *ALV Grid output for display CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING is_layout = lt_layout it_fieldcat = lt_fieldcat TABLES t_outtab = <dynamictable>.

Вам также может понравиться