Mit dem Gestaltungsobjekt gestalten Sie die Bereiche außerhalb Ihrer ALV-Ausgabe.
Sie stellen aus einer Vielzahl von Elementen unterschiedlichen Typs ein Gestaltungsobjekt zusammen und zeigen es dann an.
Folgende Elementtypen können Sie verwenden:
● Überschriftenelement (Header-Info)
● Textelement mit oder ohne Label (Bezeichner des Textes)
● Aktionsinformation (Action-Info)
Die Elemente unterscheiden sich nur durch unterschiedliches Aussehen. Es sind keine Funktionen mit den verschiedenen Elementtypen verbunden.
Diese Elemente können Sie innerhalb Ihres Gestaltungsobjekts anordnen. Dazu wählen Sie zwischen zwei Layout-Formen:
●
Zeilenartiges Layout
Alle Elemente werden hintereinander in einer Zeile
aneinandergereiht.
●
Tabellenartiges Layout
Sie ordnen die einzelnen Elemente in Zeilen und Spalten an.
Sie können diese beiden Layout-Formen beliebig miteinander kombinieren, also Zeilen in eine Tabelle einfügen und umgekehrt.
Für Top of List, Top of Page und End of Page darf ein Gestaltungsobjekt maximal eine Seite lang sein. Ist das Gestaltungsobjekt länger, erfolgt je nach Position des Gestaltungsobjekts entweder ein Laufzeitfehler oder andere unerwünschte Auswirkungen auf die Anzeige der ALV-Ausgabe.
Für End of List existiert keine Längenbeschränkung.
Für das Gestaltungsobjekt in Top of List können Sie einen speziellen Modus einschalten, der auch Zeilenumbrüche innerhalb des Gestaltungsobjekts ermöglicht (siehe Listenkopf und -fuß anzeigen).
Standardmäßig umfasst eine Seite 65 Zeilen. Stellen Sie sicher, dass das Gestaltungsobjekt weniger als 65 Zeilen enthält.
Für jeden der Elementtypen steht Ihnen eine Klasse zur Verfügung:
Klassen der Elementtypen und Layouts
Layout |
Klasse |
Zeilenartiges Layout |
CL_SALV_FORM_LAYOUT_FLOW |
Tabellenartiges Layout |
CL_SALV_FORM_LAYOUT_GRID |
Elementtyp |
Klasse |
Aktionsinformation |
CL_SALV_FORM_ACTION_INFO |
Überschrift |
CL_SALV_FORM_HEADER_INFO |
Label |
CL_SALV_FORM_LABEL |
Text |
CL_SALV_FORM_TEXT |
Je nachdem, aus wie vielen Elementen Ihr Gestaltungsobjekt besteht, gehen Sie unterschiedlich vor:
● Wenn Sie nur ein Element darstellen möchten, erzeugen Sie das entsprechende Objekt.
● Wenn Sie mehrere Elemente darstellen möchten, erzeugen Sie die gewünschten Elemente mit den Methoden des zeilen- bzw. des tabellenartigen Layout-Elements und geben dabei auch die gewünschte Position innerhalb des Layout-Elements an.
Für die Layout-Formen stehen folgende Funktionen zur Verfügung:
Methoden
Funktion |
Klasse |
Methode |
Element des gewünschten Typs erzeugen |
CL_SALV_FORM_LAYOUT_ CL_SALV_FORM_LAYOUT_ |
CREATE_* |
Element verschieben |
SET_ELEMENT |
|
Elemente zählen |
GET_ELEMENT_COUNT |
|
Zellen verbinden |
CL_SALV_FORM_LAYOUT_ |
CREATE_* SET_ELEMENT |
Linien zwischen Spalten und Zeilen einblenden |
SET_GRID_LINES |
|
Anzahl der Spalten und Zeilen holen |
GET_COLUMN_COUNT GET_ROW_COUNT |
|
Festlegen, welche Spalte die Labels und welche Spalte die zugehörigen Texte enthält |
SET_COLUMN_LABEL_FOR |
|
Zeile hinzufügen |
ADD_ROW |
Für die Elementtypen stehen Ihnen weitgehend identische Funktionen zur Verfügung:
Methoden
Funktion |
Klasse |
Methode |
Text eingeben |
CL_SALV_FORM_ACTION_INFO CL_SALV_FORM_HEADER_INFO CL_SALV_FORM_LABEL CL_SALV_FORM_TEXT |
SET_TEXT |
ToolTip eingeben |
SET_TOOLTIP |
|
Ausrichtung innerhalb einer Zelle festlegen |
SET_HORIZONTAL_ GET_HORIZONTAL_ |
|
Festlegen, zu welchem Textelement das Label gehört |
CL_SALV_FORM_LABEL |
SET_LABEL_FOR GET_LABEL_FOR |
Das folgende Beispiel zeigt, wie Sie ein Element vom Typ Text am Ende der ALV-Ausgabe anzeigen:
...
*... END_OF_LIST
data: lr_text type ref to cl_salv_form_text.
create object lr_text
exporting
text = 'MyText'.
gr_table->set_end_of_list( lr_text ).
...
Das folgende Beispiel zeigt, wie Sie ein Gestaltungsobjekt mit tabellenartigem Layout zu Beginn der ALV-Ausgabe einsetzen:
...
*... TOP_OF_LIST
data: lr_text type ref to cl_salv_form_text.
data: lr_label type ref to cl_salv_form_label.
data: lr_grid type ref to cl_salv_layout_grid.
create object lr_grid.
lr_label = lr_grid->create_label(
text = '1.1 LABEL'
row = 1
column = 1 ).
lr_text = lr_grid->create_text(
text = '1.2 TEXT'
row = 1
column = 2 ).
lr_label->set_label_for( lr_text ).
lr_text = lr_grid->create_text(
text = '2.2 TEXT'
row = 2
column = 2 ).
gr_table->set_top_of_list( lr_grid ).
...