Die Baumstruktur besteht aus folgenden Bereichen:
· Die Struktur
Die Struktur wird durch die so genannte Initialtabelle vorgegeben, die Sie mit der FACTORY-Methode angeben. Sie wird dargestellt durch die Spaltentitel, also der obersten Zeile der Baumstruktur. Jeder Knoten einer Baumstruktur besitzt exakt die Struktur, die durch die Initialtabelle vorgegeben ist.
· Hierarchiespalte
Die erste Spalte der Baumstruktur ist immer die Hierarchiespalte. Sie ist nicht Bestandteil der Initialtabelle. Sie enthält Symbole, über die der Nutzer untere Ebenen eines Knotens ein- oder ausblenden kann. Sie können durch unterschiedliche Ikonen anzeigen, ob ein Knoten ein Zweig mit Unterknoten oder ein Blatt ist.
Standardmäßig enthält die Hierarchiespalte keinen Text. Sie können jedoch zu jedem Knoten festlegen, welcher Text in der Hierarchiespalte erscheinen soll.
· Knoten
Die eigentlichen Einträge der Baumstruktur sind so genannte Knoten. Jeder Knoten besitzt dieselbe Struktur wie die Initialtabelle. Jeder Knoten ist durch einen Schlüssel eindeutig gekennzeichnet.
Ein Knoten kann entweder Blatt oder Zweig sein: Zweige enthalten als Unterknoten entweder weitere Zweige oder Blätter, die nicht mehr weiter untergliedert sind.
· Item
Items sind die Bestandteile eines Knotens: Jeder Knoten enthält exakt so viele Items, wie die Initialtabelle Spalten enthält. Somit können Sie Items mit den Einträgen einer Spalte vergleichen.
Aufgrund des abweichenden Datenmodells können Sie zur Baumstruktur einige Einstellungen vornehmen, die in den anderen ALV-Werkzeugen nicht zur Verfügung stehen.
Zur Hierarchiespalte können Sie folgende Einstellungen vornehmen:
· Spaltentitel festlegen (Abschnitt Wortlaut des Spaltentitels festlegen)
· Ikone in den Spaltentitel einfügen (Abschnitt Ikone anzeigen)
· ToolTip zum Spaltentitel festlegen (Abschnitt ToolTip zum Spaltentitel festlegen)
· Text zu den Knoten festlegen
· Ikonen für auf- und zugeklappte Zweige festlegen
· Blatt als Zweig darstellen
Zu den Knoten können Sie folgende Einstellungen vornehmen:
· Knotenobjekte holen
· Knoten erzeugen, verschieben und löschen
· Zweige auf- und zuklappen
Zu Items können Sie folgende Einstellungen vornehmen:
· Wert festlegen
· Darstellung des Items festlegen
· Markierbarkeit festlegen
Für alle der folgenden Funktionen gilt:
Darstellungsart ALV-Werkzeug |
Klass. ABAP-Liste |
Fullscreen |
Im Container |
Einfache, zweidimensionale Tabelle |
Nein |
Nein |
Nein |
Hierarchisch-sequenzielle Liste |
Nein |
|
|
Baumstruktur |
|
Ja |
Ja |
Jeder Knoten wird durch ein Objekt der Klasse CL_SALV_NODE repräsentiert, die Gesamtheit aller Knoten durch das Objekt der Klasse CL_SALV_NODES.
Durch verschiedene Getter-Methoden erhalten Sie die Referenzen auf das gewünschte Knotenobjekt:
Funktion |
Klasse |
Methode |
Gesamtheit aller Knoten |
CL_SALV_TREE |
GET_NODES |
Liste aller Knotenobjekte sowie deren Schlüssel |
CL_SALV_NODES |
GET_ALL_NODES |
Bestimmten Schlüssel |
GET_NODE |
|
Obersten Knoten |
GET_TOP_NODE |
|
Liste aller Unterknoten sowie deren Schlüssel |
CL_SALV_NODE |
GET_SUBTREE GET_CHILDREN |
Schlüssel des Knotens holen |
GET_KEY |
|
Verwandten Knoten |
GET_PARENT GET_FIRST_CHILD GET_LAST_CHILD GET_PREVIOUS_SIBLING GET_NEXT_SIBLING |
Während Sie bei den beiden ALV-Werkzeugen einfache, zweidimensionale Tabelle und hierarchisch-sequenzielle Liste ganze Tabellen mit einem Befehl anzeigen, müssen Sie bei der Baumstruktur jeden Knoten einzeln erzeugen. Dazu machen Sie mindestens folgende Angaben:
·
Den Inhalt des Knotens, den Sie einfügen
möchten.
Der neue Knoten muss exakt die Struktur besitzen, die durch die Initialtabelle
vorgegeben ist.
·
Einen Bezugsknoten
Jeder Knoten ist durch einen eindeutigen Schlüssel gekennzeichnet. Wenn noch
kein Knoten in der Baumstruktur vorhanden ist, existiert dennoch der so
genannte oberste Knoten. Der oberste Knoten besitzt standardmäßig als
Schlüssel eine leere Zeichenkette. Sie fügen den neuen Knoten an einer
Position relativ zu dem Bezugsknoten ein.
·
Die Beziehung des neuen Knotens zum
Bezugsknotens
Sie können den neuen Knoten an einer der folgenden Positionen relativ zum
Bezugsknoten einfügen:
Methoden
Funktion |
Klasse |
Methode |
Knoten hinzufügen |
CL_SALV_NODES |
ADD_NODE |
Obersten Knoten ändern |
SET_TOP_NODE |
|
Knoten innerhalb der Baumstruktur an eine andere Position verschieben |
CL_SALV_NODE |
MOVE |
Knoten mit all seinen Unterknoten löschen |
DELETE |
|
Alle Knoten der Baumstruktur löschen |
CL_SALV_NODES |
DELETE_ALL |
Die Hierarchiespalte ist nicht Bestandteil der Initialtabelle. Somit können Sie Texte darin nicht über die Inhalte der Datentabelle steuern. Die Texte in der Hierarchiespalte legen Sie für jeden Knoten einzeln fest.
Methoden
Funktion |
Klasse |
Methode |
Text in der Hierarchiespalte festlegen |
CL_SALV_NODE |
SET_TEXT |
aktuellen Text in der Hierarchiespalte holen |
GET_TEXT |
Standardmäßig wird ein Knoten, der Unterknoten enthält, mit einer Ikone gekennzeichnet, die einen Ordner darstellt. Je nachdem ob der Knoten auf- oder zugeklappt ist, ändert sich die Ikone. Sie können für beide Ikonen eine andere Grafik verwenden. Die beiden Ikonen legen Sie für jeden Knoten einzeln fest.
Methoden
Funktion |
Klasse |
Methode |
Ikone für aufgeklappten Zweig festlegen |
CL_SALV_NODE |
SET_EXPANDED_ICON |
Ikone für zugeklappten Zweig festlegen |
SET_COLLAPSED_ICON |
|
Ikone für aufgeklappten Zweig holen |
GET_EXPANDED_ICON |
|
Ikone für zugeklappten Zweig holen |
GET_COLLAPSED_ICON |
Sie können aus Gründen der Geschwindigkeit einen Knoten als Zweig darstellen, obwohl er keine Unterknoten besitzt. Erst, wenn der Nutzer diesen Knoten aufklappt, fügen Sie die Unterknoten hinzu.
Ein Knoten, der als Zweig dargestellt wird, obwohl er keine Unterknoten enthält, wird auch als leerer Ordner bezeichnet.
Methoden
Funktion |
Klasse |
Methode |
Anstelle der Ikone für Blätter die Ikone für kollabierte Zweige anzeigen |
CL_SALV_NODE |
SET_FOLDER |
Prüfen, ob der Knoten ein leerer Ordner ist |
IS_FOLDER |
|
In leerem Ordner einen Expander anzuzeigen |
SET_EXPANDER |
|
Prüfen, ob ein leerer Ordner einen Expander besitzt |
HAS_EXPANDER |
Wenn der Nutzer einen leeren Ordner aufklappt, tritt das Ereignis EXPAND_EMPTY_FOLDER der Klasse CL_SALV_EVENTS_TREE ein.
Sie können die Zweige der Baumstruktur einzeln oder gemeinsam auf- und zuklappen. Darüber hinaus können Sie einen Knoten oder ein Item vollständig unsichtbar machen.
Methoden
Funktion |
Klasse |
Methode |
einzelnen Zweig aufklappen |
CL_SALV_NODE |
EXPAND |
einzelnen Zweig zuklappen |
COLLAPSE |
|
Alle Zweige aufklappen |
CL_SALV_NODES |
EXPAND_ALL |
Alle Zweige zuklappen |
COLLAPSE_ALL |
|
Sichtbarkeit eines Knotens ändern |
CL_SALV_NODE |
SET_VISIBLE |
Prüfen, ob der Knoten sichtbar ist |
IS_VISIBLE |
|
Sichtbarkeit eines Items ändern |
CL_SALV_ITEM |
SET_VISIBLE |
Prüfen, ob das Item sichtbar ist |
IS_VISIBLE |
Während Sie bei den beiden ALV-Werkzeugen einfache, zweidimensionale Tabelle und hierarchisch-sequenzielle Liste Inhalte durch Ändern der übergebenen Tabelle ändern, erfolgen Änderungen in der Baumstruktur auf Knoten- oder Item-Ebene.
Wenn Sie den Inhalt des gesamten Knotens austauschen, muss die Struktur des neuen exakt mit der übereinstimmen, die durch die Initialtabelle vorgegeben wird.
Methoden
Funktion |
Klasse |
Methode |
Inhalt eines Knotens ändern |
CL_SALV_NODE |
SET_DATA_ROW |
Inhalt eines Knotens holen |
GET_DATA_ROW |
|
Inhalt eines Items ändern |
CL_SALV_ITEM |
SET_VALUE |
Inhalt eines Items holen |
GET_VALUE |
Sie können in den Items der Baumstruktur nicht nur Text darstellen. Mit dem Typ des Items können Sie festlegen, dass darin eines der folgenden Elemente dargestellt wird:
· Voreinstellung
· Text
· Ankreuzfeld
· Drucktaste
· Querverweis
· Ikone
Für die Typen Ankreuzfeld (CHECKBOX), Drucktaste (BUTTON) und Querverweis (LINK) stehen Ereignisse zur Verfügung, um Interaktionen durch den Nutzer behandeln zu können.
Der Nutzer kann nur den Wert solcher Ankreuzfelder ändern, die aktiviert sind.
Methoden
Funktion |
Klasse |
Methode |
Typ eines Items festlegen |
CL_SALV_ITEM |
SET_TYPE |
aktuellen Typ des Items holen |
GET_TYPE |
|
Wert eines Ankreuzfeldes ändern |
SET_CHECKED |
|
Wert einer Checkbox prüfen |
IS_CHECKED |
|
Ankreuzfeld aktivieren, so dass der Nutzer interaktiv den Wert ändern kann |
SET_EDITABLE |
|
Prüfen, ob ein Ankreuzfeld aktiviert ist |
IS_EDITABLE |
|
Ikone einfügen |
SET_ICON |
|
Ikone holen |
GET_ICON |
Um in einem Item eine Ikone darzustellen, gehen Sie wie folgt vor:
¡ Sie weisen dem Item den Typ Voreinstellung (DEFAULT) zu
¡ Sie stellen sicher, dass der Inhalt des Items ein zulässiger Bezeichner der gewünschten Ikone ist (z. B. @AB@)
¡ Sie verwenden in der Klasse CL_SALV_ITEM die Methode SET_ICON
¡ Wenn der Nutzer den Wert eines Ankreuzfeldes ändert, tritt das Ereignis CHECKBOX_CHANGE der Klasse CL_SALV_EVENTS_TREE ein.
¡ Wenn der Nutzer auf ein Item vom Typ Drucktaste (BUTTON) oder Querverweis (LINK) klickt, tritt das Ereignis LINK_CLICK der Klasse CL_SALV_EVENTS_TREE ein.
Standardmäßig kann der Nutzer ein Item markieren, indem er hineinklickt oder die Tabulatortaste drückt. Sie können festlegen, dass ein Item für den Nutzer nicht markierbar ist.
Methoden
Funktion |
Klasse |
Methode |
Markierbarkeit eines Items festlegen |
CL_SALV_ITEM |
SET_ENABLED |
Markierbarkeit prüfen |
IS_ENABLED |