ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Daten- und Kommunikationsschnittstellen →  RFC - Remote Function Call →  CALL FUNCTION - RFC → 

CALL FUNCTION - STARTING NEW TASK

Kurzreferenz

Syntax

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

Zusätze:

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

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

Wirkung

Asynchroner Aufruf (aRFC) 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 CALLING und PERFORMING 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 und auch nicht über den Zusatz KEEPING TASK der Anweisung RECEIVE in einer Callback-Routine festgelegt ist, wird implizit die Destination"NONE" verwendet. 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 32-stellige frei wählbare Aufgabenkennung für den aufgerufenen remote-Funktionsbaustein enthält. Diese Aufgabenkennung wird den Callback-Routinen zur Identifikation der Funktion übergeben. Jede Aufgabenkennung definiert eine eigene RFC-Verbindung mit eigener RFC-Sitzung.

Wenn eine Callback-Routine angegeben ist, muss diese beendet sein, bevor ein Funktionsbaustein nochmals mit derselben Aufgabenkennung und Destination aufgerufen wird, sonst kommt es zu einer Ausnahme beim Aufruf.

Weitere Informationen

Ausführliche Informationen zum aRFC finden Sie in der Dokumentation RFC im SAP Help Portal.

Hinweise

Zusatz 1

... DESTINATION IN GROUP {group|DEFAULT}

Wirkung

Die Angabe von IN GROUP als Destination unterstützt die parallele Ausführung mehrerer Funktionsbausteine auf einer vordefinierten Gruppe von Applikationsservern des aktuellen AS ABAP. Diese Variante des aRFC wird auch als paralleler Remote Function Call (pRFC) bezeichnet.

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 AS ABAP 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.

Hinweise

Zusatz 2

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

Wirkung

Mit diesem Zusatz kann entweder eine Methode meth oder ein Unterprogramm subr als Callback-Routine angegeben werden, die zur Ausführung registriert wird, nachdem der asynchron aufgerufene Funktionsbaustein beendet wurde. Für meth sind die gleichen Angaben wie beim allgemeinen Methodenaufruf möglich, insbesondere also auch dynamische. Für subr muss statisch ein Unterprogramm des gleichen Programms angegeben werden.

Die Methode meth muss öffentlich sein und muss genau einen nicht-optionalen Eingabeparameter p_task vom Typ clike haben. Das angegebene Unterprogramm subr muss genau einen USING-Parameter 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.

In der Methode meth bzw. im Unterprogramm subr müssen die Ergebnisse der remote-Funktion mit der Anweisung RECEIVE empfangen werden. In der Callback-Routine dürfen keine Anweisungen ausgeführt werden, durch die diese unterbrochen oder ein impliziter Datenbank-Commit ausgelöst wird. Klassenbasierte Ausnahmen müssen innerhalb der Callback-Routine behandelt werden. Anweisungen zur Listenausgabe werden nicht ausgeführt.

Voraussetzung für die Ausführung einer registrierten Callback-Routine ist, dass das aufrufende Programm bei Beendigung der remote-Funktion noch in seiner internen Sitzung vorhanden ist. Dann wird sie dort beim nächsten Wechsel des Workprozesses beim Hereinrollen ausgeführt. Falls das Programm beendet wurde oder als Teil einer Aufrufkette auf dem Stack liegt, wird die Callback-Routine nicht ausgeführt.

Wenn während eines Programmabschnitts mehrere Callback-Routinen registriert werden, werden diese beim Wechsel des Workprozesses beim Hereinrollen in undefinierter Reihenfolge ausgeführt. Mit der Anweisung WAIT FOR ASYNCHRONOUS TASKS kann die Programmausführung angehalten werden, bis bestimmte oder alle Callback-Routinen ausgeführt wurden.

Hinweise



Weiterlesen
CALL FUNCTION - STARTING NEW TASK parameter_list
RECEIVE
WAIT FOR ASYNCHRONOUS TASKS
Grenzwerte für Ressourcenbereitstellung beim asynchronen RFC