Show TOC Anfang des Inhaltsbereichs

Drucktasten auf dem Selektionsbild  Dokument im Navigationsbaum lokalisieren

Ähnlich wie Drucktasten auf Dynpros können auch auf Selektionsbildern Drucktasten mit eigenen Funktionscodes definiert werden. Um eine Drucktaste auf einem Selektionsbild anzulegen, verwendet man während der Definition des Selektionsbilds:

SELECTION SCREEN PUSHBUTTON [/]pos(len) push
                            USER-COMMAND fcode [MODIF ID key].

Die Parameter [/]pos(len) und der Zusatz MODIF ID haben die gleiche Funktionalität wie bei den Aufbereitungsoptionen für Linien und Kommentare.

Die Angabe push bestimmt den Drucktastentext. Für push kann ein Textsymbol angegeben werden oder ein Feldnamen mit einer Länge von maximal acht Zeichen. Dieses Character-Feld darf nicht mit der Anweisung DATA deklariert werden, sondern wird automatisch in der Länge len generiert. Das Feld muss vor dem Aufruf des Selektionsbilds gefüllt werden.

Für fcode muss ein Funktionscode angegeben werden. Wenn der Benutzer die Drucktaste auf dem Selektionsbild anklickt, wird von der Laufzeitumgebung das Ereignis AT SELECTION-SCREEN ausgelöst und der Funktionscode fcode in die Komponente ucomm des Schnittstellen-Arbeitsbereichs sscrfieldsübertragen. Die Struktur sscrfields muss im ABAP-Programm mit einer TABLES-Anweisung deklariert werden.

Nach Bearbeitung des Ereignisblocks zu AT SELECTION-SCREEN kehrt das System zur Anzeige des Selektionsbilds zurück. Um die Selektionsbildverarbeitung zu verlassen und mit der Programmausführung fortzufahren, kann nur Ausführen (F8) ausgewählt werden. Drucktasten auf Selektionsbildern können daher eher für dynamische Modifikationen des Selektionsbilds als zur Programmsteuerung eingesetzt werden.

Die Drucktasten eines Selektionsbilds sind natürlich nur sichtbar, wenn das Selektionsbild auch aufgerufen wird. Standardselektionsbilder in ausführbaren Programmen werden aber nur aufgerufen, wenn mindestens ein Eingabefeld durch eine der Anweisungen PARAMETERS oder SELECT-OPTIONS deklariert wird. Das bedeutet, dass Drucktasten auf Standardselektionsbildern ohne mindestens ein Eingabefeld keinen Sinn machen. Eigenständige Selektionsbilder sind dagegen auch ohne Eingabefelder aufrufbar, so dass Drucktasten auch auf Selektionsbildern ohne Eingabefelder möglich sind.

Beispiel

REPORT demo_sel_screen_pushbutton.

TABLES sscrfields.

DATA flag(1) TYPE c.

SELECTION-SCREEN:
  BEGIN OF SCREEN 500 AS WINDOW TITLE tit,
    BEGIN OF LINE,
      PUSHBUTTON 2(10) but1 USER-COMMAND cli1,
      PUSHBUTTON 12(10) text-020 USER-COMMAND cli2,
    END OF LINE,
    BEGIN OF LINE,
      PUSHBUTTON 2(10) but3 USER-COMMAND cli3,
      PUSHBUTTON 12(10) text-040 USER-COMMAND cli4,
    END OF LINE,
  END OF SCREEN 500.

AT SELECTION-SCREEN.

  CASE sscrfields.
    WHEN 'CLI1'.
      flag = '1'.
    WHEN 'CLI2'.
      flag = '2'.
    WHEN 'CLI3'.
      flag = '3'.
    WHEN 'CLI4'.
      flag = '4'.
  ENDCASE.

START-OF-SELECTION.

  tit  = 'Four Buttons'.
  but1 = 'Button 1'.
  but3 = 'Button 3'.

  CALL SELECTION-SCREEN 500 STARTING AT 10 10.

  CASE flag.
    WHEN '1'.
      WRITE / 'Button 1 was clicked'.
    WHEN '2'.
      WRITE / 'Button 2 was clicked'.
    WHEN '3'.
      WRITE / 'Button 3 was clicked'.
    WHEN '4'.
      WRITE / 'Button 4 was clicked'.
    WHEN OTHERS.
      WRITE / 'No Button was clicked'.
  
ENDCASE.

Es werden vier Drucktasten auf einem Selektionsbild, das als Dialogfenster angezeigt wird, definiert. Die Definition des Selektionsbilds erfolgt in einem Kettensatz zum Schlüsselwort SELECTION-SCREEN.

Falls die Textsymbole text-020 und text-040 als 'Button 2' und 'Button 4' definiert sind, erscheinen die vier Drucktasten wie folgt auf dem als Dialogfenster angezeigten Selektionsbild:

Diese Grafik wird im zugehörigen Text erklärt

Für fcode werden cli1, cli2, cli3 und cli4 verwendet. Wählt der Benutzer eine der Drucktasten aus, löst die Laufzeitumgebung das Ereignis AT SELECTION-SCREEN aus. Erst wenn der Benutzer  Ausführen wählt, wird das Programm nach CALL SELECTION-SCREENfortgesetzt.

 

Ende des Inhaltsbereichs