[ABAP] SALV-Table: Header und Footer hinzufügen

* http://zevolving.com/2008/09/salv-table-5-add-header-top-of-page-footer-end-of-page/

* Beispieldaten
SELECT * FROM t000 INTO TABLE @DATA(it_t000).

TRY.
* SALV-Table
    DATA: o_salv TYPE REF TO cl_salv_table.

    cl_salv_table=>factory( IMPORTING
                              r_salv_table   = o_salv
                            CHANGING
                              t_table        = it_t000 ).

* Grid-Header
    DATA(o_grid_header) = NEW cl_salv_form_layout_grid( ).

* Überschrift
    o_grid_header->create_header_information( row     = 1
                                              column  = 1
                                              text    = 'Überschrift'
                                              tooltip = 'Tooltip' ).

* Kursivtext
    o_grid_header->create_action_information( row     = 2
                                              column  = 1
                                              text    = 'Action-Überschrift'
                                              tooltip = 'Tooltip' ).

* Fließtext
    o_grid_header->create_flow( EXPORTING row = 3 column = 1 )->create_text( text = 'Flow:').
    o_grid_header->create_flow( EXPORTING row = 3 column = 2 )->create_text( text = 'Test').

* Groupbox 1
    DATA(o_grp_sel) = NEW cl_salv_form_groupbox( header = 'Text 1' ).
    o_grid_header->set_element( row = 4 column = 1 r_element = o_grp_sel ).

    DATA(o_grp_head_grid) = o_grp_sel->create_grid( ).
    o_grp_head_grid->set_grid_lines( if_salv_form_c_grid_lines=>no_lines ).

* Label + Text
    DATA(o_label_v) = o_grp_head_grid->create_label( row = 1 column = 1 text = |Jahr:| ).
    DATA(o_text_v) = o_grp_head_grid->create_text( row = 1 column = 2 text = |2000| ).
    o_label_v->set_label_for( o_text_v ).

* Label + Text
    DATA(o_label_l) = o_grp_head_grid->create_label( row = 1 column = 3 text = |Auswahl:| ).
    DATA(o_text_l) = o_grp_head_grid->create_text( row = 1 column = 4 text = |X| ).
    o_label_l->set_label_for( o_text_l ).

    o_salv->set_top_of_list( o_grid_header ).

* Grid-Footer
    DATA(o_grid_footer) = NEW cl_salv_form_layout_grid( ).

* Fließtext
    o_grid_footer->create_flow( EXPORTING row = 3 column = 1 )->create_text( text = 'Name:').
    o_grid_footer->create_flow( EXPORTING row = 3 column = 2 )->create_text( text = 'Horst').

* Label + Text
    DATA(o_label_cnt) = o_grid_footer->create_label( row = 1 column = 1 text = |Alter:| ).
    DATA(o_text_cnt) = o_grid_footer->create_text( row = 1 column = 2 text = |67| ).
    o_label_cnt->set_label_for( o_text_cnt ).

    o_salv->set_end_of_list( o_grid_footer ).

* SALV-Table anzeigen
    o_salv->display( ).
  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

[ABAP] Dynamische Dokumente mit SALV-Form LayoutGrid / ABAP-Renderer erstellen

START-OF-SELECTION.

* Grid
  DATA(o_grid) = NEW cl_salv_form_layout_grid( ).

* Gridlines
  o_grid->set_grid_lines( if_salv_form_c_grid_lines=>lines ).

* Header (Überschrift), Colspan
  DATA(o_head) = o_grid->create_header_information( row = 1
                                                    column = 1
                                                    text = 'Überschrift'
                                                    colspan = 2 ).

* Header Align Center
  DATA: o_al_head TYPE REF TO cl_salv_form_layout_data_grid.
  o_al_head ?= o_head->get_layout_data( ).
  o_al_head->set_h_align( if_salv_form_c_h_align=>center ).

* Text
  DATA(o_text) = o_grid->create_text( row = 2
                                      column  = 2
                                      text    = 'Right'
                                      tooltip = 'Right' ).

* Text Align Right
  DATA: o_al_text TYPE REF TO cl_salv_form_layout_data_grid.
  o_al_text ?= o_text->get_layout_data( ).
  o_al_text->set_h_align( if_salv_form_c_h_align=>right ).

* GroupBox
  DATA(o_grp1) = NEW cl_salv_form_groupbox( header = 'My Groupbox 1' ).
  o_grid->set_element( row = 3
                       column = 1
                       r_element = o_grp1 ).

  DATA(o_grp_grid) = o_grp1->create_grid( ).
  o_grp_grid->set_grid_lines( if_salv_form_c_grid_lines=>lines ).
  o_grp_grid->create_text( row = 1
                           column = 1
                           text = 'Icon' ).

* Icon
  DATA(o_icon) = NEW cl_salv_form_icon( icon = icon_header
                                        tooltip = 'Tooltip for Icon' ).

  o_grp_grid->set_element( row       = 1
                           column    = 2
                           r_element = o_icon ).

* Label, Text
  DATA(o_label) = o_grid->create_label( row = 4
                                        column = 1
                                        text = 'Name:' ).
  o_text = o_grid->create_text( row = 4
                                column = 2
                                text = 'Herr Mayer' ).
  o_label->set_label_for( o_text ).

* Row
  DATA(o_row) = o_grid->add_row( ).
  o_label = o_row->create_label( text = 'Firma:' ).
  o_text = o_row->create_text( text = 'Beier' ).
  o_label->set_label_for( o_text ).

* HTML-Renderer
  DATA(o_form) = NEW cl_salv_form_window_dydos( popup = abap_true     " als modales Fenster anzeigen, nicht verfügbar bei cl_salv_form_window_abap
                                                r_content = o_grid ).

* Status
  DATA(o_status) = o_form->get_status( ).
  o_status->set_titlebar( titlebar       = 'FORM1_TITLE'              " GUI-Titel der Anwendung muss gepflegt sein
                          titlebar_repid = sy-repid ).

* Display
  o_form->display( ).