Show TOC Anfang des Inhaltsbereichs

Eigenständige Selektionsbilder aufrufen  Dokument im Navigationsbaum lokalisieren

Eigenständige Selektionsbilder können in ausführbaren Programme, Funktionsbausteinen und Modulpools definiert werden. Beim Aufruf von eigenständigen Selektionsbildern sind drei Fälle zu unterscheiden.

Aufruf im Programm

In allen Programmen, in denen Selektionsbilder definiert sind, können diese an beliebigen Stellen des Programmablaufs durch folgende Anweisung aufgerufen werden:

CALL SELECTION-SCREEN numb [STARTING AT x1 y1]
                           [ENDING   AT x2 y2].

Diese Anweisung ruft das Selektionsbild mit der Dynpronummer numb auf. Das aufgerufene Selektionsbild muss im aufrufenden Programm entweder als Standardselektionsbild (Dynpronummer 1000) oder als eigenständiges Selektionsbild mit beliebiger Dynpronummer definiert sein. Für den Aufruf von Selektionsbildern darf nur CALL SELECTION-SCREEN und niemals CALL SCREEN verwendet werden, da das System die Selektionsbilder ansonsten nicht bearbeiten kann.

Mit den Zusätzen STARTING AT und ENDING AT können eigenständige Selektionsbilder, als modale Dialogfenster angezeigt werden. Dies setzt zwar nicht voraus, dass die Selektionsbilder bei ihrer Definition durch den Zusatz AS WINDOW auch dafür vorgesehen sind, es wird aber empfohlen dies zu tun, da dann Warnungen und Fehlermeldungen, die während der Selektionsbildverarbeitung auftreten, auch als modale Dialogfenster erscheinen (siehe untenstehendes Beispiel).

Die Anweisung CALL SELECTION-SCREEN setzt bei der Rückkehr vom Selektionsbild ins Programm den Rückgabewert sy-subrc wie folgt:

·        sy-subrc = 0 falls der Benutzer auf dem Selektionsbild Ausführen gewählt hat

·        sy-subrc = 4 falls der Benutzer auf dem Selektionsbild Abbrechen gewählt hat

Bei jeder Selektionsbildverarbeitung werden die Selektionsbildereignisse ausgelöst. Die Dynpronummer des gerade aktiven Selektionsbilds kann in den zugehörigen Ereignisblöcken dem Systemfeld sy-dynnr entnommen werden.

Beispiel

REPORT demo_call_selection_screen.

SELECTION-SCREEN BEGIN OF BLOCK sel1 WITH FRAME TITLE tit1.
PARAMETERS: cityfr TYPE spfli-cityfrom,
            cityto TYPE spfli-cityto.
SELECTION-SCREEN END OF BLOCK sel1.

SELECTION-SCREEN BEGIN OF SCREEN 500 AS WINDOW.
SELECTION-SCREEN INCLUDE BLOCKS sel1.
SELECTION-SCREEN BEGIN OF BLOCK sel2
                          WITH FRAME TITLE tit2.
PARAMETERS: airpfr TYPE spfli-airpfrom,
            airpto TYPE spfli-airpto.
SELECTION-SCREEN END OF BLOCK sel2.
SELECTION-SCREEN END OF SCREEN 500.

INITIALIZATION.
  tit1 = 'Cities'.

AT SELECTION-SCREEN.
  CASE sy-dynnr.
    WHEN '0500'.
      MESSAGE w159(at) WITH 'Screen 500'.
    WHEN '1000'.
      MESSAGE w159(at) WITH 'Screen 1000'.
  ENDCASE.

START-OF-SELECTION.
  tit1 = 'Cities for Airports'.
  tit2 = 'Airports'.
  CALL SELECTION-SCREEN 500 STARTING AT 10 10.
  tit1 = 'Cities again'.
  CALL SELECTION-SCREEN 1000 STARTING AT 10 10.

In diesem ausführbaren Programm sind das Standardselektionsbild und ein eigenständiges Selektionsbild 500 definiert. Selektionsbild 500 ist für die Darstellung als modales Dialogfenster vorgesehen und enthält den Block sel1 des Standardselektionsbilds. Es ist zu beachten, zu welchen Zeitpunkten die Titel der einzelnen Bilder definiert werden. Zur Demonstration werden beim Ereignis AT SELECTION-SCREEN Warnungsmeldungen der Nachrichtenklasse AT aufgerufen.

Nach dem Programmstart erscheint folgende Bildfolge:

1. Das Standardselektionsbild. Wenn der Benutzer Ausführen wählt, wird die Warnung SCREEN 1000 in der Statuszeile angezeigt.

Diese Grafik wird im zugehörigen Text erklärt

2. Nach dem Bestätigen der Warnung über Enter erfolgt der Aufruf des Selektionsbilds 500 als modales Dialogfenster. Ausführen auf Selektionsbild 500 führt dazu, dass die Warnung SCREEN 500 ebenfalls in einem Fenster erscheint.

Diese Grafik wird im zugehörigen Text erklärt

3. Nach dem Bestätigen auch dieser Warnung, erfolgt der nochmalige Aufruf des Standardselektionsbilds, aber dieses mal als modales Dialogfenster. Da das Standardselektionsbild nicht für die Darstellung als modales Dialogfenster vorgesehen werden kann, erscheint die Warnung nach der Benutzeraktion Ausführen nicht als Fenster, sondern in der Statuszeile.

Diese Grafik wird im zugehörigen Text erklärt

Dies hat zur Folge, dass dieses Selektionsbild nur über Abbrechen verlassen werden kann, da in der Drucktastenleiste des Dialogfensters keine Enter-Taste zur Verfügung steht, die man benötigt um Warnungsmeldungen zu übergehen.

Aufruf durch Reporttransaktionen

Bei der Definition von Transaktionscodes für Reporttransaktionen kann ein beliebiges eigenständiges Selektionsbild des ausführbaren Programms, für das der Transaktionscode angelegt wird, als Einstiegsbild festgelegt werden. Dann wird bei einem Programmstart über den Transaktionscode nicht das Standardselektionsbild, sondern das eigenständige Selektionsbild zwischen den Ereignissen INITIALIZATION und START-OF-SELECTION aufgerufen.

Beispiel

Es wird eine Reporttransaktion mit dem Transaktionscode SELSCREEN500 für obiges Beispielprogramm angelegt:

Diese Grafik wird im zugehörigen Text erklärt

Beim Aufruf dieser Transaktion startet das ausführbare Programm direkt mit dem Selektionsbild 500 als Vollbild. Wählt der Benutzer darauf Ausführen, erscheint die Warnung als modales Dialogfenster, da das Selektionsbild 500 entsprechend definiert wurde:

Diese Grafik wird im zugehörigen Text erklärt

Der weitere Bildschirmablauf ist dann wie ab Punkt 2 in obigem Beispiel.

Aufruf durch Dialogtransaktionen

Alle Selektionsbilder in ausführbaren Programmen und in Modul-Pools, die über Transaktionscodes für Dialogtransaktionen aufgerufen werden, können als Einstiegsbilder eingesetzt werden. Dann ist das Selektionsbild das erste Bild einer Dynprofolge.

Es muss dann während der Selektionsbildverarbeitung dafür gesorgt werden, dass der Programmablauf zum gewünschten Folgedynpro verzweigt.

Beispiel

Betrachten wir folgenden Modul-Pool:

*&----------------------------------------------------*
*& Modulpool         SAPMSSLS                         *
*&----------------------------------------------------*

INCLUDE msslstop.

INCLUDE msslsevt.

Das Include msslstop enthalte die Definition des Selektionsbilds 500 wie folgt:

*&----------------------------------------------------*
*& Include MSSLSTOP                                   *
*&----------------------------------------------------*

PROGRAM  sapmssls.

SELECTION-SCREEN BEGIN OF SCREEN 500 AS WINDOW.
  SELECTION-SCREEN BEGIN OF BLOCK sel1 WITH FRAME.
    PARAMETERS: cityfr LIKE spfli-cityfrom,
                cityto LIKE spfli-cityto.
  SELECTION-SCREEN END OF BLOCK sel1.
  SELECTION-SCREEN BEGIN OF BLOCK sel2 WITH FRAME.
    PARAMETERS: airpfr LIKE spfli-airpfrom,
                airpto LIKE spfli-airpto.
  SELECTION-SCREEN END OF BLOCK sel2.
SELECTION-SCREEN END OF SCREEN 500.

Das Include msslsevt behandelt das Ereignis AT SELECTION-SCREEN:

*------------------------------------------------------*
*   INCLUDE MSSLSEVT                                   *
*------------------------------------------------------*

AT SELECTION-SCREEN.

  ...

  LEAVE TO SCREEN 100.

Beim Anlegen eines Transaktionscodes für das Programm sapmssls wird Dynpro 500 als Einstiegsbildschirm angegeben:

Diese Grafik wird im zugehörigen Text erklärt

Bei Aufruf der Transaktion SELSCREEN_DIALOG startet das Programm mit der Anzeige des Selektionsbilds.

Diese Grafik wird im zugehörigen Text erklärt

Die Benutzereingaben auf dem Selektionsbild können z.B. beim Ereignis AT SELECTION-SCREEN oder später in der Anwendungslogik verarbeitet werden. Nach der Verarbeitung des Ereignisses AT SELECTION-SCREEN (PAI des Selektionsbilds) verzweigt das Programm auf ein Folgedynpro 100.

 

 

 

Ende des Inhaltsbereichs