Show TOC Anfang des Inhaltsbereichs

GUI-Status verwenden Dokument im Navigationsbaum lokalisieren

Ein GUI-Status ist eine selbständige Komponente eine ABAP-Programms. GUI-Status werden mit dem Werkzeug StrukturlinkMenu Painter der StrukturlinkABAP Workbench angelegt und bearbeitet. Es gibt drei verschiedene Typen von GUI-Status, nämlich

·        Dialogstatus

·        Dialogfenster

·        Kontextmenüs

Die entsprechende Dokumentation geht ausführlich auf das Anlegen von GUI-Status und deren Bestandteile ein. Im folgenden sind die wichtigsten Eigenschaften zusammengefaßt.

GUI-Status

Die Aufgabe eines GUI-Status ist es, dem Benutzer von Dynpros verschiedene Funktionen zur Auswahl zu stellen. Jede Funktion ist mit einem bis zu 20-stelligen Funktionscode verknüpft und ihre Auswahl führt zum Ereignis PAI. Beim jedem Ereignis PAI wird der Funktionscode in das Systemfeld SYST-UCOMM bzw. SY-UCOMM gestellt und dem OK-Feld zugewiesen, falls er nicht leer ist. Ein leerer Funktionscode wird weder in das Feld SY-UCOMM gestellt noch dem OK-Feld zugewiesen. Um mit dem OK-Feld zu arbeiten muß es im Screen Painter mit einem Namen versehen und dadurch deklariert werden. Mehr Informationen zur Auswertung von Funktionscodes finden sich unter Funktionscodes auswerten.

Alle Funktionscodes eines ABAP-Programms außer denen, die nur Drucktasten auf Dynpros zugeordnet sind, werden im Menu Painter definiert und wie folgt verwaltet:

Diese Grafik wird im zugehörigen Text erklärt

Dabei bestimmt der Typ des GUI-Status, wie die Funktionscodes präsentiert werden:

·        Ein Dialogstatus umfaßt eine Menüleiste, eine Symbolleiste, eine Drucktastenleiste sowie die Funktionstastenbelegung.

·        Ein Status für ein Dialogfenster enthält nur eine Drucktastenleiste. Die Standardfunktionscodes der Symbolleiste und Funktionscodes, die mit Funktionstasten aber nicht mit der Drucktastenleiste verknüpft sind, stehen über die Tastatur zur Verfügung.

·        Ein Kontextmenü besteht nur aus demselben, und dient als statisches Vorbild für den dynamischen Aufbau von Kontextmenüs.

Dialogstatus sind die allgemeinsten Benutzungsoberflächen für Dynpros und es wird im folgenden nur noch auf sie eingegangen. Für Status für Dialogfenster gilt mit obigen Einschränkungen das Gleiche wie für Dialogstatus. Beide werden weitgehend statisch zu einem ABAP Programm angelegt. Kontextmenüs spielen eine etwas andere Rolle und werden speziell behandelt.

Dialogstatus

Ein Dialogstatus ist eine Zusammenstellung jeweils einer Menuleiste, einer Symbolleiste, einer Drucktastenleiste und einer Funktionstastenbelegung zu einer Benutzungsoberfläche für Dynpros. Bei der Definition eines Dialogstatus im Menu Painter wird jeder Funktionscode einem Menüeintrag einer Menüleiste und/oder einer frei belegbaren Funktionstaste der Tastatur zugeordnet. Funktionscodes, die einer Funktionstaste zugeordnet sind, können einem Symbol einer Symbolleiste oder einer Drucktaste einer Drucktastenleiste zugeordnet werden. Jedem Funktionscode ist ein entweder statischer oder ein Strukturlinkdynamischer Funktionstext zugeordnet. Ein dynamischer Funktionstext kann im ABAP Programm kontextsensitiv gesetzt werden.

Die Benutzungsoberfläche ist eine reine Visualisierung der möglichen Funktionen und dient der Bedienbarkeit von Anwendungsprogrammen. Rein technisch gesehen würde es auch genügen, einen Funktionscode im Befehlsfeld der Symbolleiste einzugeben und das PAI-Ereignis durch ENTER auszulösen. In einem Dialogstatus sollten aber alle gewünschten Funktionscodes als Menüeinträge zur Verfügung stehen. Die wichtigsten davon sollten Funktionstasten zugeordnet werden und davon wieder die wichtigsten in der Symbolleiste oder Drucktastenleiste zur Verfügung stehen.

Die Zuordnung der Symbole der Symbolleiste zu bestimmten Funktionstasten ist im Menu Painter vorgeschrieben. Diese Funktionstasten sind nicht frei belegbar, sondern werden durch die Zuordnung eines Funktionscodes zum entsprechenden Symbol aktiviert. Es sollten immer zumindest eines der Symbole Diese Grafik wird im zugehörigen Text erklärt (F3), Diese Grafik wird im zugehörigen Text erklärt (Shift+F3) und Diese Grafik wird im zugehörigen Text erklärt (F12) aktiviert werden, um es dem Benutzer zu ermöglichen, den Bildschirm wie gewohnt zu verlassen. Die Zuordnung von Funktionstasten zu Drucktasten der Drucktastenleiste ist beliebig.

Alle Zuordnungen von Funktionscodes zu Oberflächenelemente sollten entsprechend der Ergonomierichtlinien des StrukturlinkSAP Style Guide erfolgen. Der Menu Painter unterstützt dies durch die Funktion Normen einmischen und entsprechenden Prüfungen.

Neben den Funktionscodes für Normale Anwendungsfunktionen, die das Ereignis PAI auslösen, können im Menu Painter auch Funktionscodes mit anderen Funktionen angelegt werden, z.B. um andere Transaktionen aufzurufen oder eine Systemfunktion auszulösen. Auch solche Funktionscodes können Drucktasten, Ankreuzfeldern oder Auswahlknöpfen auf Dynpros zugeordnet werden. Hierfür muß den Funktionscodes im Menu Painter bzw. Screen Painter aber ein anderer Funktionstyp zugeordnet werden.

Bereichsmenüs

Mit dem Menu Painter lassen sich auch sogenannte Bereichsmenüs definieren. Dies sind Benutzungsoberflächen, die zu keinem ABAP-Programm gehören und dementsprechend keine PAI-Ereignisse auslösen dürfen. Sie dürfen nur Funktionscodes enthalten, die Transaktionen oder Systemfunktionen aufrufen. Beispiele für ein Bereichsmenüs sind das Einstiegsbild in das R/3-System (S000) oder das Einstiegsbild der ABAP Workbench (S001).

Besondere Funktionstasten und Funktionscodes

Einige Tasten und Funktionscodes weisen Besonderheiten auf. Im folgenden werden die für Dynpros relevanten Besonderheiten erwähnt. Bei Dialogstatus für Listen sind weitere vordefinierte Belegungen zu beachten.

Reservierte Funktionstasten

Folgende Funktionstasten führen nicht zum Ereignis PAI, sondern sind anders reserviert:

·        F1 ruft die Feldhilfe

·        F4 ruft die Eingabehilfe

·        F10 setzt den Cursor in die Menuleiste

Die Funktionstasten der Symbolleiste

Folgende Funktionstasten sind fest mit Symbolen der Symbolleiste verknüpft. Die Zuordnung von Funktionscodes und die entsprechende Programmierung im ABAP-Programm sollte sich nach dem Zweck des Symbols richten.

Funktionstaste

Symbol

Zweck

Strg+S, F11

Diese Grafik wird im zugehörigen Text erklärt

Sichern

F3

Diese Grafik wird im zugehörigen Text erklärt

Zurück

Shift+F3

Diese Grafik wird im zugehörigen Text erklärt

Beenden

Esc, F12

Diese Grafik wird im zugehörigen Text erklärt

Abbrechen

Strg+P

Diese Grafik wird im zugehörigen Text erklärt

Drucken

Strg+F

Diese Grafik wird im zugehörigen Text erklärt

Suchen

Strg+G

Diese Grafik wird im zugehörigen Text erklärt

Weiter suchen

Strg+Bild hoch

Diese Grafik wird im zugehörigen Text erklärt

Erste Seite

Bild hoch

Diese Grafik wird im zugehörigen Text erklärt

Vorherige Seite

Bild runter

Diese Grafik wird im zugehörigen Text erklärt

Nächste Seite

Strg+Bild runter

Diese Grafik wird im zugehörigen Text erklärt

Letzte Seite

Die ENTER-Taste

Die ENTER-Taste gehört zum Symbol Diese Grafik wird im zugehörigen Text erklärt der Symbolleiste und ist immer aktiv, auch wenn ihr im GUI-Status kein Funktionscode zugeordnet ist oder überhaupt kein GUI-Status gesetzt ist. Auswahl von ENTER löst immer das Ereignis PAI aus. Folgende Funktionscodes können dabei an SY-UCOMM bzw. das OK-Feld übergeben werden:

·        Wenn im Befehlsfeld der Symbolleiste eine Eingabe steht, wird diese als Funktionscode an SY-UCOMM und das OK-Feld übergeben.

·        Falls das Befehlsfeld keine Eingabe enthält und der ENTER-Taste im Menu Painter ein Funktionscode zugewiesen ist, wird dieser Funktionscode an SY-UCOMM und das OK-Feld übergeben.

·        Falls das Befehlsfeld keine Eingabe enthält und der ENTER-Taste im Menu Painter kein Funktionscode zugewiesen ist, ist dieser leer und der Inhalt von SY-UCOMM und des OK-Felds wird nicht beeinflußt.

Die F2-Taste

Die F2-Taste ist immer mit der Doppelklick-Funktionalität der Maus verknüpft. Wenn der Funktionstaste F2 im GUI-Status ein Funktionscode zugeordnet ist, kann PAI sowohl durch Auswahl von F2, als auch durch einen Doppelklick auf ein Bildschirmelement ausgelöst werden. Der zugehörige Funktionscode wird in beiden Fällen an SY-UCOMM bzw. das OK-Feld übergeben. Falls auch die zugehörige Cursorposition im ABAP-Programm verwendet werden soll, muß diese mit GET CURSOR ermittelt werden.

Dialogstatus setzen

Um einem Dynpro einen Dialogstatus zuzuordnen, verwendet man die ABAP-Anweisung:

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

Diese Anweisung legt die Benutzungsoberfläche für alle folgenden Dynpros einer Dynprofolge fest, bis eine erneute Anweisung SET PF-STATUS einen anderen Dialogstatus festlegt. Der Dialogstatus <stat> muß als Komponente des ABAP-Programms vorhanden sein, es sei denn es wird durch den Zusatz OF PROGRAM ein Dialogstatus eines anderen Programms <prog> verwendet.

Mit dem Zusatz EXCLUDING kann man das Aussehen und die Funktionalität eines Dialogstatus dynamisch vom Programm aus beeinflussen. Dies kann sinnvoll sein, wenn die einzelnen Benutzungsoberflächen für verschiedene Dynpros nicht stark unterschiedlich sind. 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 C der Länge 20 sein.

Es empfiehlt sich den Dialogstatus für ein Dynpro zum Zeitpunkt PBO des Dynpros zu setzen. Wenn man für ein Dynpro keinen Dialogstatus festlegt, wird es mit der Benutzungsoberfläche des vorhergehenden Dynpros des Programms angezeigt. Wenn für das erste Dynpro eines Programms kein Dialogstatus festgelegt wird, hat es keine Benutzungsoberfläche und der Benutzer kann das Dynpro eventuell nicht verlassen.

GUI-Titel setzen

Zur Benutzungsoberfläche gehört außer dem Dialogstatus auch ein GUI-Titel, der ebenfalls mit dem Werkzeug Menu Painter angelegt wird. Um einem Dynpro einen GUI-Titel zuzuordnen, verwendet man die ABAP-Anweisung:

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

Diese Anweisung legt den GUI-Titel für alle folgenden Dynpros einer Dynprofolge fest, bis eine erneute Anweisung SET TITLEBAR einen anderen GUI-Titel festlegt. Der GUI-Titel <tit> muß als Komponente des ABAP-Programms vorhanden sein, es sei denn es wird durch den Zusatz OF PROGRAM ein GUI-Titel eines anderen Programms <prog> verwendet.

Ein GUI-Titel kann bis zu neun verschiedene Platzhalter &1.... &9 enthalten, die durch den Zusatz Option WITH mit den Inhalten der entsprechenden Felder <g1 >.... <g9> ersetzt werden können. Auch einzeln auftretende Zeichen '&' werden nach ihrer Reihenfolge durch den Inhalt des entsprechenden Parameters <gi> ersetzt. Die Ausgabe des Zeichens '&' selbst erreicht man durch die Angabe '&&' im Titel.

Es empfiehlt sich den GUI-Titel für ein Dynpro zum Zeitpunkt PBO des Dynpros zu setzen.

Beispiel

Dialogstatus und Dynpro.

PROGRAM demo_dynpro_gui_status.

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

CALL SCREEN 100.

MODULE init_screen_0100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.
  SET TITLEBAR '100'.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
      LEAVE PROGRAM.
    WHEN OTHERS.
      output = save_ok.
  
ENDCASE.
ENDMODULE.

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

Diese Grafik wird im zugehörigen Text erklärt

Der für die Dynprofelder relevante Teil der Elementliste ist wie folgt:

Name

Typ

Format

OUTPUT

I/O

CHAR

OK_CODE

OK

OK

Für das Bildschirmfeld von OUTPUT ist die Eingabemöglichkeit im Screen Painter ausgeschaltet.

Die Bildschirmablauflogik ist:

PROCESS BEFORE OUTPUT.
  MODULE init_screen_0100.

PROCESS AFTER INPUT.
  
MODULE user_command_0100.

Im Modul INIT_SCREEN_100 werden zum Zeitpunkt PBO der Dialogstatus STATUS_100 und ein Titel 100 gesetzt. Der Dialogstatus ist wie folgt mit dem Menu Painter angelegt worden:

Menüleiste

Menü Demo:

Funktionscode

Text

SAVE

Sichern

PRINT

Drucken

DELETE

Löschen

EXIT

Beenden

Menü Bearbeiten:

Funktionscode

Text

MARK

Markieren

SELE

Auswählen

SEARCH

Suchen

SEARCH+

Weiter suchen

TOP

Erste Seite

PAGE_UP

Vorherige Seite

PAGE_DOWN

Nächste Seite

BOTTOM

Letzte Seite

CANCEL

Abbrechen

Menü Springen:

Funktionscode

Text

BACK

Zurück

Menü Zusätze:

Funktionscode

Text

FUNCT_F5

Funktion 1

FUNCT_F6

Funktion 2

FUNCT_F7

Funktion 3

FUNCT_F8

Funktion 4

Menü Umfeld:

Funktionscode

Text

MENU_1

Menü 1

MENU_2

Menü 2

MENU_3

Menü 3

Symbolleiste

Symbol

Funktionscode

Text

Diese Grafik wird im zugehörigen Text erklärt

 

 

Diese Grafik wird im zugehörigen Text erklärt

SAVE

Sichern

Diese Grafik wird im zugehörigen Text erklärt

BACK

Zurück

Diese Grafik wird im zugehörigen Text erklärt

EXIT

Beenden

Diese Grafik wird im zugehörigen Text erklärt

CANCEL

Abbrechen

Diese Grafik wird im zugehörigen Text erklärt

PRINT

Drucken

Diese Grafik wird im zugehörigen Text erklärt

SEARCH

Suchen

Diese Grafik wird im zugehörigen Text erklärt

SEARCH+

Weiter suchen

Diese Grafik wird im zugehörigen Text erklärt

PAGE_UP

Vorherige Seite

Diese Grafik wird im zugehörigen Text erklärt

PAGE_DOWN

Nächste Seite

Diese Grafik wird im zugehörigen Text erklärt

BOTTOM

Letzte Seite

Diese Grafik wird im zugehörigen Text erklärt

CANCEL

Abbrechen

Drucktastenleiste

Position

Funktionscode

Text

1

SELE

Diese Grafik wird im zugehörigen Text erklärt

2

MARK

Diese Grafik wird im zugehörigen Text erklärt

3

DELETE

Diese Grafik wird im zugehörigen Text erklärt

4

FUNCT_F5

Funktion 1

5

FUNCT_F6

Funktion 2

Funktionstasten

Taste

Funktionscode

Text

Ikone

F2

SELE

Auswählen

Diese Grafik wird im zugehörigen Text erklärt

F9

MARK

Markieren

Diese Grafik wird im zugehörigen Text erklärt

Shift+F2

DELETE

Löschen

Diese Grafik wird im zugehörigen Text erklärt

F5

FUNCT_F5

Funktion 1

 

F6

FUNCT_F6

Funktion 2

 

F7

FUNCT_F7

Funktion 3

 

F8

FUNCT_F8

Funktion 4

 

Alle Funktionscodes sind als Menüeinträge vorhanden, aber nicht alle sind Funktionstasten zugeordnet. Die Funktionscodes der Symbolleiste aktivieren die Symbole und belegen automatisch deren Funktionstasten. Einige der zusätzlichen Funktionstasten sind der Drucktastenleiste zugeordnet.

Im Modul USER_COMMAND_100 wird als erstes der Inhalt des Felds OK_CODE der Hilfsvariablen SAVE_OK zugewiesen und OK_CODE wird initialisiert. Dieses Vorgehen ist immer empfohlen, da dadurch zum Zeitpunkt PBO auch das Dynprofeld OK_CODE wieder initialisiert wird und keinen unbeabsichtigten Wert enthält. Dann wird der gewählte Funktionscode dem Feld OUTPUT zugewiesen und dadurch im entsprechenden Bildschirmfeld angezeigt, außer bei BACK, EXIT und CANCEL. Bei letzteren wird das Programm beendet.

Der Funktionscode SELE kann hier beispielsweis wie folgt an das ABAP-Programm übergeben werden:

·         Auswahl von Auswählen im Menü Bearbeiten.

·         Auswahl der Drucktaste Diese Grafik wird im zugehörigen Text erklärt in der Drucktastenleiste

·         Auswahl der Taste F2 auf der Tastatur

·         Drücken der rechten Maustaste und Auswahl von Auswählen.

·         Doppelklick mit der Maus auf dem Bildschirmfeld OUTPUT.

·         Eingabe von SELE in das Befehlsfeld und Auwahl von ENTER.

Die übrigen Funktionscodes entsprechend ihrer Definition und ohne Maus-Doppelklick.

 

Ende des Inhaltsbereichs