ABAP Subscreens Tutorial: Subscreen aufrufen in SAP
Bevor Sie dieses Tutorial lesen, stellen Sie sicher, dass Sie wissen, was ein Dialogprogramm ist …
UNTERBILDSCHIRM AUFRUFEN
- Ein Unterbildschirm ist ein unabhängiger Bildschirm, der in einem Bereich eines anderen („Haupt-“)Bildschirms angezeigt wird.
- Mit Subscreens können Sie zur Laufzeit einen Bildschirm in einen anderen einbetten. Sie können dem Hauptbildschirm mehrere Unterbildschirme hinzufügen.
- Der Begriff Subscreen bezieht sich sowohl auf den Bildschirm, den Sie einbetten, als auch auf den Bereich auf dem Hauptbildschirm, in dem Sie ihn platzieren. In diesem Tutorial geht es um Subscreen-Bereiche. Die durch die SE51-Transaktion erstellten tatsächlichen Bildschirme werden als Subscreen-Bildschirme bezeichnet, wenn sie in den Bildschirmattributen definiert sind.
- Wenn Sie einen Subscreen verwenden, wird die Ablauflogik des eingebetteten Bildschirms auch in die Ablauflogik des Hauptbildschirms eingebettet. Die Verwendung von Subscreens auf Bildschirmen ähnelt daher der Verwendung von Includes in ABAP-Programme.
Um einen Subscreen zu verwenden, müssen Sie drei einfache Schritte befolgen
- Definieren Sie den/die Subscreen-Bereich(e) auf einem Dynpro
- Definieren Sie geeignete Subscreen-Bildschirme
- Binden Sie den Subscreen-Bildschirm in den Subscreen-Bereich ein.
Außerdem müssen Sie den Rahmen des Unterbildschirms und des Hauptbildschirms anpassen. Sie müssen es im Feld „Feldname“ benennen.
Darüber hinaus müssen Sie auch die Felder innerhalb des Unterbildschirms anpassen, damit sie im Hauptbildschirm angezeigt werden. Falls der Unterbildschirm so definiert ist, dass er größer ist als der verfügbare Bereich im Hauptbildschirm, ist nur der Teil des Unterbildschirms sichtbar, der in den verfügbaren Bereich passt. Die Fläche wird immer von der oberen linken Ecke des Bildschirms aus gemessen. Daher sollten Sie beim Definieren von Teilbildschirmbereichen und beim Erstellen von Teilbildschirmen die entsprechende Sorgfalt walten lassen.
BEISPIEL
Hier haben wir beispielsweise zwei Unterbildschirmbereiche auf dem Hauptbildschirm definiert und zwei verschiedene Unterbildschirme an die entsprechenden Bereiche angehängt. Bei jedem Aufruf des Hauptbildschirms wird das PBO des Hauptbildschirms aufgerufen. Vor der Anzeige werden jedoch auch die PBOs jedes Bildschirms aufgerufen, der mit Unterbildschirmbereichen auf dem Hauptbildschirm verbunden ist.
Sie können ein Subscreen-Dynpro mit der Anweisung CALL SUBSCREEN in die Ablauflogik des Hauptdynpros einbinden.
Um einen Subscreen-Screen in den Subscreen-Bereich des Hauptscreens einzubinden und seine PBO-Ablauflogik aufzurufen, verwenden Sie die folgende Anweisung im PBO-Ereignis des Hauptscreens:
PROCESS BEFORE OUTPUT. CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
Diese Anweisung weist dem Subscreen-Dynpro eine Nummer zu zum aufgerufenen Subscreen-Bereich . Sie können auch das Programm angeben, in dem der Subscreen-Bildschirm definiert ist (optional). Wenn Sie das Programm nicht explizit angeben, sucht das System nach dem Subscreen-Dynpro im gleichen ABAP-Programm wie das Hauptprogramm. Wenn kein entsprechendes Subscreen-Dynpro gefunden wird, kommt es zu einem Laufzeitfehler. An gleicher Stelle wird auch die PBO-Ablauflogik des Subscreen-Screens eingebunden. Dadurch können PBO-Module des ABAP-Programms aufgerufen werden, in dem der Subscreen-Bildschirm definiert ist. Am Ende des Subscreen-PBO werden die globalen Felder aus dem Programm an alle gleichnamigen Dynprofelder im Subscreen-Dynpro übergeben. Die PBO-Ablauflogik des Subscreen-Screens kann selbst weitere Subscreens umfassen.
Der Name des Subscreen-Bereichs müssen direkt ohne Anführungszeichen eingegeben werden. Sie können die Namen angeben Und entweder als Literale oder Variablen. Wenn Sie Variablen verwenden, müssen Sie gleichnamige Variablen im ABAP-Programm deklarieren und füllen. Die Bildschirmnummer muss 4 Zeichen lang sein. Wenn Sie einem Bereich kein Subscreen-Dynpro zuordnen, bleibt dieser leer.
Um die PAI-Ablauflogik des Subscreen-Dynpros aufzurufen, verwenden Sie die folgende Anweisung in der PAI-Ablauflogik des Hauptscreens:
PROCESS AFTER INPUT. CALL SUBSCREEN <area>.
Diese Anweisung beinhaltet die PAI-Ablauflogik des im Subscreen-Bereich enthaltenen Subscreen-Screens im PBO-Event. Dadurch können PAI-Module des ABAP-Programms aufgerufen werden, in dem der Subscreen-Bildschirm definiert ist. Der Datentransport zwischen gleichnamigen Feldern im Subscreen-Dynpro und dem ABAP-Programm erfolgt entweder beim Auslösen des PAI-Ereignisses oder bei den entsprechenden FIELD-Anweisungen in der PAI-Ablauflogik des Subscreen-Dynpros.
Punkte, die man sich merken sollte
- Namen von Elementen von Unterbildschirmen innerhalb eines Bildschirms sollten eindeutig sein
- Sie sollten weder OK_CODE noch FCODE an den Unterbildschirm angehängt haben. Der OK_CODE des Hauptbildschirms selbst ist der OK_CODE des Unterbildschirms
- Unterbildschirme dürfen keine Dialogmodule enthalten, die SET TITLEBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN oder LEAVE TO SCREEN enthalten. Dies führt zu einem Laufzeitfehler.
- Sie müssen es in der Ablauflogik (sowohl PBO als auch PAI) des Hauptbildschirms aufrufen.
- CALL SUBSCREEN ist in CHAIN..ENDCHAIN- und LOOP ENDLOOP-Anweisungen nicht zulässig
- Es kann kein AT EXIT-COMMAND-Modul vorhanden sein
- Die von Ihnen verwendeten Felder sind die globalen Felder. Sie müssen im Top-Include deklariert werden
- Bei Verwendung von Subscreens von einem anderen Dialogprogramm Die Datenübertragung findet nicht statt, es sei denn, Sie fügen einen bestimmten Code hinzu.