Zum Inhalt springen

Doppelt hält besser: Zwei ALV im Splitting Container untereinander anzeigen

Ab und an kommt es zu Anforderungen wo es schön wäre 2 bis X ALV als Ausgabe eines klassischen Reports anzuzeigen. Das natürlich ohne Aufwand. Die einfachste, kürzeste und eleganteste Lösung die ich dafür bis jetzt gefunden habe ist relativ schnell übernehmbar.

FIELD-SYMBOLS <fs_table> TYPE STANDARD TABLE.
DATA(lo_splitter) = NEW cl_gui_splitter_container( 
                            parent = cl_gui_container=>default_screen
                            no_autodef_progid_dynnr = abap_true
                            rows                    = 2
                            columns                 = 1 ).

lo_splitter->set_row_height( id = 1 height = 50 ).

DATA(lo_oben) = lo_splitter->get_container( row = 1 column = 1 ).
DATA(lo_unten) = lo_splitter->get_container( row = 2 column = 1 ).

DO 2 TIMES.

IF sy-index = 1.
  ASSIGN mt_table1 TO <fs_table>.
ELSEIF sy-index = 2.
  ASSIGN mt_table2 TO <fs_table>.
ENDIF.

DATA(lo_container) = SWITCH #( sy-index WHEN 1 THEN lo_oben WHEN 2 THEN lo_unten ).

cl_salv_table=>factory( EXPORTING
                                r_container  = lo_container
                        IMPORTING
                                r_salv_table = DATA(lo_salv)
                        CHANGING
                                t_table      = <fs_table>
                        ).

lo_salv->get_functions( )->set_all( abap_true ).
lo_salv->get_columns( )->set_optimize( abap_true ).
lo_salv->get_display_settings( )->set_list_header( 
SWITCH #( sy-index WHEN 1 THEN 'Tabelle 1' WHEN 2 THEN 'Tabelle 2' )    ).

LOOP AT lo_salv->get_columns( )->get( ) ASSIGNING FIELD-SYMBOL(<fs_column>).
        DATA(lo_col) = <fs_column>-r_column.
        lo_col->set_long_text( |{ lo_col->get_columnname( ) }| ).
ENDLOOP.

lo_salv->display( ).
ENDDO.

cl_abap_list_layout=>suppress_toolbar( ).

WRITE: space.
Facebooktwitterpinterestlinkedinmail
Published inABAPSAP Entwicklung

Sei der Erste der einen Kommentar abgibt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert