Anfang des Inhaltsbereichs

Dialogstatus für Listen Dokument im Navigationsbaum lokalisieren

Um einem Benutzer während der Listenanzeige einen Dialog mit dem System zu ermöglichen, müssen die angezeigten Listen in der Lage sein, Benutzeraktionen an das ABAP-Programm weiterzugeben. Wie bei Benutzeraktionen auf Dynpros, werden hierfür Funktionscodes verwendet, die im GUI-Status des Listenbildschirms verwaltet werden. Bei der Definition von GUI-Status für Listen mit dem Werkzeug Menu Painter der ABAP Workbench werden Funktionscodes des ABAP-Programms listenspezifischen Benutzeraktionen zugeordnet.

Besonders wichtig für listen ist dabei die Auswahl von Listenzeilen über einen Doppelklick mit der Maus. Wie schon unter GUI-Status verwenden erwähnt, ist die Doppelklick-Funktionalität der Maus immer mit der F2-Taste verknüpft. Wenn der Funktionstaste F2 im GUI-Status ein Funktionscode zugeordnet ist, wird dieser durch einen Doppelklick ausgewählt.

Der Standardlistenstatus

Wie für normale Dynpros können für Listen eigene GUI-Status definiert und diese im Programm über den Befehl SET PF-STATUS mit beliebigen Listenstufen verbunden werden. Falls keine spezifischen GUI-Status gesetzt werden, wird in ausführbaren Programmen automatisch ein Standardlistenstatus für das Listendynpro gesetzt. In anderen Programmen, z.B. beim Aufruf von Listen aus der Dynproverarbeitung, muß dieser Dialogstatus explizit mit

SET PF-STATUS space.

gesetzt werden. Diese Standardoberfläche bietet zumindest immer die unter Die Standardliste beschriebene Funktionalität.

Anders als normale Dialogstatus, wird der Standardlistenstatus vom ABAP-Programm beeinflußt.

Wenn mit den Ereignisschlüsselwörtern AT LINE-SELECTION oder AT PF<nn> im ABAP-Programm Ereignisblöcke definiert sind, werden im Standardlistenstatus weitere Funktionstasten automatisch mit Funktionscodes belegt, die zusätzliche Aktionsmöglichkeiten auf der Standardoberfläche bieten.

Alle anderen Funktionscodes werden entweder von der Laufzeitumgebung abgefangen oder lösen das Ereignis AT USER-COMMAND aus. Letztere müssen mit dem Menu Painter in eigenen GUI-Status definiert werden. Dabei geht man am besten vom Standardlistenstatus aus und erweitert diesen entsprechend.

Eigener Dialogstatus für Listen

Ein Dialogstatus für Listen wird wie üblich mit dem Werkzeug Strukturlink Menu Painter der Strukturlink ABAP Workbench angelegt. Direkt nach dem Anlegen empfiehlt es sich, über Zusätze ® Vorlage abgleichen als Vorlagestatus den Liststatus auszuwählen. Dieser Status enthält bereits Standardfunktionscodes für die Listenverarbeitung und verteilt sie wie folgt auf Menüs, Symbolleiste und Funktionstasten:

Code

Menü

Symbolleiste

Funktionstaste

Beschreibung

%PC

Liste

   

Liste in Datei sichern

%SL

Liste

   

Liste in Office sichern

%ST

Liste

   

Liste in Berichtsbaum sichern

PRI

Liste

Diese Grafik wird im zugehörigen Text erklärt

Strg-P

Angezeigte Liste drucken

%EX

Liste

Diese Grafik wird im zugehörigen Text erklärt

Shift-F3

Bearbeitung beenden

PICK

Bearbeiten

Diese Grafik wird im zugehörigen Text erklärt

F2

Ereignis AT LINE-SELECTION

RW

Bearbeiten

Diese Grafik wird im zugehörigen Text erklärt

F12 , ESC

Bearbeitung Abbrechen

%SC

Bearbeiten

Diese Grafik wird im zugehörigen Text erklärt

Strg-F

Muster suchen

%SC+

Bearbeiten

Diese Grafik wird im zugehörigen Text erklärt

Strg-G

Muster weiter suchen

BACK

Springen

Diese Grafik wird im zugehörigen Text erklärt

F3

Eine Stufe zurückgehen

P--

 

Diese Grafik wird im zugehörigen Text erklärt

Strg-Bild hoch

Zur ersten Fensterseite blättern

P-

 

Diese Grafik wird im zugehörigen Text erklärt

Bild hoch

Zur vorigen Fensterseite blättern

P+

 

Diese Grafik wird im zugehörigen Text erklärt

Bild runter

Zur nächsten Fensterseite blättern

P++

 

Diese Grafik wird im zugehörigen Text erklärt

Strg- Bild runter

Zur letzten Fensterseite blättern

%CTX

   

Shift-F10

Kontextmenü auf Liste

Weiterhin sind folgende Funktionscodes vordefiniert, belegen aber noch keine Statusfunktionalität. Sie können beliebig auf freie Statuselemente verteilt werden.

Code

Beschreibung

PF<nn>

Ereignis AT PF<nn>

PP<n>

Blättern an Anfang von Listenseite <n>

PP-[<n>]

Um eine Listenseite bzw. <n> Seiten zurückblättern

PP+[<n>]

Um eine Listenseite bzw. <n> Listenseiten vorwärtsblättern

PS<n>

Blättern zur Spalte <n>

PS--

Auf erste Spalte der Liste blättern

PS-[<n>]

Um eine Spalte bzw. <n> Spalten nach links blättern

PS+[<n>]

Um eine Spalte bzw. <n> Spalten nach rechts blättern

PS++

Auf letzte Spalte der Liste blättern

PZ<n>

Zur Zeile <n> blättern

PL-[<n>]

Zur ersten Zeile der Seite bzw. <n> Zeilen zurückblättern

PL+[<n>]

Zur letzten Zeile der Seite bzw. <n> Zeilen vorwärtsblättern

/....

Für andere Systemkommandos

Bis auf PICK und PF<nn> werden alle Funktionscodes obiger Tabellen von der Laufzeitumgebung abgefangen und ausgeführt. Sie lösen keine Ereignisse aus und können nicht für das Ereignis AT USER-COMMAND verwendet werden.

Der Funktionscode PICK führt immer zum Ereignis AT LINE-SELECTION, wenn der Cursor auf einer Listenzeile positioniert ist. Die Funktionscodes PF<nn> führen immer zum Ereignis AT PF<nn>. Beide lösen daher ebenfalls nicht das Ereignis AT USER-COMMAND aus.

Um das Ereignis AT USER-COMMAND auszulösen können beliebige eigene Funktionscodes definiert werden, die nicht mit den Funktionscodes obiger Tabellen übereinstimmen. Bei den Funktionstasten sind dabei folgende Besonderheiten zu beachten:

Wie schon erwähnt ist ein Doppelklick mit der Maus immer äquivalent zum Drücken der Taste F2 . Jeder Funktionscode, der die Taste F2 belegt wird auch durch einen Maus-Doppelklick aktiviert. Daher löst ein Maus-Doppelklick das Ereignis AT LINE-SELECTION genau dann und nur dann aus, wenn der Funktionscode PICK auch die Taste F2 belegt. Ist die Taste F2 mit einem eigenen Funktionscode belegt, führt ein Maus-Doppelklick zum Ereignis AT USER-COMMAND. Ist F2 mit einem vordefinierten Funktionscode belegt, löst ein Maus-Doppelklick die entsprechende Aktion der Laufzeitumgebung aus.

Die Taste SHIFT-F10 ist mit der Auswahl über die rechte Maustaste verknüpft. Sie wird bei der Verwendung von Kontextmenüs auf Listen mit dem Funktionscode %CTX belegt.

Die listenspezifischen Vorbelegungen der Vorlage sind Vorschläge, die für spezielle Anforderungen abgeändert werden können. Unter anderem kann man

Dialogstatus setzen

Der Dialogstatus für Listen wird wie für normale Dynpros mit der Anweisung

SET PF-STATUS <stat> [EXCLUDING <f>|<itab>]
                     [OF PROGRAM <prog>]
                     [IMMEDIATELY].

gesetzt. Diese Anweisung setzt den Dialogstatus <stat> der aktuellen Ausgabeliste. Der Dialogstatus <stat> muß für das Programm definiert sein, es sei denn es wird durch den Zusatz OF PROGRAM ein Status eines anderen Programms <prog> verwendet. Der gesetzte Status bleibt für alle folgenden Listenstufen bis zur nächsten Anweisung SET PF-STATUS gültig. Das Systemfeld SY-PFKEY enthält immer den Status der aktuellen Liste.

Mit SET PF-STATUS lassen sich also für verschiedene Listenstufen unterschiedliche Benutzungsoberflächen auswählen, um dem Benutzer je nach Anforderung unterschiedliche Funktionen zur Verfügung zu stellen. Mit SET PF-STATUS SPACE wird der Standardlistenstatus gesetzt, der wie oben beschrieben von den Ereignisblöcken des Programms abhängt.

Mit der Option EXCLUDING kann wie bei Dynpros das Aussehen und die Funktionalität eines Status vom Programm aus beeinflußt werden. Dies kann sinnvoll sein, wenn die einzelnen Benutzungsoberflächen für die verschiedenen Listenstufen nicht stark unterschiedlich sein sollen. Dann kann man einen einzigen umfassenden Status definieren und die nicht gewünschten Funktionscodes mit EXCLUDING deaktivieren. Durch die Angabe <f> wird der Funktionscode deaktiviert, der im Feld <f> abgelegt ist. Durch die Angabe <itab> werden alle Funktionscodes deaktiviert, die in der internen Tabelle <itab> abgelegt sind. Das Feld <f> und die Zeilen der Tabelle <itab> sollten vom Typ SY-UCOMM sein.

Der Zusatz IMMEDIATELY ist speziell für die Listenverarbeitung vorgesehen. Mit diesem Zusatz kann man während der Erstellung einer Verzweigungsliste, also innerhalb eines Ereignisblocks, den Status der gerade angezeigten Liste (Index SY-LISTI) ändern. Normalerweise wird der Status der aktuellen Verzweigungsliste (Index SY-LSIND) geändert, die erst am Ende des Verarbeitungsblocks angezeigt wird.

Titel für Listen setzen

Wie bei Dynpros läßt sich der Titel für Listen wie folgt im Programm setzen:

SET TITLEBAR <tit> [WITH <g1 > ... <g9>]
                   [OF PROGRAM <prog>].

Während der Listenverarbeitung setzt diese Anweisung den Titel der Benutzungsoberflächen der Ausgabelisten. Der Titel bleibt bis zur nächsten Anweisung SET TITLEBAR für alle folgenden Bildschirmbilder gültig. Der Titel <tit> muß als Komponente des ABAP-Programms vorhanden sein, es sei denn es wird durch den Zusatz OF PROGRAM ein Titel eines anderen Programms <prog> verwendet.

Wenn der Titel Platzhalter &1 .... &9 bis enthält, werden diese durch den Zusatz WITH der Anweisung SET TITLEBAR durch die Inhalte der entsprechenden Felder <g 1 > .... <g 9 > ersetzt. Auch einzeln auftretende Zeichen '&' werden nach ihrer Reihenfolge durch den Inhalt des entsprechenden Parameters <g i > ersetzt. Die Ausgabe des Zeichens '&' selbst erreicht man durch die Angabe '&&' im Titel.

Beispiele

Beispiel

Beispiel für eigenen Dialogstatus auf Listen.

REPORT demo_list_menu_painter.

START-OF-SELECTION.

  SET PF-STATUS 'TEST'.

  WRITE:  'Basic list, SY-LSIND =', sy-lsind.

AT LINE-SELECTION.

  WRITE:  'LINE-SELECTION, SY-LSIND =', sy-lsind.

AT USER-COMMAND.

  CASE sy-ucomm.
    WHEN 'TEST'.
      WRITE:  'TEST, SY-LSIND =', sy-lsind.
  ENDCASE.

Für dieses Programm wird ein Status TEST wie folgt mit dem Menu Painter definiert:

    1. Die Funktionstaste F5 wird mit dem Funktionscode TEST und dem Text Test für Demo belegt.
    2. Der Funktionscode TEST wird im Menü Liste eingetragen.
    3. Die Funktionscodes PICK und TEST werden als Drucktasten definiert.

Der Benutzer kann entweder über F5 , Liste ® Test für Demo oder die Drucktaste Test für Demo das Ereignis AT USER-COMMAND und über Zeilenauswahl ( F2 ) das Ereignis AT LINE-SELECTION auslösen.

Beispiel

Beispiel für Setzen des Dialogstatus der aktuellen Liste

REPORT demo_list_set_pf_status_1.

DATA: fcode TYPE TABLE OF sy-ucomm,
      wa_fcode TYPE sy-ucomm.

START-OF-SELECTION.

  wa_fcode = 'FC1 '. APPEND wa_fcode TO fcode.
  wa_fcode = 'FC2 '. APPEND wa_fcode TO fcode.
  wa_fcode = 'FC3 '. APPEND wa_fcode TO fcode.
  wa_fcode = 'FC4 '. APPEND wa_fcode TO fcode.
  wa_fcode = 'FC5 '. APPEND wa_fcode TO fcode.
  wa_fcode = 'PICK'. APPEND wa_fcode TO fcode.

  SET PF-STATUS 'TEST'.
  WRITE: 'PF-Status:', sy-pfkey.

AT LINE-SELECTION.

  IF sy-lsind = 20.
    SET PF-STATUS 'TEST' EXCLUDING fcode.
  ENDIF.

  WRITE: 'Line-Selection, SY-LSIND:', sy-lsind,
       / '                SY-PFKEY:', sy-pfkey.

AT USER-COMMAND.

  IF sy-lsind = 20.
      SET PF-STATUS 'TEST' EXCLUDING fcode.
    ENDIF.

    WRITE: 'User-Command, SY-LSIND:', sy-lsind,
         / '              SY-UCOMM:', sy-ucomm,
         / '              SY-PFKEY:', sy-pfkey.

Die Funktionscodes FC1 bis FC5 sind im Status TEST definiert, Funktionstasten zugewiesen und auf die Drucktastenleiste gelegt. Weiterhin ist der Funktionscode PICK der Taste F2 zugewiesen.

Nach dem Programmstart kann der Benutzer durch Zeilenauswahl oder Auswahl der Funktionscodes FC1 bis FC5 Verzweigungslisten erzeugen. Bei allen Verzweigungslisten bis auf Listenstufe 20 ist die Benutzeroberfläche TEST die gleiche wie bei der Grundliste.

Auf Listenstufe 20 werden alle Funktionscodes zur Erzeugung von Verzweigungslisten über EXCLUDING ITAB inaktiviert. Dadurch kann der Benutzer keinen Programmabruch durch das Anlegen einer 21. Verzweigungsliste hervorrufen.

Beispiel

Beispiel für Setzen des Dialogstatus der angezeigten Liste

REPORT demo_list_set_pf_status_2.

START-OF-SELECTION.

  WRITE: 'SY-LSIND:', sy-lsind.

AT LINE-SELECTION.

  SET PF-STATUS 'TEST' IMMEDIATELY.

Nach dem Programmstart zeigt das Ausgabebild die Grundliste mit dem Standardlistenstatus für Zeilenauswahl (mit Funktionscode PICK).

Wählt der Benutzer Auswählen, ändert sich die Benutzeroberfläche. Es wird keine Verzweigungsliste erzeugt, da keine Ausgabeanweisung während dem Ereignis AT LINE-SELECTION ausgeführt wird. Der Status TEST ist wie im vorhergehendem Beispiel definiert.

Beispiel

Beispiel für Titel von Verzweigungslisten.

REPORT demo_list_title .

START-OF-SELECTION.
  WRITE 'Click me!' HOTSPOT COLOR 5 INVERSE ON.

AT LINE-SELECTION.
  SET TITLEBAR 'TIT' WITH sy-lsind.
  WRITE 'Click again!' HOTSPOT COLOR 5 INVERSE ON.

In diesem Programm wird für jede Verzweigungsliste ein neuer Titel gesetzt. Der Titel TIT ist dafür als ‚Titel für Verzweigungsliste &1‘ definiert.

Ende des Inhaltsbereichs