Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation CALL FUNCTION - STARTING NEW TASK   Dokument im Navigationsbaum lokalisieren

Syntax

CALL FUNCTION func STARTING NEW TASK task
              [DESTINATION {dest|{IN GROUP {group|DEFAULT}}}]
              parameter list
              [{PERFORMING subr}|{CALLING meth} ON END OF TASK].

Zusätze:

1. ...DESTINATION IN GROUP { group |DEFAULT}

2. ...{PERFORMING subr}
|{CALLING meth} ON END OF TASK

Wirkung

Asynchroner Aufruf eines in func angegebenen remote-fähigen Funktionsbausteins über die RFC-Schnittstelle. Mit dem Zusatz DESTINATION kann entweder eine einzelne Destination in dest oder über IN GROUP eine Gruppe von Applikationsservern angegeben werden. Letzteres unterstützt die Parallelverarbeitung mehrerer Funktionsbausteine. Das aufrufende Programm wird hinter der Anweisung CALL FUNCTION fortgesetzt, sobald die remote aufgerufene Funktion im Zielsystem gestartet wurde, ohne das Ende ihrer Verarbeitung abzuwarten. Mit PERFORMINGund CALLING können Callback-Routinen zur Übernahme von Ergebnissen bei Beendigung der remote-aufgerufenen Funktion angegeben werden. Für func und dest werden zeichenartige Datenobjekte erwartet.

Falls die Destination nicht angegeben ist, wird implizit die Destination "NONE" verwendet. Bei Verwendung der Destination "NONE" ein neuer Hauptmodus für die aktuelle Benutzersitzung geöffnet. Der asynchrone RFC unterstützt keine Kommunikation mit Fremdsystemen bzw. Programmen in anderen Programmiersprachen.

Für task muss ein zeichenartiges Datenobjekt angegeben werden, das eine maximal achtstellige frei wählbare Aufgabenkennung für den aufgerufenen remote-Funktionsbaustein enthält. Diese Aufgabenkennung sollte pro Aufruf eindeutig sein und wird den Callback-Routinen zur Identifikation der Funktion übergeben. Jede Aufgabenkennung definiert eine eigene RFC-Verbindung mit eigenem Kontext, so dass bei wiederholten Aufrufen von Funktionsbausteinen derselben Aufgabenkennung auf die globalen Daten der zugehörigen Funktionsgruppe zugegriffen werden kann, falls die Verbindung noch vorhanden ist.

Diese Grafik wird im zugehörigen Text erklärt

In der Dialogverarbeitung ist zu beachten, dass die maximale Anzahl von sechs Hauptmodi nicht überschritten werden kann, ansonsten kommt es zu einer Fehlermeldung.

Zusatz 1

... DESTINATION IN GROUP {group|DEFAULT}

Wirkung

Durch die Angabe von IN GROUP als Destination können mehrere Funktionsbausteine parallel auf einer vordefinierten Gruppe von Applikationsservern des aktuellen SAP-Systems ausgeführt werden.

Für group muss ein Datenobjekt vom Typ RZLLI_APCL aus dem ABAP Dictionary angegeben werden, das entweder den Namen einer in der Transaktion RZ12 angelegten RFC-Server-Gruppe enthält oder initial ist. Bei der Angabe von DEFAULT oder wenn group initial ist, werden alle aktuell zur Verfügung stehenden Applikationsserver des aktuellen SAP-Systems als Gruppe verwendet. Innerhalb eines Programms darf nur eine einzige RFC-Server-Gruppe verwendet werden. Beim ersten asynchronen RFC mit dem Zusatz IN GROUP wird die angegebene RFC-Server-Gruppe initialisiert. Bei jedem asynchronen RFC mit Angabe der Gruppe wird automatisch der am besten geeignete Applikationsserver ermittelt und der aufgerufene Funktionsbaustein auf diesem ausgeführt.

Falls der Funktionsbaustein auf keinem der Applikationsserver ausgeführt werden kann, da momentan nicht genügend Ressourcen zur Verfügung stehen, kommt es zur vordefinierten Ausnahme RESOURCE_FAILURE, der zusätzlich zu den übrigen RFC-Ausnahmen ein Rückgabewert zugewiesen werden kann. Bei dieser Ausnahme ist der Zusatz MESSAGE nicht erlaubt.

Diese Grafik wird im zugehörigen Text erklärt

      Die Parallelverarbeitung von Funktionsbausteinen mit dem Zusatz IN GROUP nutzt die vorhandenen Ressourcen optimal aus und ist einer selbstprogrammierten Parallelverarbeitung mit explizit angegebenen Destinationen vorzuziehen.

      Ein Applikationsserver, der als Teil einer RFC-Server-Gruppe zur Parallelverarbeitung eingesetzt wird, muss mindestens drei Dialog-Workprozesse haben, von denen einer gerade frei ist. Andere Ressourcen wie Aufträge in der Warteschlange, Anzahl der Systemanmeldungen etc. werden ebenfalls berücksichtigt und dürfen gewisse Grenzwerte nicht überschreiten.

      Um sicherzustellen, dass nur auf Applikationsserver zugegriffen wird, die genügend Ressourcen haben, wird empfohlen, statt mit dem Zusatz DEFAULT mit explizit definierten RFC-Server-Gruppen zu arbeiten.

      Die Funktionsbausteine der Funktionsgruppe SPBT stellen Service-Funktionen für die Parallelverarbeitung zur Verfügung, zum Beispiel Initialisierung von RFC-Server-Gruppen, Ermittlung der verwendeten Destination oder temporäres Entfernen eines Applikationsservers aus einer RFC-Server-Gruppe.

Zusatz 2

... {PERFORMING subr}|{CALLING meth} ON END OF TASK

Wirkung

Mit diesem Zusatz kann entweder ein Unterprogramm subr oder seit Release 6.20 eine Methode meth als Callback-Routine angegeben werden, die ausgeführt wird, nachdem der asynchron aufgerufene Funktionsbaustein beendet wurde. Für subr muss direkt ein Unterprogramm des gleichen Programms angegeben werden. Für meth können die gleichen Angaben wie beim allgemeinen Methodenaufruf gemacht werden.

Das angegebene Unterprogramm subr darf genau einen USING-Parameter vom Typ clike haben. Die Methode meth muss öffentlich sein und darf nur einen nicht-optionalen Eingabeparameter p_task vom Typ clike haben. Dieser Parameter wird beim Aufruf von der RFC-Schnittstelle mit der Aufgabenkennung der remote-aufgerufenen Funktion versorgt, die beim Aufruf in task angegeben wurde. Im Unterprogramm subr bzw. in der Methode meth können die Ergebnisse der remote-Funktion mit der Anweisung RECEIVE empfangen werden. In der Callback-Routine dürfen keine Anweisungen ausgeführt werden, durch die der Programmablauf unterbrochen oder eine SAP-LUW beendet wird. Anweisungen zur Listenausgabe werden nicht ausgeführt.

Voraussetzung für die Ausführung der Callback-Routine ist, dass das aufrufende Programm bei Beendigung der remote-Funktion noch in seinem internen vorhanden ist. Dann wird sie beim nächsten Wechsel des Workprozesses ausgeführt. Falls das Programm beendet wurde oder als Teil einer Aufrufkette auf dem Stack liegt, wird die Callback-Routine nicht ausgeführt. Mit der Anweisung WAIT kann die Programmausführung angehalten werden, bis bestimmte oder alle Callback-Routinen ausgeführt wurden.



CALL FUNCTION - STARTING NEW TASK parameter_list

Syntax

... [EXPORTING  p1 = a1  p2 = a2 ...]
    
[TABLES     t1 = itab1 t2 = itab2 ...]
    
[EXCEPTIONS exc1 = n1  exc2 = n2 ... [MESSAGE mess]
               [OTHERS = n_others]].

Wirkung

Mit diesen Zusätzen werden den Formalparametern des Funktionsbausteins Aktualparameter und nicht-klassenbasierten Ausnahmen Rückgabewerte zugeordnet. Die Zusätze haben dieselbe Bedeutung wie beim synchronen RFC mit der Ausnahme, dass keine Werte mit IMPORTING und CHANGING übernommen werden können.



 

Ende des Inhaltsbereichs