Ein Tabstrip gleicht einem Karteikasten, dessen Karten beschriftete Reiter
tragen und verschiedene Informationen beinhalten. Durch Klick auf einen Reiter
tritt dieser zusammen mit den Informationen in den Vordergrund.
Beides muß in der Ablauflogik (8, 9, 10) programmiert werden. Der Karteikasten
(Tabstrip, 1, 2), seine Reiter (Drucktasten, 3, 5), der Bereich für die
Informationen (Subscreen-Bereich, 4) und die Informationen selbst
(Subscreen-Dynpros, 7) werden mit dem Screen-Painter gestaltet.
1 Variablen im TOP-Include definieren (ABAP-Editor)
Im TOP-Include wird eine Variable für den Tabstrip (Karteikasten)
definiert.
Vorschau Ablauflogik: Diese Anweisung erzeugt eine
Struktur, von der die Komponente ACTIVETAB benötigt wird. Sie bestimmt den
Reiter des Karteikastens, der im Vordergrund steht.
Eine weitere Variable wird für Nummern von Benutzerdialogen (Dynpros)
definiert. Ihr Typ entspricht dem Systemfeld sy-dynnr, der Nummer des
gerade aktuellen Dynpros.
Vorschau Ablauflogik: Die Dynpronummern werden später
in der Ablauflogik festgelegt und in einem definierten Bereich auf der Karteikarte
(Subscreen-Bereich) angezeigt.
2 Einen Karteikasten in einen Benutzerdialog einfügen (Screen-Painter)
Im Layout des Screen-Painters wird nach Klick auf den Tabstrip-Button ein
Karteikasten (Tabstrip) auf das Dynpro gebracht. Er wird mit dem Namen der
Variable versehen, die im TOP-Include festgelegt wurde.
oder
3 Die Reiter des Karteikastens gestalten (Screen-Painter)
Die Reiter des Karteikastens bestehen aus Drucktasten. Weitere Drucktasten
als Reiter können unbegrenzt eingefügt werden.
Vorschau Ablauflogik:
Mit dem Befehl <Tabstrip>-ACTIVETAB stellt man einen
Reiter direkt oder über eine Variable in den Vordergrund.
Weitere Befehle können in Abhängigkeit vom Reiter stehen, z.B. mit der
CASE-Anweisung.
4 Auf die Karteikarten einen Anzeigebereich legen (Screen-Painter)
In den Karteikasten wird entweder ein Anzeigebereich (Subscreen-Bereich) für
alle Karteikarten (Alternative A1) oder für jede Karteikarte
einzeln (Alternative A2) gelegt. In diesen Anzeigebereich werden
weitere Benutzerdialoge (Dynpros) eingebettet, deren Typ als Subscreen definiert ist (Subscreen-Dynpros). Die
Informationen erscheinen also nur deswegen auf einer Karteikarte, weil dort ein
Subscreen-Bereich angelegt ist.
Jeder Subscreen-Bereich wird mit einem Namen versehen.
oder
Vorschau Ablauflogik:
Mit dem Befehl CALL SUBSCREEN <subscreen-name> wird
ein Subscreen-Dynpro in den Subscreen-Bereich gelegt.
5 Die Drucktasten des Karteikastens konfigurieren (Screen-Painter)
Allen Drucktasten des Karteikastens wird ein
Anzeigebereich (Subscreen-Bereich) zugewiesen.
A1: Allen Drucktasten wird ein und derselbe
Subscreen-Bereich (hier ,SUBI') zugewiesen. Wenn eine Drucktaste betätigt wird, wird
der Inhalt dieses Subscreen-Bereichs in der Ablauflogik (PAI und PBO) immer wieder neu
bestimmt. Die Drucktasten werden deshalb mit verschiedenen
Funktionscodes (hier ,VERBR', ,KOST') belegt, die in sy-ucomm und im
OK-Feld abgelegt werden. Der Funktionstyp bleibt leer.
A2: Alle Subscreen-Bereiche werden beim ersten Aufruf des Dynpros
mit je einem Subscreen-Dynpro gefüllt. Die Betätigung der Drucktasten wechselt zwar
die Ansicht, ein PBO oder PAI wird jedoch nicht ausgelöst. Der
Funktionstyp wird dazu auf P gesetzt.
6 Folgedynpro festlegen (Screen-Painter)
Ein Dynpro mit einem Karteikasten weist immer auf sich selbst.
A1: Eine Benutzeraktion wie z.B. Klick auf einen Reiter, die
den PAI auslöst, führt also wieder in den eigenen PBO.
Die Benutzeraktion wird im Systemfeld sy-ucomm und im OK-Feld des Dynpros
festgehalten.
7 Benutzerdialoge für den Anzeigebereich gestalten (Screen-Painter)
Es werden für jede Karteikarte ein Benutzerdialog (Dynpro) in üblicher Weise
gestaltet.
Im Unterschied zum normalen Dynpro wird der Dynprotyp als
Subscreen definiert.
Das Folgedynpro eines Subscreen-Dynpro ist immer 0.
8 Ablauflogik: Zur betätigten Drucktaste einen Reiter festlegen (ABAP-Editor)
A1: Wenn eine Drucktaste des Karteikastens betätigt wurde,
wird ihr Funktionscode ...
... in die Systemvariable sy-ucomm und in das OK-Feld des Dynpros geschrieben und
der PAI ausgelöst. In einem PAI-Modul kann damit zunächst der entsprechende
Reiter im Vordergrund dargestellt werden, indem der Funktionscode einer
betätigten Drucktaste in die Struktur <Tabstrip>-ACTIVETAB
gelegt wird.
9 Ablauflogik: Zum festgelegten Reiter einen Benutzerdialog festlegen (ABAP-Editor)
Der erste Reiter des Karteikastens ist sichtbar, wenn in der Struktur
<Tabstrip>-ACTIVETAB der Funktionscode der ersten Drucktaste
oder ein nicht vorhandener Funktionscode oder gar kein Funktionscode steht.
Ist in der Struktur <Tabstrip>-ACTIVETAB der
Funktionscode einer Karteikasten-Drucktaste abgelegt, wird diese im Vordergrund
angezeigt.
A1: Beim Klicken auf einen Reiter wird in einem PAI-Modul
die Struktur <Tabstrip>-ACTIVETAB mit einem Funktionscode belegt (siehe
1.1.8). Von ihr kann also abhängig gemacht werden, welches Subscreen-Dynpro
aufgerufen wird.
Dieses PBO-Modul wertet die Reiter des Karteikastens aus, um ein gewünschtes
Subscreen-Dynpro in einer Variablen zu bestimmen. Es setzt hier voraus, daß
zuvor in einem PAI-Modul der Reiter des Karteikastens entsprechend der
Benutzeraktion richtig bestimmt wurde. (Genausogut könnte die Benutzeraktion mit
sy-ucomm oder dem in einer Variable gesicherten OK-Feld ausgewertet werden.
[CASE soko. WHEN 'VERBR'. kaka-activetab = soko. dyni ='210'. ...]
Dann muß hier statt im PAI noch der Reiter des Karteikastens bestimmt werden.)
Der Umweg über eine Variable muß gewählt werden, weil der Aufruf eines
Subscreen-Dynpros im PBO des Dynpros erfolgen muß und nicht in einem
PBO-Modul erfolgen kann.
Erster Aufruf: Für den ersten Aufruf des Dynpros, wenn
KAKA-ACTIVETAB und DYNI noch initial oder unzulässig belegt sind, muß eine
Regelung vorgesehen werden, beispielsweise der erste Reiter mit dem ersten
Subscreen-Dynpro.
10 Ablauflogik: In den Subscreen-Bereich ein Subscreen-Dynpro legen (Screen-Painter)
Der Befehl zum Füllen eines Subscreen-Bereichs mit einem Subscreen-Dynpro muß
im PBO stehen, nicht in einem PBO-Modul.
A2: Hat jede Karteikarte einen eigenen Subscreen-Bereich,
wird jeder mit einem konkreten Subscreen-Dynpro auf diese Weise gefüllt.
A1: Gibt es nur einen Subscreen-Bereich für alle
Karteikarten, wird das jeweils passende Subscreen-Dynpro zum angeklickten Reiter
im PBO-Modul ermittelt und in einer Variablen festgehalten. In diesem Fall würde
die Angabe eines konkreten Dynpros dazu führen, daß unabhängig vom Reiter der
Karteikarte immer dasselbe Subscreen-Dynpro 210 in den Subscreen-Bereich gelegt
wird.
A1: Stattdessen wird für den einen
Subscreen-Bereich die Variable des ermittelten Subscreen-Dynpro angegeben.
q.e.d.
Glossar
ABAP-Editor:
Text-Editor für die Programmiersprache ABAP.
Ablauflogik:
Programmcode, welcher die Anzeige eines Benutzerdialoges bestimmt oder eine Benutzeraktion auswertet.
Dynpro:
Dynamisches Programm. Benutzerdialog mit vorbereitendem oder auswertendem Programmcode.
PBO:
Process before output. Programmcode, welcher die Anzeige eines Benutzerdialogs bestimmt.
PAI:
Process after input: Programmcode, welcher eine Benutzeraktion auswertet.
PAI-Module:
Gekapselter Programmcode, welcher nach einer Benutzeraktion aufgerufen werden kann.
Screen-Painter:
Grafisches Werkzeug zum Gestalten von Benutzerdialogen.
Subscreen-Bereich:
Bereich innerhalb eines Benutzerdialogs für einen separaten Benutzerdialog.
Subscreen-Dynpro:
Benutzerdialog, welcher innerhalb eines anderen angezeigt wird.
Systemfeld:
Variablen, die das System bereitstellt.
Tabstrip:
Verschiedene Dynpros in der Art eines Karteikastens.