Bei einem externen Prozeduraufruf ist die aufgerufene Einheit nicht Teil des aufrufenden Programms. Bei einem externen Aufruf muss zur Laufzeit ein weiteres Programm in den internen Modus des aufrufenden Programms geladen werden. Externe Aufrufe sind für Prozeduren und Subscreen-Dynpros möglich.
Die hinzugeladenen Programme bilden Instanzen mit einem eigenen globalen Datenbereich. Beim Aufruf externer Unterprogramme gehören das aufrufende Programm und das hinzugeladene Programm zu einer Programmgruppe, es sei denn das hinzu geladene Programm ist eine Funktionsgruppe. Funktionsgruppen bilden immer eigene Programmgruppen. Auch beim externen Aufruf von Methoden bildet die hinzu geladene Klasse eine eigene Programmgruppe. Innerhalb einer Programmgruppe werden Schnittstellen-Arbeitsbereiche und die Bildschirmbilder des aufrufenden Programms gemeinsam verwendet. Klassen enthalten keine Schnittstellen-Arbeitsbereiche.
Alle Prozeduren, also Unterprogramme, Funktionsbausteine und Methoden können aus einem beliebigen ABAP-Programm extern aufgerufen werden.
· Für Unterprogramme wird der externe Aufruf nicht empfohlen, insbesondere, wenn die Unterprogramme Schnittstellen-Arbeitsbereiche mit dem aufrufenden Programm teilen und Bildschirmaufrufe enthalten. Es hängt nämlich von der Reihenfolge der Aufrufe ab, zu welcher Programmgruppe das Rahmenprogramm eines Unterprogramms geladen wird. Die Reihenfolge liegt oft nicht statisch fest, sondern kann sich durch Benutzeraktionen oder Feldinhalte von Ausführung zu Ausführung ändern. Deshalb ist es oft nicht klar welche Schnittstellen-Arbeitsbereiche und welche Bildschirmbilder ein extern aufgerufenes Unterprogramm letztendlich verwendet.
· Funktionsbausteine sind für externe Aufrufe vorgesehen und externe Aufrufe von Funktionsbausteinen sind der Normalfall.
· Jeder Zugriff auf eine von außen sichtbare Methode einer globalen Klasse ist ein externer Prozeduraufruf.
Beim ersten Aufruf eines externen Unterprogramms oder eines Funktionsbausteins wird das Rahmenprogramm der aufgerufenen Prozedur in den internen Modus des aufrufenden Programms geladen. Dabei wird das Ereignis LOAD-OF-PROGRAM ausgelöst und der zugehörige Verarbeitungsblock ausgeführt, bevor die aufgerufene Prozedur ausgeführt wird. Bei jedem weiteren Aufruf einer Prozedur des gleichen Rahmenprogramms durch einen Aufrufer des gleichen internen Modus wird das Ereignis LOAD-OF-PROGRAM nicht mehr ausgelöst.
Subscreen-Dynpros können extern aufgerufen werden, indem beim Aufruf in der Dynpro-Ablauflogik ein anderes ABAP-Programm als das aktuelle angegeben wird. Dieses Programm wird wie bei einem externen Unterprogrammaufruf behandelt. Es wird also zur Programmgruppe des Aufrufers oder, falls es eine Funktionsgruppe ist, als eigene Programmgruppe in den internen Modus des aktuellen ABAP-Programms geladen.
Externe Subscreens, die nicht zu einer Funktionsgruppe gehören sollten also wie externe Unterprogramme nicht verwendet werden, da es dabei zu den gleichen Schwierigkeiten mit Schnittstellen-Arbeitsbereichen und Bildschirmaufrufen kommt.