Show TOC

HintergrundTabStrips auf Selektionsbildern Dieses Dokument in der Navigationsstruktur finden

 

Wie auf Dynpros, können auch auf Selektionsbildern TabStrips verwendet werden. Hierfür müssen der TabStrip-Bereich und die zugehörigen Tab-Reiter definiert und den Tab-Reitern ein Subscreen zugewiesen werden. Eine entsprechende Programmierung der Dynproablauflogik und die Deklaration eines TabStrip-Controls im ABAP-Programm sind nicht notwendig und verboten, da diese automatisch generiert werden.

Ein TabStrip-Bereich mit zugehörigen Tab-Reitern kann wie folgt während der Definition von Selektionsbildern angelegt werden:

Syntax Syntax

  1. SELECTION-SCREEN: BEGIN OF TABBED BLOCK tab_area FOR n LINES,
  2.                   TAB (len) tab1 USER-COMMAND ucom1
  3.                               [DEFAULT [PROGRAM prog] SCREEN scrn],
  4.                   TAB (len) tab2 USER-COMMAND ucom2
  5.                               [DEFAULT [PROGRAM prog] SCREEN scrn],
  6.                   ...
  7.                   END OF BLOCK tab_area.
Ende des Codes

Diese Anweisungen definieren einen TabStrip-Bereich tab_area, dessen Größe durch die Anzahl n definiert wird. Dem TabStrip-Bereich werden die Tab-Reiter tab1, tab2 ... zugeordnet. Mit len wir die Breite der Tab-Reiter festgelegt. Jedem Tab-Reiter muss ein Funktionscode ucom zugeordnet werden. Der Funktionscode steht zum Zeitpunkt AT SELECTION-SCREEN im Feld sy-ucomm zur Auswertung zur Verfügung.

Für jeden Tab-Reiter wird automatisch ein gleichnamiges Characterfeld im ABAP-Programm angelegt. Vor dem Senden des Selektionsbild kann diesem ein Text zugewiesen werden, der dann als Beschriftung des Tab-Reiters auf dem Selektionsbild erscheint.

Jedem Tab-Reiter muss ein Subscreen zugewiesen werden, der bei Auswahl des Tab-Reiters im TabStrip-Bereich angezeigt wird. Als Subscreens können zugewiesen werden:

Die Zuweisung von Subscreens zu Tab-Reitern kann statisch im Programm oder dynamisch zur Laufzeit erfolgen. Fehlt die Zuweisung für einen Tab-Reiter beim Senden des Selektionsbilds, kommt es zu einem Laufzeitfehler.

  • Statische Zuweisung

    Die statische Zuweisung erfolgt mit dem DEFAULT-Zusatz bei der Definition der Tab-Reiter. Es kann ein ABAP-Programm und ein Subscreen dieses Programms angegeben werden. Ohne Angabe eines Programms wird der Subscreen im aktuellen Programm gesucht. Bei Auswahl des entsprechenden Tab-Reiters wird dieser aktiviert und dem TabStrip-Bereich wird der Subscreen zugewiesen. Die statische Zuordnung bleibt während der gesamten Programmlaufzeit erhalten, kann aber vor dem Senden des Selektionsbilds dynamisch überschrieben werden.

  • Dynamische Zuweisung

    Für jeden TabStrip-Bereich wird automatisch eine gleichnamige Struktur im ABAP-Programm angelegt. Diese Struktur hat die drei Komponenten prog, dynnr und activetab. Bei statischer Zuweisung enthalten diese beim Senden des Selektionsbilds den Namen des ABAP-Programms in dem der zugewiesene Subscreen definiert ist, die Nummer des Subscreens und den Namen des Tab-Reiters, der auf dem Selektionsbild aktiv ist, und dem diese Werte zugewiesen sind. Standardmäßig ist der erste Tab-Reiter aktiv. Durch Wertzuweisungen an diese Komponenten vor dem Senden des Selektionsbilds kann der aktive Tab-Reiter und der ihm zugewiesene Subscreen dynamisch gesetzt werden.

Falls ein zugewiesener Subscreen ein normales Subscreen-Dynpro ist, müssen die Dialogmodule, die in dessen Ablauflogik aufgerufen werden, im aktuellen ABAP-Programm definiert werden. Falls ein zugewiesener Subscreen ein Selektionsbild ist, führen Benutzeraktionen zum Ereignis AT SELECTION-SCREEN und dessen Varianten (siehe Selektionsbildverarbeitung). Dazu gehört auch die Auswahl eines Tab-Reiters. AT SELECTION-SCREEN wird bei Aktionen auf Selektionsbildern, die auf einem anderen Selektionsbild eingebunden sind, mindestens zweimal ausgelöst: erst für das eingebundene Selektionsbild, dann für das (die) einbindende(n) Selektionsbild(er).

Syntax Syntax

  1. REPORT demo_sel_screen_with_tabstrip.
  2. DATA flag(1) TYPE c.
  3. * SUBSCREEN 1
  4. SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
  5. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
  6. PARAMETERS: p1(10) TYPE c,
  7.             p2(10) TYPE c,
  8.             p3(10) TYPE c.
  9. SELECTION-SCREEN END OF BLOCK b1.
  10. SELECTION-SCREEN END OF SCREEN 100.
  11. * SUBSCREEN 2
  12. SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
  13. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
  14. PARAMETERS: q1(10) TYPE c OBLIGATORY,
  15.             q2(10) TYPE c OBLIGATORY,
  16.             q3(10) TYPE c OBLIGATORY.
  17. SELECTION-SCREEN END OF BLOCK b2.
  18. SELECTION-SCREEN END OF SCREEN 200.
  19. * STANDARD SELECTION SCREEN
  20. SELECTION-SCREEN: BEGIN OF TABBED BLOCK mytab FOR 10 LINES,
  21.                   TAB (20) button1 USER-COMMAND push1,
  22.                   TAB (20) button2 USER-COMMAND push2,
  23.                   TAB (20) button3 USER-COMMAND push3
  24.                                    DEFAULT SCREEN 300,
  25.                   END OF BLOCK mytab.
  26. INITIALIZATION.
  27.   button1 = text-010.
  28.   button2 = text-020.
  29.   button3 = text-030.
  30.   mytab-prog = sy-repid.
  31.   mytab-dynnr = 100.
  32.   mytab-activetab = 'BUTTON1'.
  33. AT SELECTION-SCREEN.
  34.   CASE sy-dynnr.
  35.     WHEN 1000.
  36.       CASE sy-ucomm.
  37.         WHEN 'PUSH1'.
  38.           mytab-dynnr = 100.
  39.           mytab-activetab = 'BUTTON1'.
  40.         WHEN 'PUSH2'.
  41.           mytab-dynnr = 200.
  42.           mytab-activetab = 'BUTTON2'.
  43.       ENDCASE.
  44.     WHEN 100.
  45.       MESSAGE s888(sabapdocu) WITH text-040 sy-dynnr.
  46.     WHEN 200.
  47.       MESSAGE s888(sabapdocu) WITH text-040 sy-dynnr.
  48.   ENDCASE.
  49. MODULE init_0100 OUTPUT.
  50.   LOOP AT SCREEN.
  51.     IF screen-group1 = 'MOD'.
  52.       CASE flag.
  53.         WHEN 'X'.
  54.           screen-input = '1'.
  55.         WHEN ' '.
  56.           screen-input = '0'.
  57.       ENDCASE.
  58.       MODIFY SCREEN.
  59.     ENDIF.
  60.   ENDLOOP.
  61. ENDMODULE.
  62. MODULE user_command_0100 INPUT.
  63.   MESSAGE s888(sabapdocu) WITH text-050 sy-dynnr.
  64.   CASE sy-ucomm.
  65.     WHEN 'TOGGLE'.
  66.       IF flag = ' '.
  67.         flag = 'X'.
  68.       ELSEIF flag = 'X'.
  69.         flag = ' '.
  70.       ENDIF.
  71.   ENDCASE.
  72. ENDMODULE.
  73. START-OF-SELECTION.
  74.   WRITE: / 'P1:', p1,'Q1:', q1,
  75.          / 'P2:', p2,'Q2:', q2,
  76.          / 'P3:', p3,'Q3:', q3.
Ende des Codes

In diesem Programm werden zwei Selektionsbilder, 100 und 200, als Subscreens definiert und auf dem Standardselektionsbild 1000 wird ein TabStrip-Bereich mit drei Tab-Reitern angelegt. Nur dem dritten Tab-Reiter wird statisch ein Subscreen-Dynpro 300 des gleichen Programms zugeordnet.

Das Layout von Dynpro 300 ist:

Die Abbildung wird im Begleittext erläutert.

Die Ein-/Ausgabefelder sind p1 bis q3 sind durch Übernehmen der Parameter aus dem ABAP-Programm angelegt und der Modifikationsgruppe MOD zugeordnet worden. Die Drucktaste hat den Funktionscode TOGGLE.

Die Bildschirmablauflogik von Dynpro 300 ist:

Syntax Syntax

  1. PROCESS BEFORE OUTPUT.
  2.   MODULE init_0100.
  3. PROCESS AFTER INPUT.
  4.   MODULE user_command_0100.
Ende des Codes

Die beiden Dialogmodule sind im ABAP-Programm definiert.

Bei der Programmausführung erscheint das Standardselektionsbild. Zum Zeitpunkt wurden die Texte der Tab-Reiter festgelegt, dem TabStrip-Bereich initial das Subscreen-Selektionsbild 100 zugewiesen und der erste Tab-Reiter aktiviert.

Benutzeraktionen auf dem Selektionsbild werden im Ereignisblock AT SELECTION-SCREEN ausgewertet. Insbesondere werden bei Auswahl der ersten beiden Tab-Reiter dynamisch die entsprechenden Subscreens zugewiesen und Tab-Reiter aktiviert. Für den dritten Tab-Reiter ist dies nicht notwendig, da bei seiner Auswahl die statische Zuweisung von Dynpro 300 automatisch in die Struktur mytab gestellt wird.

Vor der Anzeige von Subscreen-Dynpro wird das PBO-Modul init_0100 ausgeführt und Benutzeraktionen auf dem Subscreen-Dynpro führen zur Ausführung des PAI-Moduls. Dies gilt auch für die Auswahl eines Tab-Reiters. Danach wird AT SELECTION-SCREEN ausgelöst.

Nachrichten in der Statuszeile zeigen an, wo Aktionen ausgeführt und verarbeitet werden.