Anfang des InhaltsbereichsTabStrips Dokument im Navigationsbaum lokalisieren

Ein TabStrip oder TabStrip-Control ist ein Bildschirmobjekt, das aus mehreren Seiten besteht. Eine TabStrip-Seite setzt sich aus einem einzeiligen Tab-Reiter und einem Tabstrip-Rahmen zusammen. Enthält ein TabStrip mehr Seiten, als durch Tab-Reiter angezeigt werden können, werden die nicht sichtbaren Tab-Reiter durch eine Blätterleiste zugänglich gemacht. Eine Gesamtübersicht über alle Tab-Reiter ist dann ebenfalls durch eine Drucktaste zugänglich.

Diese Grafik wird im zugehörigen Text erklärt

TabStrips unterstützen es, unterschiedliche Bildschirme einer Anwendung auf einem Dynpro zu definieren und auf übersichtliche Weise zwischen ihnen zu navigieren.

Technisch gesehen ist eine TabStrip-Seite ein Subscreen (Subscreen-Bereich mit eingebundenem Subscreen-Dynpro) mit einer zugeordneten Drucktaste, die durch den Tab-Reiter dargestellt ist.

Diese Grafik wird im zugehörigen Text erklärt

Alle TabStrip-Seiten werden zum eigentlichen TabStrip-Control zusammengefaßt. TabStrips unterliegen somit den gleichen Restriktionen wie Subscreens. Insbesondere kann der GUI-Status beim Wechsel zwischen TabStrip-Seiten nicht geändert werden. Andererseits sind TabStrips damit in das Dynprokonzept integriert, so daß TabStrips bei Abläufen im Batch-Input kein Problem darstellen.

Um einen TabStrip auf dem Bildschirmbild eines Dynpros zu verwenden, muß das verwendete SAP GUI mindestens Release 4.0 haben und das Betriebssystem des SAP GUI muß entweder Motiv, Windows 95, MacOS, oder NT mindestens Version 3.51 sein.

Um einen TabStrip anzulegem, muß:

  1. Der Tabstrip-Bereich auf einem Bildschirmbild festgelegt und die Tab-Reiter definiert werden.
  2. Jedem Tab-Reiter ein Subscreen-Bereiche zugewiesen werden.
  3. Die Dynpro-Ablauflogik programmiert werden.
  4. Die ABAP-Verarbeitungslogik programmiert werden.

Dabei kann man festlegen, ob im SAP GUI oder auf dem Applikationsserver zwischen den einzelnen TabStrip-Seiten geblättert wird. Im ersten Fall gehört zu jeder TabStrip-Seite ein eigener Subscreen-Bereich, im zweiten Fall gibt es nur einen einzigen Subscreen-Bereich für alle Seiten.

Definition von TabStrip-Bereich und Tab-Reitern

TabStrip-Bereich und Tab-Reiter werden im Layout des Bildschirmbilds definiert.

Der TabStrip-Bereich hat einen eindeutigen Namen, eine Position, Länge und Höhe. Für einen TabStrip-Bereich kann mit den Resizing-Attributen festgelegt werden, ob er Größenänderungen des Haupt-Bildschirms in vertikaler oder horizontaler Richtung unterstützt, wobei eine Mindestgröße festgelegt werden kann.

Ein neu definierter TabStrip ist mit zwei Reitern in der TabStrip-Reiterzeile vorbelegt. Tab-Reiter werden genau wie Drucktasten behandelt. Zusätzliche Tab-Reiter werden einfach dadurch erzeugt, indem man Drucktasten in der TabStrip-Reiterzeile anlegt. Die Attribute von Tab-Reitern entsprechen denen von Drucktasten und jeder Tab-Reiter hat einen Namen, einen Text und einen Funktionscode, wobei auch Ikonen und dynamische Texte möglich sind.

Zuweisung von Subscreen-Bereichen an Tab-Reiter

Jedem Tab-Reiter muß ein Subscreen-Bereich zugewiesen werden. Hierbei gibt es zwei Möglichkeiten:

Blättern im SAP GUI

Jedem Tab-Reiter wird ein eigener Subscreen-Bereich zugewiesen und die Funktionscodes der einzelnen Reiter werden mit dem Typ P (Lokale GUI-Funktion) definiert. In der Ablauflogik werden alle verwendeten Subscreens zum Zeitpunkt PBO eingebunden. Dadurch sind alle TabStrip-Seiten im SAP GUI lokal vorhanden.

Wählt der Benutzer einen Reiter, wird im SAP GUI zwischen den einzelnen TabStrip-Seiten geblättert. Der gesamte TabStrip verhält sich gewissermaßen wie ein einziges Dynpro. Insbesondere wird bei der Auswahl eines Reiters nicht das Ereignis PAI ausgelöst und es werden keine Daten transportiert. Dies steigert zwar die Performance des TabStrips, bewirkt aber andererseits, daß bei einer Benutzeraktion, die PAI auslöst, alle Eingabeüberprüfungen des gesamten Dynpros ausgeführt werden. Bei einer Benutzeraktion auf einer TabStrip-Seite kann es dann passieren, daß ein nicht ausgefülltes Mußfeld auf einer anderen TabStrip-Seite angesprungen wird.

Das Blättern im SAP GUI eignet sich also eher für Bildschirme, die Daten anzeigen statt Benutzereingaben entgegennehmen.

Blättern auf dem Applikationsserver

Jedem Tab-Reiter wird der gleiche Subscreen-Bereich zugewiesen und dieser wird zum Zeitpunkt PBO eingebunden. Die Funktionscodes der einzelnen Reiter werden ohne Typisierung definiert. Bei der Auswahl eines Tab-Reiters wird PAI ausgelöst und die ABAP-Ablauflogik muß anhand des Funktionscodes die zugehörige TabStrip-Seite aktivieren und dem Subscreen-Bereich das richtige Subscreen-Dynpro zuweisen.

Daß jede Auswahl eines Reiters das Ereignis PAI auslöst, belastet zwar den Applikationsserver dafür finden die Eingabeüberprüfungen nur für die aktuelle TabStrip-Seite statt.

Vorgehensweise in beiden Fällen

Die Subscreen-Bereiche werden innerhalb des TabStrip-Bereichs angelegt. Im graphischen Screen Painter werden die Subscreen-Bereiche durch das vorherige Markieren eines oder mehrerer Tab-Reiter diesen Reitern zugeordnet. Die Zuordnung eines Subscreen-Bereichs zu einem Tab-Reiter kann auch manuell in den Attributen des Tab-Reiters vorgenommen werden, indem im Referenzfeld der Name des Subscreenbereiches eingetragen wird.

Die Vorgehensweise im alphanumerischen Screen Painter ist unter Strukturlink TabStrips anlegen beschrieben.

Für das Blättern im SAP GUI legt man pro Tab-Reiter einen Subscreen-Bereich an. Für das Blättern auf dem Applikationsserver markiert man alle Tab-Reiter und legt nur einen Subscreen-Bereich an. Die Subscreen-Bereiche dürfen nicht die erste Zeile im Tabstrip-Bereich überdecken. Andererseits können sich in einem Tabstrip-Bereich mehrere Subscreen-Bereiche ausnahmsweise überlappen.

Ablauflogik programmieren

Die Behandlung von TabStrips in der Dynproablauflogik beschränkt sich auf die Einbindung der beteiligten Subscreens. Bezüglich Ablauf und Datentransport zum ABAP-Programm gilt das gleiche wie für normale Subscreens. Entsprechend der beiden Blättermöglichkeiten ergeben sich zwei verschiedene Arten der Programmierung der Dynpro-Ablauflogik.

Blättern im SAP GUI

Beim Blättern im SAP GUI müssen in alle Subscreen-Bereiche Subscreen-Dynpros eingebunden werden:

PROCESS BFORE OUTPUT.
  ...
  CALL SUBSCREEN: <area1> INCLUDING [<prog 1>] <dynp 1>,
                  <area2> INCLUDING [<prog 2>] <dynp 2>,
                  <area3> INCLUDING [<prog 3>] <dynp 3>,
                  ...
  ...

PROCESS AFTER INPUT.
  ...
  CALL SUBSCREEN: <area1>,
                  <area2>,
                  <area3>,
                  ...
  ...

Blättern auf dem Applikationsserver

Beim Blättern auf dem Applikationsserver muß nur in den einen Subscreen-Bereich ein Subscreen-Dynpro eingebunden werden:

PROCESS BFORE OUTPUT.
  ...
  CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
  ...

PROCESS AFTER INPUT.
  ...
  CALL SUBSCREEN <area>.
  ...

Behandlung im ABAP-Programm

Um TabStrips im ABAP-Programm zu behandeln, muß für jeden TabStrip mit folgender Anweisung im Deklarationsteil des Programms ein Control deklariert werden:

CONTROLS <ctrl> TYPE TABSTRIP.

Dabei ist <ctrl> der Name des TabStrip-Bereichs auf einem Dynpro des ABAP-Programms. Das Control ermöglicht es dem ABAP-Programm den TabStrip zu beeinflussen. Dazu deklariert die Anweisung eine Struktur mit dem Namen <ctrl>, von der im Programm nur die Komponente ACTIVETAB benötigt wird.

Vor dem Senden des Bildschirms verwendet man das Control, um die aktive TabStrip-Seite zu bestimmen. Hierfür weist man der Komponente ACTIVETAB den Funktionscode des entsprechenden Tab-Reiters zu:

<crtl>-ACTIVETAB = <fcode>.

Beim Blättern im SAP GUI kann dies einmal vor dem Senden des Bildschirms geschehen, um den TabStrip zu initialisieren. Standardmäßig ist die erste TabStrip-Seite aktiv. Danach werden die aktiven Seiten durch Auswahl der Tab-Reiter im SAP GUI selbst gesetzt.

Beim Blättern auf dem Applikationsserver muß diese Zuweisung vor dem ersten Senden und bei jedem Blättern ausgeführt werden, um die ausgewählte TabStrip-Seite zu aktivieren. Gleichzeitig muß das einzubindende Subscreen-Dynpro festgelegt werden.

TabStrip-Seiten können dynamisch ausgeblendet werden, indem das Feld ACTIVE der Tabelle SCREEN für den zugehörigen Tab-Reiter auf 0 gesetzt wird.

Zum Zeitpunkt PAI enthält ACTIVETAB den Funktionscode des auf dem Dynpro zuletzt aktiven Tab-Reiters.

Beim Blättern im SAP GUI kann dadurch festgestellt werden, welche Seite der Benutzer gerade angezeigt bekommt. Beim Blättern auf dem Applikationsserver wird die gerade aktive Seite ohnehin im ABAP-Programm kontrolliert.

Das OK-Feld verhält sich je nach Blättermethode unterschiedlich:

Beim Blättern im SAP GUI löst die Auswahl eines Tab-Reiters nicht das Ereignis PAI aus und das OK-Feld wird nicht versorgt. Das OK-Feld wird nur durch Benutzeraktionen im GUI-Status oder die Auswahl von Drucktasten außerhalb des TabStrip-Bereichs bzw. auf den Subscreens versorgt.

Beim Blättern auf dem Applikationsserver löst die Auswahl eines Tab-Reiters das Ereignis PAI aus und das OK-Feld wird mit dem zugehörigen Funktionscode versorgt.

Um das Blättern auszuführen, muß dieser Funktionscode an die Komponente ACTIVETAB des Controls zugewiesen werden.

<crtl>-ACTIVETAB = <ok-code>.

Dadurch wird der Funktionscode der zuletzt aktiven TabStrip-Seite mit dem des ausgewählten Tab-Reiters überschrieben. Gleichzeitig muß dafür gesorgt werden, daß das richtige Subscreen-Dynpro in den Subscreen-Bereich eingebunden wird.

Die sonstige Behandlung von TabStrips im ABAP-Programm ist ähnlich der Behandlung von normalen Subscreens, d.h. im ABAP-Programm eines Subscreen-Dynpros müssen die in der Ablauflogik aufgerufenen Dialogmodule programmiert werden.

Beispiele

Beispiel

TabStrips mit Blättern im SAP GUI.

REPORT demo_dynpro_tabstrip_local.

CONTROLS mytabstrip TYPE TABSTRIP.

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

mytabstrip-activetab = 'PUSH2'.

CALL SCREEN 100.

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'SCREEN_100'.
ENDMODULE.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE user_command INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  IF save_ok = 'OK'.
    MESSAGE i888(sabapdocu) WITH 'MYTABSTRIP-ACTIVETAB ='
                                  mytabstrip-activetab.
  ENDIF.
ENDMODULE.

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

Diese Grafik wird im zugehörigen Text erklärt

Es ist ein TabStrip-Bereich namens MYTABSTRIP mit drei Tab-Reitern PUSH1, PUSH2, PUSH3 und gleichnamigen Funktionscodes vom Typ P angelegt. Jedem Tab-Reiter ist einer der gleichgroßen Subscreen-Bereiche SUB1 bis SUB3 zugeordnet. Die Drucktaste hat den Namen BUTTON und den Funktionscode 'OK'.

Im gleichen ABAP-Programm sind drei Subscreen-Dynpros 110 bis 130 definiert, die von der Größe her genau in obige Bereiche passen. Ihr Layout ist:

Diese Grafik wird im zugehörigen Text erklärt

Die Bildschirmablauflogik von Dynpro 100 ist:

PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN: sub1 INCLUDING sy-repid '0110',
                  sub2 INCLUDING sy-repid '0120',
                  sub3 INCLUDING sy-repid '0130'.

PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  CALL SUBSCREEN: sub1,
                  sub2,
                  sub3.
  MODULE user_command.

Die Bildschirmablauflogik der Subscreen-Dynpros 110 bis 130 enthält keine Modulaufrufe.

Bei Ausführung des Programms erhält der Benutzer einen Bildschirm, auf dem die zweite TabStrip-Seite aktiv ist, da vor Aufruf von Dynpro 100 die Komponente ACTIVETAB der Struktur MYTABSTRIP auf PUSH2 gesetzt wird. Der Benutzer kann zwischen den TabStrip-Seiten blättern, ohne daß das Ereignis PAI ausgelöst wird. Auf jeder TabStrip-Seite ist einer der drei Subscreen-Dynpros eingebunden.

Durch Auswahl der Drucktaste Weiter wird das Ereignis PAI ausgelöst und eine Informationsnachricht zeigt den Funktionscode des Tab-Reiters der geraden aktiven TabStrip-Seite an.

Beispiel

TabStrips mit Blättern auf dem Applikationsserver.

REPORT demo_dynpro_tabstrip_server.

CONTROLS mytabstrip TYPE TABSTRIP.

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

DATA  number TYPE sy-dynnr.

mytabstrip-activetab = 'PUSH2'.
number = '0120'.

CALL SCREEN 100.

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'SCREEN_100'.
ENDMODULE.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE user_command INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  IF save_ok = 'OK'.
    MESSAGE i888(sabapdocu) WITH 'MYTABSTRIP-ACTIVETAB ='
                                  mytabstrip-activetab.
  ELSE.
    mytabstrip-activetab = save_ok.
    CASE save_ok.
      WHEN 'PUSH1'.
        number = '0110'.
      WHEN 'PUSH2'.
        number = '0120'.
      WHEN 'PUSH3'.
        number = '0130'.
    ENDCASE.
  ENDIF.
ENDMODULE.

Die statische Folgedynpronummer von Dynpro 100 ist 100 und sein Layout ist wie in obigem Beispiel, wobei die Funktionscodes der drei Tab-Reiter jedoch nicht typisiert sind und allen Tab-Reitern ein gemeinsamer Subscreen-Bereich SUB zugeordnet ist.

Es sind die gleichen Subscreen-Dynpros 110 bis 130 definiert wie in obigem Beispiel.

Die Bildschirmablauflogik von Dynpro 100 ist:

PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN sub INCLUDING sy-repid number.

PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  CALL SUBSCREEN sub.
  MODULE user_command.

Hier wird dynamisch zu PBO ein Subscreen-Dynpro in den Subscreen-Bereich SUB eingebunden.

Die Bildschirmablauflogik der Subscreen-Dynpros 110 bis 130 enthält keine Modulaufrufe.

Das Beispiel hat genau die gleiche Funktionalität wie das vorhergehende, wobei das Blättern zwischen den TabStrip-Seiten aber im ABAP-Programm programmiert ist. Hierfür wird bei jeder Auswahl eines Tab-Reiters der Funktionscode des OK-Felds an die Komponente ACTIVETAB der Struktur MYTABSTRIP zugewiesen. Gleichzeitig wird die Variable NUMBER mit der Dynpronummer des Subscreen-Dynpros versorgt, die im Subscreen-Bereich SUB des TabStrips angezeigt werden soll.

 

 

Ende des Inhaltsbereichs