使用する
この例は、汎用モジュールの並列非同期処理を示しています。RFC_SYSTEM_INFO非同期リモート関数呼び出しを使用します。
タスクIDが異なるため、それぞれが別々のワークプロセスで発生する10回の呼び出しが行われます。名前。コールバックルーチンでrfc_info、完了した汎用モジュールがカウントされ、対象システムに関する情報が受信されます。
追加を使用してグループのデフォルト、実行は現在のシステムのすべてのアプリケーションサーバーに分散されます。少なくとも1回の呼び出しが成功した後、使用可能な空き作業プロセスがなくなると、その時点までに開始されたすべての汎用モジュールが完了するまで、プログラムの実行が停止されます。この停止は最大5秒に制限されています。
すべての汎用モジュールが開始された後、システムはすべてのコールバックルーチンが実行されるまで待機します。その後、内部テーブルタスクリストそこに記入すると出力があります。出力には、個々のタスクが完了した順序と、各タスクが実行されたアプリケーションサーバーが表示されます。
タイプ:task_typeの始まり、
名前TYPE文字列、
dest TYPE文字列、
task_typeの終わり。
データ:snd_jobs TYPE i、
rcv_jobs TYPE i、
exc_flag TYPE i、
info TYPE rfcsi、
混乱タイプc長さ80、
indx TYPE c LENGTH 4、
名前TYPEcLENGTH 8、
task_list TYPE STANDARD TABLE OF task_type、
task_waTYPEtask_type。
10回行います。
indx=sy-index。
CONCATENATE’タスク’indxINTOname。
CALL FUNCTION’RFC_SYSTEM_INFO’
新しいタスクの名前を開始します
グループデフォルトの宛先
タスクの終了時にrfc_infoを実行する
例外
system_failure = 1 MESSAGE mess
communication_failure = 2 MESSAGE mess
resource_failure=3。
ケースsy-subrc。
0のとき。
snd_jobs = snd_jobs+1。
1または2の場合。
MESSAGE messTYPE’I’。
いつ3。
snd_jobs> =1ANDの場合
exc_flag=0。
exc_flag=1。
rcv_jobs>=snd_jobsまで待つ
最大5秒。
ENDIF。
sy-subrc=0の場合。
exc_flag=0。
そうしないと。
MESSAGE’リソース障害’TYPE’I’。
ENDIF。
他の人。
MESSAGE’その他のエラー’TYPE’I’。
エンドケース。
ENDDO。
rcv_jobs>=snd_jobsまで待ちます。
task_listをtask_waにループします。
書き込み:/ task_wa-name、task_wa-dest。
ENDLOOP。
名前を使用してrfc_infoを形成します。
task_wa-name=name。
rcv_jobs = rcv_jobs+1。
関数’RFC_SYSTEM_INFO’から結果を受信します
輸入
rfcsi_export = info
例外
system_failure
=1メッセージの混乱
communication_failure =2MESSAGEの混乱。
sy-subrc=0の場合。
task_wa-dest=info-rfcdest。
そうしないと。
task_wa-dest=mess。
ENDIF。
task_waをtask_listに追加します。
ENDFORM。