ABAPCALL_FUNCTION_STARTING - CALL FUNCTION STARTING

PERFORM Short Reference   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

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 angegebenenremote-fähigen Funktionsbausteins über dieRFC-Schnittstelle. Mit dem Zusatz DESTINATION kann entweder eine einzelneDestination in dest oder über IN GROUP eine Gruppe vonApplikationsservernangegeben werden. Letzteres unterstützt die Parallelverarbeitung mehrerer Funktionsbausteine.Das aufrufende Programm wird hinter der Anweisung CALL FUNCTION fortgesetzt, sobald die remoteaufgerufene Funktion im Zielsystem gestartet wurde, ohne das Ende ihrer Verarbeitung abzuwarten. MitCALLING und PERFORMING können Callback-Routinen zur Übernahme von Ergebnissenbei 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 derAnweisung RECEIVEfestgelegt 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-stelligefrei 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 eigenemKontext, sodass beiwiederholten Aufrufen von Funktionsbausteinen derselben Aufgabenkennung und bei gleicher Destinationauf die globalen Daten der zugehörigen Funktionsgruppe zugegriffen werden kann, falls die Verbindungnoch vorhanden ist. (Dies ist z.B. dann der Fall, wenn der PERFORMING- oder CALLING-Zusatzverwendet wird. Beim asynchronen RFC ohne Rückantwort, d.h., ohne PERFORMING- oder CALLING-Zusatz, wird die RFC-Verbindung gleich nach dem Aufruf wieder geschlossen.)

Weitere Informationen

Ausführliche Informationen zum aRFC finden Sie unterAsynchroner RFC (aRFC) in der SAP-Bibliothek.

Hinweise

  • Der Aufruf von Dynpros während der Verarbeitung eines aRFC öffnet zusätzliche Hauptmodiim RFC-Client. Dabei ist zu beachten, dass die maximale Anzahl an möglichen Hauptmodi nicht überschritten werden kann, ansonsten kommt es zu einer Fehlermeldung.

  • Der asynchrone RFC löst im aufrufenden Programm einenDatenbank-Commit aus. Ausgenommen hiervon ist ein aRFC während derVerbuchung.

  • Wenn in einem aufrufenden Programm mehrere asynchrone RFCs mit verschiedenen Destinationen hintereinanderabgesetzt werden, führt dies automatische zur Parallelverarbeitung der aufgerufenen Funktionsbausteine.Da die zugehörige Verwaltung sowohl auf dem Client als auch auf den Servern zu Ressourcenengpässenführen kann, wird empfohlen eine solche Parallelverarbeitung nur mit dem Zusatz DESTINATION IN GROUP durchzuführen.


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 aktuellenAS 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 TransaktionRZ12 angelegten RFC-Server-Gruppe enthältoder initial ist. Bei der Angabe von DEFAULT oder wenn group initial ist, werden alleaktuell 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 asynchronenRFC mit dem Zusatz IN GROUP wird die angegebene RFC-Server-Gruppe initialisiert. Bei jedem asynchronenRFC 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 momentannicht genügend Ressourcen zur Verfügung stehen, kommt es zur vordefinierten Ausnahme RESOURCE_FAILURE, der zusätzlich zu den übrigenRFC-Ausnahmen ein Rückgabewert zugewiesen werden kann. Bei dieser Ausnahme ist der Zusatz MESSAGE nicht erlaubt.

Hinweise

  • Die Parallelverarbeitung von Funktionsbausteinen mit dem Zusatz IN GROUP nutzt die vorhandenenRessourcen optimal aus und ist einer selbst programmierten 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 wieAufträge in der Warteschlange, Anzahl der Systemanmeldungen etc. werden ebenfalls berücksichtigt und dürfen gewisseGrenzwerte 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 Parallelverarbeitungzur 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

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

Wirkung

Mit diesem Zusatz kann entweder eine Methode meth oder ein Unterprogramm subr als Callback-Routineangegeben werden, die ausgeführt wird, nachdem der asynchron aufgerufene Funktionsbaustein beendet wurde. Für meth sind die gleichen Angaben wie beim allgemeinenMethodenaufruf 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 angegebeneUnterprogramm subrmuss genau einen USING-Parameter vom Typ clike haben. Dieser Parameter wird beim Aufrufvon der RFC-Schnittstelle mit der Aufgabenkennung der remote aufgerufenen Funktion versorgt, die beimAufruf in task angegeben wurde. In der Methode meth bzw. im Unterprogramm subrsollten die Ergebnisse der remote-Funktion mit der Anweisung RECEIVEempfangen werden. In der Callback-Routine dürfen keine Anweisungen ausgeführt werden, durch die diese unterbrochen oder ein impliziterDatenbank-Commitausgelöst wird. Klassenbasierte Ausnahmen müssen innerhalb der Callback-Routine behandelt werden. Anweisungen zurListenausgabe 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 seineminternen Modus vorhanden ist. Dann wird sie beim nächsten Wechsel desWorkprozesses ausgeführt. Falls das Programm beendet wurde oder als Teil einerAufrufketteauf dem Stack liegt, wird die Callback-Routine nicht ausgeführt. Mit der Anweisung WAITUNTIL kann die Programmausführung angehalten werden, bis bestimmte oder alle Callback-Routinen ausgeführt wurden.

Hinweise

  • Bei der klassenbasierten Ausnahmebehandlung, d.h., wenn der Zusatz EXCEPTIONS nicht angegeben ist, muss in der Callback-Routine eine RECEIVE-Anweisung aufgeführt sein.
  • Wenn in der Callback-Routine keine RECEIVE-Anweisung aufgeführt ist, um die Ergebnisseder remote-Funktion zu empfangen, bleibt die Verbindung bestehen und verhält sich implizit wiebei der Anweisung RECEIVE mit dem Zusatz KEEPING TASK. Dieses implizite Verhalten ist in der Regel nicht erwünscht.
  • Es wird empfohlen, den Zeitpunkt zum Ausführen der Callback-Routine mit WAITUNTIL zu programmieren. Diese Anweisung führt zu einem explizit angeforderten Wechseldes Workprozess und bietet weitere Steuerungsmöglichkeiten. Eine Ausführung von Callback-Routinen bei einem impliziten Wechsel des Workprozesses, wie z.B. am Ende einesDialogschritts, sollte nur in Ausnahmefällen erfolgen.






SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.


Length: 13680 Date: 20120526 Time: 232758     triton ( 444 ms )