Anfang des InhaltsbereichsSpeicherstrukturen eines ABAP-Programms Dokument im Navigationsbaum lokalisieren

In der Übersicht über das R/3-Basis-System haben wir gesehen, daß jeder Benutzer innerhalb eines SAP GUI bis zu sechs R/3-Fenster öffnen kann. Jedes dieser Fenster entspricht einem Modus auf dem Applikationsserver der einen eigenen Speicherbereich im Shared Memory belegt.

Das erste Anwendungsprogramm, das in einem Modus gestartet wird, öffnet innerhalb des Modus einen ersten internen Modus. Der Speicherbereich des internen Modus enthält das Anwendungsprogramm und seine Arbeitsdaten. Beim Aufruf von externen Routinen werden deren Rahmenprogramme und Arbeitsdaten mit in den Speicherbereich des internen Modus geladen.

Es ist immer nur ein interner Modus aktiv. Falls das aktive Anwendungsprogramm ein weiteres Anwendungsprogramm aufruft, wird ein weiterer interner Modus eröffnet. Dabei müssen wir zwei Fälle unterscheiden. Wenn nach der Ausführung des aufgerufenen Programms nicht in das vorherige Programm zurückgekehrt wird, ersetzt der interne Modus des aufgerufenen Programms den ersten internen Modus und dessen Speicherinhalt wird vollständig gelöscht. Wird aber in das aufrufende Programm zurückgekehrt, bleibt sein Modus während der Ausführung des aufgerufenen Programms erhalten. Er ist aber inaktiv und seine Speicherinhalte werden auf einem Stack abgelegt.

Im Speicherbereich eines jeden Modus gibt es einen Bereich namens ABAP-Memory. Das ABAP-Memory steht allen internen Modi gemeinsam zur Verfügung. ABAP-Programme können über die Anweisungen EXPORT und IMPORT auf diesen Speicherbereich zugreifen. Daten innerhalb dieses Speicherbereichs bleiben über eine Abfolge von Programmaufrufen erhalten. Um Daten an ein aufgerufenes Programm zu übergeben, müssen diese vor dem Programmaufruf aus dem aufrufenden internen Modus mit der EXPORT-Anweisung in das ABAP-Memory gestellt werden. Dann ersetzt der interne Modus des aufgerufenen Programms den internen Modus des aufrufenden Programms und die Daten können mit der IMPORT-Anweisung aus dem ABAP-Memory gelesen werden. Sollen bei Rückkehr ins aufrufende Programm wieder Daten übergeben werden, verläuft die Prozedur umgekehrt.

Schließlich hat jedes Anwendungsprogramm Zugriff auf das sogenannte SAP-Memory. Das SAP-Memory ist ein Speicherbereich, auf den sämtliche Modi eines SAP-GUI gemeinsamen Zugriff haben. Im SAP-Memory können also Daten sowohl programmübergreifend innerhalb eines Modus als auch über einen Modus hinaus übergeben werden. Im SAP-Memory stehen für Anwendungsprogramme nur spezielle Parameter zur Verfügung, die sogenannten SPA/GPA-Parameter. Diese Parameter können z.B. bei der Systemanmeldung benutzerspezifisch oder aus Anwendungsprogrammen ablaufspezifisch gesetzt werden und dienen häufig der Vorbelegung von Eingabefeldern auf Bildschirmen. Das SAP-Memory ist die einzige Verbindung zwischen den unterschiedlichen Modi eines SAP GUI.

Die folgende Abbildung zeigt wie ein Anwendungsprogramm auf die verschiedenen Speicherbereiche innerhalb des Shared Memory zugreift:

Diese Grafik wird im zugehörigen Text erklärt

In diesem Bild ist ein Anwendungsprogramm im zweiten internen Modus des ersten Modus aktiv. Es hat Zugriff auf den Speicherbereich seines internen Modus, auf das ABAP-Memory und das SAP-Memory. Das Programm im ersten internen Modus hat das gerade aktive Programm aufgerufen und seine Daten liegen inaktiv auf einem Stack. Falls das gerade aktive Programm ein weiteres Programm aufruft und nach dessen Ausführung fortfahren will, wird das aufgerufene Programm in einem neuen dritten internen Modus aktiviert.

Ende des Inhaltsbereichs