Show TOC Anfang des Inhaltsbereichs

 Prozessdokumentation Ergebnisse von einem asynchronen RFC erhalten  Dokument im Navigationsbaum lokalisieren

Um Ergebnisse eines asynchron gerufenen Funktionsbausteins zu erhalten, verwenden Sie folgende Syntax:

CALL FUNCTION Remotefunction

   STARTING NEW TASK Taskname

   PERFORMING RETURN_FORM ON END OF TASK.

Sobald der gerufene Funktionsbaustein beendet ist, führt der nächste Dialogschritt im rufenden Programm (z.B. AT USER-COMMAND) das System in die FORM-Routine, die nach Ergebnissen sucht. Diese FORM-Routine besteht aus einer besonderen Syntax und muss mit einem USING-Parameter aufgerufen werden, der sich auf den Namen der Aufgabe bezieht:

Client-System

CALL FUNCTION Remotefunction

   STARTING NEW TASK Taskname

   DESTINATION Dest

   PERFORMING RETURN_FLIGHT ON END OF TASK.

...

FORM RETURN_FLIGHT USING Taskname.

   RECEIVE RESULTS FROM FUNCTION Remotefunction

   IMPORTING   F1 = a1

   EXCEPTIONS  SYSTEM_FAILURE MESSAGE SYSTEM_MSG.

   SET USER-COMMAND ‘OKCD’.

ENDFORM.

Hinweis

       Wenn ein Funktionsbaustein kein Ergebnis zurückliefert, können Sie den Zusatz PERFORMING RETURN_FORM ON END OF TASK weglassen.

       Wenn ein asynchroner Aufruf mehrere aufeinander folgende Funktionsbausteine mit derselben Destination aufruft, müssen Sie jedem einen anderen Aufgabennamen zuordnen.

       Ein rufendes Programm, das einen asynchronen RFC mit PERFORMING startet, kann nicht den Rollbereich ändern oder in einen internen Modus wechseln, weil die Antwort auf den asynchronen Aufruf eines Funktionsbausteins dann nicht an das entsprechende Programm weitergeleitet werden kann. Einen Wechsel des Rollbereichs führen Sie mit SUBMIT oder CALL TRANSACTION durch.

       Wenn das rufende Programm, das den asynchronen Aufruf abgesetzt hat, beendet wird, obwohl es noch auf eine Antwort wartet, dann kann diese Antwort auf den asynchronen Aufruf nicht abgeliefert werden.

       Wenn Sie die Anweisung WAIT bei PERFORMING form ON END OF TASK verwenden, wartet das System auf die Antwort eines zuvor gestarteten asynchronen Aufrufs. WAIT muss hier im selben Programmkontext stehen.

       Das System setzt die Verarbeitung des Programms nach WAIT fort, wenn entweder die Bedingung eines logischen Ausdrucks von der Unterroutine erfüllt wurde, welche die fragliche Aufgabe ausführt, oder wenn eine festgesetzte Zeitspanne überschritten wurde. Nähere Informationen zu WAIT finden Sie in der Online-Hilfe des ABAP-Editors.

       Das Schlüsselwort RECEIVE gibt es nur beim Funktionsbausteinaufruf CALL FUNCTION Remotefunction STARTING NEW TASK Taskname. Wenn der Funktionsbaustein keine Ergebnisse liefert, können Sie diesen Teil weglassen.

       Die Anweisung SET USER-COMMAND ‘OKCD’ wirkt so als ob der Benutzer diese Funktion im Befehlsfeld eingegeben und bestätigt hätte; d.h. die aktuellen Positionen der Liste und des Cursors werden berücksichtigt.

Hinweis

Rückrufe werden nicht unterstützt.

Hinweis

Die Anweisung SET USER-COMMAND ‘OKCD’ ersetzt die Anweisung REFRESH SCREEN. REFRESH SCREEN wird nicht länger gepflegt und sollte daher nicht verwendet werden.

 

 

Diese Grafik wird im zugehörigen Text erklärt

DATA: INFO LIKE RFCSI,

* Ergebnis des RFC_SYSTEM_INFO-Funktionsbausteins

  MSG(80) VALUE SPACE.

* Behandlung der Ausnahmen

CALL FUNCTION ‘RFC_SYSTEM_INFO’

  STARTING NEW TASK ‘INFO’

  PERFORMING RETURN_INFO ON END OF TASK

  EXCEPTIONS

     COMMUNICATION_FAILURE   = 1 MESSAGE MSG

     COMMUNICATION_FAILURE   = 2.MESSAGE MSG.

IF SY-SUBRC = 0.

  WRITE: ‘Warte auf Antwort’.

ELSE.

  WRITE MSG

ENDIF.

...

AT USER-COMMAND.

* Rückkehr aus FORM-Routine RETURN_INFO über SET USER-COMMAND

     IF SY-UCOMM = ‘OKCD’.

        IF MSG = SPACE.

           WRITE: ‘Destination =‘, INFO-RFCDEST.

        ELSE.

           WRITE MSG.

        ENDIF.

     ENDIF.

...

FORM RETURN_INFO USING TASKNAME.

RECEIVE RESULTS FROM FUNCTION ‘RFC_SYSTEM_INFO’

   IMPORTING RFCSI_EXPORT = INFO

   EXCEPTIONS

      COMMUNICATION_FAILURE = 1 MESSAGE MSG

      SYSTEM_FAILURE       = 2 MESSAGE MSG.

  SET USER-COMMAND ‘OKCD’.      “Setzt OK-Code

ENDFORM.

 

 

Ende des Inhaltsbereichs