!--a11y-->
非同期リモートファンクションコールの使用
非同期リモートファンクションコール
(aRFC) は、ユーザがそのコールの終了を待たずにダイアログのコールを続行できるという点において、トランザクション RFC と似ています。 ただし、非同期 RFC とトランザクション RFC を区別する特徴が 3 つあります。非同期
RFC のパラメータはデータベースに記録されずに、直接サーバに送信されます。リモートシステムとの接続が必要であるが、機能の実行結果を待たずに処理を続行したいというような場合にはいつでも、非同期リモートファンクションコールを使用することができます。
非同期 RFC を同一システムに送信することもできます。 この場合、新規セッション ( あるいはウインドウ ) が開かれ、呼出元ダイアログと呼び出されるセッションを切り替えることができます。リモートファンクションコールを非同期に開始するには、以下の構文を使用してください。
CALL FUNCTION RemoteFunction
STARTING NEW TASK tasknameDestination ...
EXPORTING...
TABLES ...
EXCEPTIONS...

以下の呼出パラメータを使用することができます。
内部テーブルへの参照を受け渡します。
汎用モジュールのテーブルパラメータには値が指定されている必要があります。呼出元のプログラムから汎用モジュールへ項目の値と項目文字列を受け渡します。
汎用モジュールでは、該当する仮パラメータがインポートパラメータとして定義されます。RECEIVE RESULTS FROM FUNCTION func
は、非同期リモートファンクションコールの結果を受信するために、 FORM ルーチン 内で使用されます。 以下の受信パラメータを使用することができます。オプション
KEEPING TASK を指定すると、処理結果を受信した後で非同期接続がクローズするのを防ぐことができます。 該当するリモートコンテキスト ( ロール領域 ) は、呼出元が接続を終了するまで再利用のために維持されます。
トランザクションを非同期に呼び出して非モーダルウィンドウに表示します。
DATA: MSG_TEXT(80) TYPE C. “Message text
...
* Asynchronous call to transaction SM59 ->
* Create a new session
CALL FUNCTION ‘ABAP4_CALL_TRANSACTION’
STARTING NEW TASK ‘TEST’DESTINATION ‘NONE’
EXPORTING
TCODE = ‘SM59’
EXCEPTIONS
COMMUNICATION_FAILURE = 1 MESSAGE MSG_TEXT
SYSTEM_FAILURE = 2 MESSAGE MSG_TEXT
IF SY-SUBRC NE 0.
WRITE: MSG_TEXT.
ELSE.
WRITE: ‘O.K.’
ENDIF.
詳細は以下のトピックで説明されています。
非同期 RFC の呼出要件 非同期 RFC からの結果の受信 リモートコンテキストの維持 非同期 RFC を使用した並列処理
