Show TOC Anfang des Inhaltsbereichs

Organisation von externen Prozeduraufrufen  Dokument im Navigationsbaum lokalisieren

Jede Ausführung (Start oder Aufruf) eines startbaren Programms öffnet einen eigenen internen Modus im Hauptmodus einer SAP-Anmeldung. Beim Aufruf von externen Prozeduren werden deren Rahmenprogramme und Arbeitsdaten mit in den Speicherbereich des internen Modus geladen. Dabei ist zwischen dem Aufruf von externen Unterprogrammen, dem Aufruf von Funktionsbausteinen und der Arbeit mit Klassen in ABAP Objects zu unterscheiden. Beim Laden eines Rahmenprogramms in den internen Modus wird das Ereignis LOAD-OF-PROGRAMausgelöst. Falls ein entsprechender Ereignisblock im Rahmenprogramm definiert ist, wird er einmalig vor der Ausführung der ersten aufgerufenen Prozedur des Rahmenprogramms ausgeführt.

Programmgruppen im internen Modus

Die Abbildung zeigt die Speicherorganisation von externen Unterprogrammen und Funktionsbausteinen.

Diese Grafik wird im zugehörigen Text erklärt

 

Das Hauptprogramm (ausführbares Programm oder Modul-Pool) liegt in einer Hauptprogrammgruppe. Ein Aufruf eines Funktionsbausteins einer bisher nicht geladenen Funktionsgruppe mit CALL FUNCTION öffnet eine Zusatzprogrammgruppe, in der die Funktionsgruppe des Funktionsbausteins abgelegt wird. Die Zusatzprogrammgruppe bleibt mit ihren Daten für die gesamte Lebensdauer des internen Modus vorhanden.

Ein Aufruf eines externen Unterprogramms mit PERFORM lädt das Rahmenprogramm, in dem das Unterprogramm steht, zum Hauptprogramm bzw. zur Funktionsgruppe in die Haupt- bzw. Zusatzprogrammgruppe, falls es bisher noch nicht geladen wurde.

Nur wenn das Unterprogramm in einer bisher nicht geladenen Funktionsgruppe steht, wird auch beim externen PERFORM eine Zusatzprogrammgruppe geöffnet. Hierbei genügt es auch, dass das Rahmenprogramm des Unterprogramms durch FUNCTION-POOL eingeleitet wird. Der Programmtyp F ist hierfür nicht unbedingt erforderlich.

Klassen in ABAP Objects verhalten sich im Prinzip wie Funktionsgruppen. Beim ersten Ansprechen einer Klasse, z.B. durch CREATE OBJECT oder dem Ansprechen einer statischen Klassenkomponente, wird eine Zusatzprogrammgruppe für die Klasse geöffnet.

Behandlung von Objekten

Die transienten Objekte von ABAP Objects leben gleichberechtigt im Datenbereich eines internen Modus. Alle Programme und Objekte eines internen Modus können die Objekte von ABAP Objects des gleichen internen Modus verwenden. Es können also Referenzen auf Objekte innerhalb eines internen Modus an externe Prozeduren (Unterprogramme, Funktionsbausteine und Methoden) übergeben werden.

Es gibt keine Speicherbereiche für transaktionsübergreifende Objekte auf dem Applikationsserver. Persistente Objekte in der Datenbank werden durch Persistenzdienste behandelt, die nicht zum Sprachumfang von ABAP gehören.

Bildschirmbehandlung

Es werden ausschließlich die Bildschirme (Dynpros, Selektionsbilder, Listen) und zugehörige GUI-Status des Hauptprogramms der Hauptprogrammgruppe bzw. der Funktionsgruppe einer Zusatzprogrammgruppe angezeigt und verarbeitet. Die Anweisungen CALL SCREEN, CALL SELECTION-SCREEN oder Listenausgabe-Anweisungen in externen Unterprogrammen wirken auf die Bildschirme des Hauptprogramms bzw. der Funktionsgruppe. Die Bildschirmbearbeitung findet ebenfalls im Hauptprogramm bzw. der Funktionsgruppe statt. Wenn also z.B. das Rahmenprogramm eines externen Unterprogramms zwar ein Dynpro mit der Nummer 100 hat, führt ein CALL SCREEN 100 im Unterprogramm zum Aufruf von Dynpro 100 des aufrufenden Hauptprogramms.

Schnittstellen-Arbeitsbereiche

Schnittstellen-Arbeitsbereiche, die mit TABLES, NODES oder DATA BEGIN OF COMMON PART angelegt werden, werden pro Programmgruppe nur einmal angelegt und gemeinsam genutzt. Jedes mit PROGRAM oder REPORT eingeleitete Hauptprogramm und jede mit FUNCTION-POOL eingeleitete Funktionsgruppe teilt sich mit den Rahmenprogrammen ihrer externen Unterprogramme die Schnittstellenarbeitsbereiche.

Dynamische Zuordnung

Die Zuordnung von Bildschirmen und Schnittstellen-Arbeitsbereichen zu Unterprogrammen wird durch die Reihenfolge der Unterprogrammaufrufe festgelegt. Das Programm, das eine externes Unterprogramm als erstes aufruft, teilt sich mit ihm die Schnittstellen-Arbeitsbereiche und das Unterprogramm ruft dessen Bildschirme. Die Reihenfolge der Unterprogrammaufrufe liegt nicht unbedingt statisch fest, sondern kann sich im Programmablauf dynamisch aus Benutzeraktionen oder Feldinhalten ergeben. Ein Unterprogramm kann beispielsweise bei einer Programmausführung zur Hauptprogrammgruppe und bei einer anderen Programmausführung zu einer Zusatzprogrammgruppe gehören. Deshalb sollten Unterprogramme insbesondere bei der Verwendung von Schnittstellen-Arbeitsbereichen und wenn sie Bildschirme aufrufen nicht extern verwendet werden.

 

Ende des Inhaltsbereichs