!--a11y-->
非同期に呼び出した機能から結果を受け取るには、以下の構文を使用してください。
CALL FUNCTION RemoteFunction
STARTING NEW TASK Task
PERFORMING RETURN_FORM ON END OF TASK.
呼び出された機能が終了すると、呼出元のプログラム
( AT USER-COMMAND など ) 内の次のダイアログステップにより、結果をチェックする FORM ルーチンに制御が移ります。 この FORM ルーチンは特別な構文で構成されているので、 FORM ルーチンを呼び出すときにはタスクの名称を参照するパラメータ USING を指定する必要があります。Client System
CALL FUNCTION ‘TRAVEL_CREATE_FLIGHT’
STARTING NEW TASK ‘FLIGHT’
DESTINATION ‘S11’
PERFORMING RETURN_FLIGHT ON END OF TASK.
...
FORM RETURN_FLIGHT USING TASKNAME.
RECEIVE RESULTS FROM FUNCTION ‘TRAVEL_CREATE_FLIGHT’
IMPORTING FLIGHTID = SFLIGHT-ID
EXCEPTIONS SYSTEM_FAILURE MESSAGE SYSTEM_MSG.
SET USER-COMMAND ‘OKCD’.
ENDFORM.

キーワード
RECEIVE は、汎用モジュールコール CALL FUNCTION func STARTING NEW TASK taskname でのみ使用されます。 汎用モジュールが結果を戻さない場合、この部分を定義する必要はありません。
RECEIVE
は、 R/3 リリース 3.0 以降の新しいキーワードです。 そのため、パートナシステムであるクライアント、サーバの双方がリリース 3.0 の R/3 システムでなければなりません。RECEIVE
の追加情報については、 ABAP エディタのオンラインヘルプを参照してください。SET USER-COMMAND
' OKCD ' 命令には、ユーザが汎用モジュールをコマンド項目に入力して ENTER を押した場合と同様の効果があります。つまり、一覧とカーソルの現在の位置が考慮されます。
コールバックはサポートされていません。

SET USER-COMMAND
' OKCD ' 命令により REFRESH SCREEN コマンドが置換されます。今後 REFRESH SCREEN は更新されなくなるため、 REFRESH SCREEN を使用しないでください。
DATA: INFO LIKE RFCSI,
* Result of RFC_SYSTEM_INFO function
MSG(80) VALUE SPACE.
* Exception handling
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: ‘Wait for reply’.
ELSE.
WRITE MSG
ENDIF.
...
AT USER-COMMAND.
* Return from FORM routine RETURN_INFO via 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’. “Set OK-code
ENDFORM.
