Show TOC 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 muss zumindest eine leere LOOP-Schleife für jeden Table Control sowohl im PBO- als auch im PAI-Verarbeitungsblock vorhanden sein. Weiterhin ist zu beachten, dass 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:

·        sy-stepl enthält die aktuelle Zeile des Table Controls gezählt ab der obersten angezeigten Zeile

·        sy-loopc enthält die aktuelle Anzahl von Table Control-Zeilen auf dem Bildschirm

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 INTOwerden 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 muss 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 muss 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-Anweisungtransportiert.

Ende des Inhaltsbereichs