REPORT z_alv_list_transposed. *---------------------------------------------------------------------* * This report displays an ALV Grid list transposed. It can be easely * * adapted to your needs, just replace SPFLI by another DDIC table * *---------------------------------------------------------------------* * Author : Michel PIOUD - Updated 19-Nov-07 * * HomePage : http://www.oocities.org/mpioud * *---------------------------------------------------------------------* TYPE-POOLS: slis. " ALV Global types SELECTION-SCREEN : SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED PARAMETERS p_max(2) TYPE n DEFAULT '10' OBLIGATORY. SELECTION-SCREEN END OF LINE. DATA gt_data TYPE TABLE OF spfli. *---------------------------------------------------------------------* INITIALIZATION. v_1 = 'Maximum of records to read'. *---------------------------------------------------------------------* START-OF-SELECTION. PERFORM f_read_data. *---------------------------------------------------------------------* END-OF-SELECTION. PERFORM f_display_data. *---------------------------------------------------------------------* * Form f_read_data *---------------------------------------------------------------------* FORM f_read_data. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_data UP TO p_max ROWS FROM spfli. ENDFORM. " F_READ_DATA *---------------------------------------------------------------------* * Form F_DISPLAY_DATA *---------------------------------------------------------------------* FORM f_display_data. DATA: l_column TYPE sy-tabix, lp_struct TYPE REF TO data, lp_table TYPE REF TO data, " Pointer to dynamic table ls_lvc_cat TYPE lvc_s_fcat, lt_lvc_cat TYPE lvc_t_fcat, " Field catalog lt_fcat TYPE slis_t_fieldcat_alv, " Field catalog ls_fieldcat TYPE slis_fieldcat_alv, lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog ls_layout TYPE slis_layout_alv, ls_data LIKE LINE OF gt_data. FIELD-SYMBOLS : <header> TYPE ANY, <field_header> TYPE ANY, <field_spfli> TYPE ANY, <lt_data> TYPE STANDARD TABLE." Data to display ls_lvc_cat-fieldname = 'COLUMNTEXT'. ls_lvc_cat-ref_table = 'LVC_S_DETA'. APPEND ls_lvc_cat TO lt_lvc_cat. ls_fieldcat-fieldname = 'COLUMNTEXT'. ls_fieldcat-ref_tabname = 'LVC_S_DETA'. ls_fieldcat-key = 'X'. APPEND ls_fieldcat TO lt_fieldcat. DESCRIBE TABLE gt_data. DO sy-tfill TIMES. * For each line, a column 'VALUEx' is created in the fieldcatalog * Build Fieldcatalog WRITE sy-index TO ls_lvc_cat-fieldname LEFT-JUSTIFIED. CONCATENATE 'VALUE' ls_lvc_cat-fieldname INTO ls_lvc_cat-fieldname. ls_lvc_cat-ref_field = 'VALUE'. ls_lvc_cat-ref_table = 'LVC_S_DETA'. APPEND ls_lvc_cat TO lt_lvc_cat. * Build Fieldcatalog CLEAR ls_fieldcat. ls_fieldcat-fieldname = ls_lvc_cat-fieldname. ls_fieldcat-ref_fieldname = 'VALUE'. ls_fieldcat-ref_tabname = 'LVC_S_DETA'. APPEND ls_fieldcat TO lt_fieldcat. ENDDO. * Create internal table CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = lt_lvc_cat IMPORTING ep_table = lp_table. ASSIGN lp_table->* TO <lt_data>. * Create structure = structure of the internal table CREATE DATA lp_struct LIKE LINE OF <lt_data>. ASSIGN lp_struct->* TO <header>. * Create field catalog from dictionary structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_structure_name = 'SPFLI' CHANGING ct_fieldcat = lt_fcat 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_fcat. * Fill the internal to display <lt_data> DO sy-tfill TIMES. IF sy-index = 1. READ TABLE lt_fcat INTO ls_fieldcat INDEX 1. IF ls_fieldcat-fieldname = 'MANDT'. * If 1st column is MANDT, it's not displayed CONTINUE. ENDIF. ENDIF. * For each field of GT_DATA ASSIGN COMPONENT 1 OF STRUCTURE <header> TO <field_header>. IF sy-subrc NE 0. EXIT .ENDIF. READ TABLE lt_fcat INTO ls_fieldcat INDEX sy-index. * Fill 1st column <field_header> = ls_fieldcat-seltext_m. IF <field_header> IS INITIAL. <field_header> = ls_fieldcat-fieldname. ENDIF. LOOP AT gt_data INTO ls_data. l_column = sy-tabix + 1. ASSIGN COMPONENT sy-index OF STRUCTURE ls_data TO <field_spfli>. IF sy-subrc NE 0. EXIT .ENDIF. ASSIGN COMPONENT l_column OF STRUCTURE <header> TO <field_header>. IF sy-subrc NE 0. EXIT .ENDIF. WRITE <field_spfli> TO <field_header> LEFT-JUSTIFIED. ENDLOOP. APPEND <header> TO <lt_data>. ENDDO. ls_layout-zebra = 'X'. ls_layout-no_colhead = 'X'. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING is_layout = ls_layout it_fieldcat = lt_fieldcat TABLES t_outtab = <lt_data>. ENDFORM. " F_DISPLAY_DATA ************ END OF PROGRAM Z_ALV_LIST_TRANSPOSED *********************