Dynpro: CONTROLS TC TableControls

CONTROLS contrl TYPE TABLEVIEW USING SCREEN dynnr. 
CONTROLS  reihenfolge TYPE TABLEVIEW USING SCREEN 200.

ABAP-Schlüsselwortdokumentation

Deklaration eines Table Controls. Durch Angabe des Typs TABLEVIEW in der Anweisung CONTROLS wird eine tiefe Struktur mit dem Namen des Controls und vom Typ CXTAB_CONTROL aus der Typgruppe CXTAB angelegt. Die Komponenten der Struktur enthalten während der Dynpro-Verarbeitung die Eigenschaften des Table Controls. Über diese Struktur können die Eigenschaften des zugehörigen Table Controls ausgelesen und verändert werden.

Die tiefe Struktur CXTAB_CONTROL enthält auf oberster Ebene Komponenten für die generellen Attribute des Table Controls. Die Komponente COLS ist eine interne Tabelle der Struktur CXTAB_COLUMN und enthält die Attribute einzelner Spalten. Die Struktur CXTAB_COLUMN enthält eine strukturierte Komponente SCREEN, die wie die vordefinierte Struktur screen aufgebaut ist und die Attribute des Bildschirmelements jeder Spalte enthält. Bis auf die Komponente CURRENT_LINE können alle Komponenten der Struktur CXTAB_CONTROL im ABAP-Programm gesetzt werden.

In dynnr muss die Nummer eines Dynpros angegeben werden, auf dem ein Table Control namens contrl definiert ist. Für dynnr kann ein Literal oder eine Konstante vom Typ n der Länge 4 angegeben werden. Beim ersten Aufruf eines Dynpros, in dem ein Table Control namens contrl definiert ist, werden die Startwerte bestimmter Komponenten der Struktur der Definition des Table Controls entnommen, dessen Dynpro hinter dem Zusatz USING angegeben ist.

Die Struktur CXTAB_CONTROL

ABAP-Schlüsselwortdokumentation

KomponenteBedeutung
 FIXED_COLSAnzahl der Führungsspalten. Startwert wird der Definition des Table Controls in Dynpro dynnr entnommen.
 LINESSteuert die vertikale Blätterleiste des Table Controls. Wenn die LOOP-Schleife in der Dynpro-Ablauflogik ohne Bezug zu einer internen Tabelle durchgeführt wird, ist der Startwert von LINES 0 und muss im Programm gesetzt werden, damit die Blätterleiste verwendbar ist. Bei Bezug zu einer internen Tabelle wird LINES auf die aktuelle Anzahl der Zeilen der internen Tabelle gesetzt, wenn das Table Control zum ersten Mal prozessiert wird. Da dieser Zeitpunkt aber undefiniert ist, sollte der Wert von LINES auch in diesem Fall vor der PBO-Verarbeitung des Table Controls explizit auf die Anzahl der Zeilen der internen Tabelle gesetzt werden.
 TOP_LINEOberste angezeigte Zeile bei nächstem PBO. Wird zu PAI durch die Position der vertikalen Blättermarke gesetzt.
 CURRENT_LINEAktuelle Zeile während einer LOOP-Schleife in der Dynpro-Ablauflogik. Wenn der Zusatz FROM der Anweisung LOOP nicht angegeben ist, entspricht der Wert von CURRENT_LINE dem Ergebnis von sy-stepl + (TOP_LINE – 1).
 LEFT_COLNummer der ersten angezeigten horizontal blätterbaren Spalte hinter den Führungsspalten. Wird zu PAI durch Position der horizontalen Blättermarke gesetzt.
 LINE_SEL_MODEModus der Zeilenmarkierung: „0“, falls keine, „1“, falls eine, „2“, falls mehrere Zeilen markierbar sind. Startwert wird der Definition des Table Controls in Dynpro dynnr entnommen.
 COL_SEL_MODEModus der Spaltenmarkierung: „0“, falls keine, „1“, falls eine, „2“, falls mehrere Spalten markierbar sind. Startwert wird der Definition des Table Controls in Dynpro dynnr entnommen.
 LINE_SELECTORFlag („X“ oder “ „), ob es eine Markierspalte gibt. Startwert wird der Definition des Table Controls in Dynpro dynnr entnommen.
 H_GRIDFlag („X“ oder “ „), ob es horizontale Trennlinien gibt. Startwert wird der Definition des Table Controls in Dynpro dynnr entnommen.
 V_GRIDFlag („X“ oder “ „), ob es vertikale Trennlinien gibt. Startwert wird der Definition des Table Controls in Dynpro dynnr entnommen.
 COLSSteuertabelle für einzelne Spalten der Struktur CXTAB_COLUMN.
 INVISIBLEFlag („X“ oder “ „), ob das Table Control im Fenster sichtbar ist oder nicht.

ABAP-Schlüsselwortdokumentation

Die Struktur CXTAB_COLUMN

KomponenteBedeutung
 SCREENStruktur für die Attribute des Bildschirmelements der aktuellen Spalte. Die Komponenten können direkt oder mit MODIFY SCREEN auf die dort beschriebenen Werte gesetzt werden. Letzteres überschreibt eine direkte Wertzuweisung.
 INDEXAktuelle Position der Spalte im Table Control. Startwert wird der Definition des Table Controls in Dynpro dynnr entnommen. Wird zu PAI auf den aktuellen Wert gesetzt.
 SELECTEDFlag („X“ oder “ „), ob Spalte markiert ist oder nicht. Wird zu PAI auf den aktuellen Wert gesetzt.
 VISLENGTHSichtbare Länge der Spalte. Startwert wird der Definition des Table Controls in Dynpro dynnr entnommen.
 INVISIBLEFlag („X“ oder “ „), ob die Spalte im Table Control sichtbar ist oder nicht.

Hinweise

  • In einem Table Control kann mit einer Blätterleiste vertikal geblättert werden, wenn die Komponente LINES der Struktur CXTAB_CONTROL vor der PBO-Verarbeitung des Table Controls auf die richtige Zeilenzahl gesetzt wurde. Bei jedem Blättern mit der Blätterleiste wird das Ereignis PAI mit einem leeren Funktionscode ausgelöst und die Komponente TOP_LINE der Struktur CXTAB_CONTROL vor PBO automatisch auf die neue oberste Zeile gesetzt.
  • Um programmgesteuert zu blättern, genügt es, der Komponente TOP_LINE der Struktur CXTAB_CONTROL während der PBO-Verarbeitung einen Wert zuzuweisen. Für das seitenweise Blättern kann die Anzahl der zu blätternden Zeilen während der Schleifenausführung dem Systemfeld sy-loopc entnommen werden. sy-loopc enthält die Anzahl der aktuell dargestellten Zeilen, während die Komponente LINES der Struktur CXTAB_CONTROL die Anzahl der Zeilen im gesamten Table Control enthält.

CONTROLS flight_tab TYPE TABLEVIEW USING SCREEN '0100'. 
TABLES spfli. 
DATA spfli_tab TYPE SORTED TABLE OF spfli 
               WITH UNIQUE KEY carrid connid. 
... 
MODULE prepare_tab OUTPUT. 
  IF spfli_tab IS INITIAL. 
    SELECT * 
           FROM spfli 
           INTO TABLE spfli_tab. 
    flight_tab-lines = lines( spfli_tab ). 
  ENDIF. 
ENDMODULE. 
MODULE modify_tab INPUT. 
  MODIFY TABLE spfli_tab FROM spfli. 
ENDMODULE.
 
PROCESS BEFORE OUTPUT. 
  MODULE prepare_tab. 
  LOOP AT spfli_tab INTO spfli WITH CONTROL flight_tab. 
  ENDLOOP. 
PROCESS AFTER INPUT. 
  LOOP AT spfli_tab. 
    MODULE modify_tab. 
  ENDLOOP.