Zugriff auf mehrzeilige
Containerelemente
Im Datenflusseditor können Sie mittels Ausdrücken auf mehrzeilige Containerelemente (interne Tabellen) zugreifen. Sie haben folgende Zugriffsmöglichkeiten:
|
Element der int. Tabelle |
Zugriff per |
Syntax |
|
Zeile |
Indexausdruck (Zeilenprojektion) |
&tab[idx_exp ]& |
|
Spalte |
Spaltenprojektion |
&tab.col_name& |
|
Feld |
Kombination aus Indexausdruck und Spaltenprojektion |
&tab[idx_exp].col_name& |
|
Feld, das selbst eine interne Tabelle ist (multidimensionales Array)
|
Iterativer Indexausdruck |
&tab[idx_exp].col_name[idx_exp]& |
Der Indexausdruck idx_exp gibt die gewünschte Zeile an. Der Indexausdruck kann ein beliebiger Ausdruck sein, der einen positiven Wert vom Typ INTEGER liefert, wie z. B. eine Zählervariable.
Liefert der Ausdruck einen Wert kleiner 1 oder verweist er auf eine Zeile, die in der internen Tabelle nicht existiert, kann der Ausdruck nicht ausgewertet werden. Ein solcher Fehler bei der Auswertung wird in das Workflow-Protokoll geschrieben.
Bei der Spaltenprojektion gibt col_name die gewünschte Spalte an. Da die Spalte nicht dynamisch angegeben werden kann, wird eine fehlerhafte Angabe bereits von der Syntaxprüfung entdeckt.
Ein Containerelement mit dem Namen Names ist als interne Tabelle vom Typ SY-UNAME definiert. Die folgende Tabelle zeigt mögliche Zugriffe auf Zeilen der internen Tabelle:
|
Indexzugriff |
Beschreibung |
|
&Names[1]& |
Liefert die erste Zeile der Tabelle. |
|
&Names[&Counter&]& |
Liefert die Zeile der Tabelle, die durch die Zählervariable &Counter& bestimmt wird. |
|
&Names[&my_obj.get_current_idx()&]& |
Liefert die Zeile der Tabelle, die durch die funktionale Methode get_current_idx des Objektes my_obj bestimmt wird. |
Die interne Tabelle users ist wie folgt definiert:
|
Name |
ID |
Street |
|
Thomas |
4711 |
Hauptstraße |
|
Eva |
0815 |
Bahnhofstraße |
|
Paul |
4712 |
Lindenstraße |
&users[2]& liefert die zweite Zeile der Tabelle users:
|
Eva |
0815 |
Bahnhofstraße |
&users.id& liefert die Inhalte der Spalte ID der Tabelle users:
|
4711 |
|
0815 |
|
4712 |
&users[2].id& liefert das Feld ID der zweiten Zeile der Tabelle users:
|
0815 |
Sie haben ein interne Tabelle users definiert. Die Spalte phone_numbers kann für jede Person mehrere Telefonnummern enthalten:
|
name |
phone_numbers |
street |
|
Thomas |
4711 4712 4713 |
Hauptstraße |
|
Eva |
0815 0816 |
Bahnhofstraße |
&users[2].phone_numbers[1]& liefert in der zweiten Zeile der Tabelle users den ersten Eintrag im Feld phone_numbers:
|
0815 |
Sie haben eine interne Tabelle phone_numbers definiert. Die Tabelle besteht pro Zeile aus nur einem Feld. Dieses Feld ist selbst eine interne Tabelle:
|
phone_numbers |
|
4711 4712 4713 |
|
0815 0816 |
&phone_numbers[1][3]& liefert aus der ersten Zeile den dritten Eintrag:
|
4713 |