Anfang des Inhaltsbereichs

Table Controls in der Ablauflogik Dokument im Navigationsbaum lokalisieren

Die Verarbeitung von Table Controls in der Ablauflogik erfolgt mit der sogenannten Steploop-Technik. Dabei werden Schleifen in der Dynproablauflogik ausgeführt wobei die Daten zwischen den Dynprofeldern der Zeile und gleichnamigen Feldern im ABAP-Programm Zeile für Zeile übergeben werden. Die entsprechenden Befehle der Ablauflogik sind:

LOOP ... WITH CONTROL <ctrl>.
  ...
ENDLOOP.

Diese Anweisungen dürfen nicht mit den gleichlautenden ABAP-Anweisungen verwechselt werden. Mit dem Zusatz WITH CONTROL wird für jede Schleife der Name des Table Controls angegeben, der verarbeitet wird. Zwischen LOOP und ENDLOOP können die übrigen Schlüsselwörter FIELD, MODULE, SELECT, VALUES und CHAIN der Ablauflogik verwendet werden.

Während der Schleifen werden die Inhalte des Table Control zwischen gleichnamigen Feldern des ABAP-Programms und des Dynpros hin und her transportiert. Deshalb muß zumindest eine leere LOOP-Schleife für jeden Table Control sowohl im PBO- als auch im PAI-Verarbeitungsblock vorhanden sein. Weiterhin ist zu beachten, daß Table Control-Felder, die mit Dictionary-Bezug definiert sind, im ABAP-Programm wie gehabt mit TABLES als Schnittstellenarbeitsbereiche zu deklarieren sind.

Innerhalb der Schleifen sind zwei Systemfelder von Bedeutung:

Wir unterscheiden zwei prinzipielle Schleifen-Techniken:

Schleife über die Zeilen des Table Controls

Die Befehle der Ablauflogik sind:

LOOP WITH CONTROL <ctrl>.
  ...
ENDLOOP.

Diese Anweisungen bewirken einen Schleifendurchlauf über die aktuell auf dem Bild angezeigten Table Control-Zeilen und übertragen bei PAI die Daten jeder Zeile in die gleichnamigen Felder des ABAP-Programms bzw. umgekehrt bei PBO vom ABAP-Programm in die Table Control-Felder. In der LOOP-ENDLOOP-Schleife können Module aufgerufen werden, welche die übertragenen Daten verarbeiten und z.B. zu PBO aus einer internen Tabelle auslesen bzw. zu PAI in eine interne Tabelle stellen.

Parallele Schleifen über Table Control und eine interne Tabelle

Die Befehle der Ablauflogik sind:

LOOP AT <itab> [INTO <wa>] WITH CONTROL <ctrl>.
  ...
ENDLOOP.

Diese Anweisung ordnet dem Table Control eine interne Tabelle <itab> des ABAP-Programms zu und bewirkt einen parallelen Schleifendurchlauf über die auf dem Bild angezeigten Table Control-Zeilen und die interne Tabelle <itab>. Die Zusätze INTO und WITH CONTROL sind nur zum Zeitpunkt PBO, aber nicht zu PAI möglich. Die Zuordnung der Schleife zum Table Control erfolgt zu PAI über die interne Tabelle.

Mit dem Zusatz INTO werden zum Zeitpunkt PBO die Felder der internen Tabelle <itab> in den Arbeitsbereich <wa> geschrieben und der Inhalt von <wa> Zeile für Zeile an die gleichnamigen Felder des Table Control auf dem Bildschirmbild transportiert. Ohne den Zusatz INTO muß eine interne Tabelle mit Kopfzeile verwendet werden. Dann wird bei PBO der Inhalt der Kopfzeile Zeile für Zeile an die gleichnamigen Felder des Table Control auf dem Bildschirmbild transportiert. Es ist also kein Modul zum Füllen der Table Control-Zeilen nötig.

Umgekehrt werden zum Zeitpunkt PAI die internen Tabellenzeilen nicht automatisch durch den Inhalt der Table Control-Zeilen versorgt, sondern es muß ein Dialogmodul innerhalb der Schleife aufgerufen werden, das die Tabelle modifiziert.

Datentransport bei Table Controls

Bei Dynpros mit Table Controls ändert sich die Reihenfolge des Datentransports.

Zum Zeitpunkt PBO erfolgt der Transport der Table Control-Felder vom ABAP-Programm zum Dynpro nach jedem Schleifendurchlauf in der Ablauflogik. Die restlichen Dynprofelder werden wie gewohnt am Ende der PBO-Verarbeitung gefüllt.

Zum Zeitpunkt PAI werden zunächst alle Dynprofelder, die keinem Table Control angehören und in keiner FIELD-Anweisung aufgeführt werden, in die gleichnamigen Felder des ABAP-Programms transportiert. Die Inhalte der Felder eines Table Controls werden zeilenweise jeweils zu Beginn des Durchlaufs der zugehörigen Schleife in die gleichnamigen Felder des ABAP-Programms transportiert. Die Felder, die in FIELD-Anweisungen aufgeführt werden, werden wie gewohnt direkt vor der betreffenden FIELD-Anweisung transportiert.

Ende des Inhaltsbereichs