Show TOC Anfang des Inhaltsbereichs

Selektionsbilder als Subscreens  Dokument im Navigationsbaum lokalisieren

So wie Dynpros in ihren Eigenschaften im Screen Painter als Subscreens definiert werden können, so ist dies auch für eigenständige Selektionsbilder im ABAP-Programm möglich:

SELECTION-SCREEN BEGIN OF SCREEN scrn AS SUBSCREEN
                                     [NO INTERVALS]
                                     [NESTING LEVEL n].
  ...
SELECTION-SCREEN END OF SCREEN scrn.

Solcherart definierte Selektionsbilder können eingebunden werden in:

·        Subscreens auf Dynpros

·        TabStrips auf Dynpros

·        TabStrips auf Selektionsbildern

Sie können nicht mit CALL SELECTION-SCREEN aufgerufen werden.

Mit dem Zusatz NO INTERVALS wird der Subscreen zum einen schmaler angelegt und zum anderen werden sämtliche Selektionskriterien auf Einzelfelder beschränkt.

Der Zusatz NESTING LEVEL verkleinert ebenfalls die Größe des Subscreens. Er kann verwendet werden, um Blätterleisten zu vermeiden, wenn der Subscreen in ein TabStrip auf dem Selektionsbild eingebunden werden soll, das bereits von Rahmen umgeben ist. Ist das TabStrip von keinem Rahmen umgeben, genügt NESTING LEVEL 0. Für jeden Rahmen, der das TabStrip umschließt, muss der NESTING LEVEL um 1 erhöht werden.

Beim Einbinden von Selektionsbildern als Subscreens auf Dynpros oder TabStrips auf Dynpros ist darauf zu achten, dass sowohl zu PBO als auch zu PAI die Anweisung CALL SUBSCREEN der Dynproablauflogik ausgeführt wird. Zu Selektionsbildern als Subscreens können zwar keine eigenen PAI-Module programmiert werden, die Anweisung CALL SUBSCREEN sorgt aber zum Zeitpunkt PAI für den Transport der Eingabedaten an das ABAP-Programm.

Auch bei Selektionsbildern auf Subscreens lösen die erlaubten Benutzeraktionen die übliche Selektionsbildverarbeitung aus. Insbesondere können also Benutzereingaben überprüft oder Funktionscodes bearbeitet werden.

Beispiele

Beispiel

Selektionsbilder als Subscreens auf Dynpros.

REPORT demo_sel_screen_as_subscreen.

SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
PARAMETERS: p1(10) TYPE c,
            p2(10) TYPE c,
            p3(10) TYPE c.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 1100.

SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-020.
PARAMETERS: q1(10) TYPE c OBLIGATORY,
            q2(10) TYPE c OBLIGATORY,
            q3(10) TYPE c OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 1200.

DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

DATA: number(4) TYPE n VALUE '1100'.

START-OF-SELECTION.
  CALL SCREEN 100.

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'SCREEN_100'.
ENDMODULE.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'BUTTON1'.
      number = 1100.
    WHEN 'BUTTON2'.
      number = 1200.
  ENDCASE.
ENDMODULE.

AT SELECTION-SCREEN.
  MESSAGE s888(sabapdocu) WITH text-030 sy-dynnr.

Es werden zwei Selektionsbilder, 1100 und 1200, als Subscreens definiert.

Die statische Folgedynpronummer von Dynpro 100 ist 100 und sein Layout ist:

Diese Grafik wird im zugehörigen Text erklärt

Es sind ein Subscreen-Bereich areaund zwei Drucktasten mit den Funktionscodes BUTTON1 und BUTTON2 angelegt.

Die Bildschirmablauflogik von Dynpro 100 ist:

PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN area INCLUDING sy-repid number.

PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  CALL SUBSCREEN area.
  MODULE user_command_0100.

Bei Ausführung des Programms erhält der Benutzer einen Bildschirm, auf dem das Selektionsbild 1100 als Subscreen eingeblendet ist. Er kann mit den Drucktasten des Haupt-Dynpros zwischen den beiden Selektionsbilder im Subscreen-Bereich auswählen. Vor dem Blättern von Selektionsbild 1200 zu 1100 müssen die Musseingabefelder gefüllt werden. Die Eingabedaten stehen dem Programm zu PAI in den Parametern zur Verfügung.

Beispiel

Selektionsbilder als Subscreens in TabStrips auf Dynpros.

REPORT demo_sel_screen_in_tabstrip.

SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN
                                      NO INTERVALS.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
PARAMETERS: p1(10) TYPE c,
            p2(10) TYPE c,
            p3(10) TYPE c.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 1100.

SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN
                                      NO INTERVALS.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-020.
PARAMETERS: q1(10) TYPE c OBLIGATORY,
            q2(10) TYPE c OBLIGATORY,
            q3(10) TYPE c OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 1200.

CONTROLS mytabstrip TYPE TABSTRIP.

DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

DATA: number(4) TYPE n VALUE '1100'.

START-OF-SELECTION.
  mytabstrip-activetab = 'BUTTON1'.
  CALL SCREEN 100.

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'SCREEN_100'.
ENDMODULE.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'BUTTON1'.
      mytabstrip-activetab = save_ok.
      number = 1100.
    WHEN 'BUTTON2'.
      mytabstrip-activetab = save_ok.
      number = 1200.
  ENDCASE.
ENDMODULE.

AT SELECTION-SCREEN.
  MESSAGE s888(sabapdocu) WITH text-030 sy-dynnr.

Es werden zwei Selektionsbilder, 1100 und 1200, als Subscreens definiert.

Die statische Folgedynpronummer von Dynpro 100 ist 100 und sein Layout ist:

Diese Grafik wird im zugehörigen Text erklärt

Es ist ein TabStrip-Bereich namens mytabstrip mit zwei Tab-Reitern BUTTON1, BUTTON2 und gleichnamigen Funktionscodes ohne Typisierung angelegt. Allen Tab-Reitern ein gemeinsamer Subscreen-Bereich area zugeordnet

Die Bildschirmablauflogik von Dynpro 100 ist:

PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN area INCLUDING sy-repid number.

PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  CALL SUBSCREEN area.
  MODULE user_command_0100.

Das Programm ist von der Programmierung fast identisch und verhält sich genauso wie das vorhergehende Beispiel. Es wurden nur die Drucktasten durch Tab-Reiter ersetzt und das Control mytabstrip deklariert und entsprechend versorgt. Das Blättern zwischen den TabStrip-Seiten ist im ABAP-Programm programmiert. Hierfür wird bei jeder Auswahl eines Tab-Reiters der Funktionscode des OK-Felds an die Komponente activetab der Struktur mytabstrip zugewiesen. Gleichzeitig wird die Variable number mit der Dynpronummer des Subscreen-Selektionsbilds versorgt, die im Subscreen-Bereich areades TabStrips angezeigt werden soll.

 

Ende des Inhaltsbereichs