使用する
トランザクションRFC(tRFC)を使用する場合、呼び出された汎用モジュールは、呼び出されたシステムで1回だけ実行されます(サービスプロパティ: Exactly Once)。
RFCクライアントプログラムがtRFCを実行しているときに、リモートシステムが使用可能である必要はありません。tRFCコンポーネントは、呼び出されたRFC関数を、一意のトランザクション識別子(TID)を含む対応するデータとともにSAPシステムのデータベースに保存します。
コールが送信され、受信システムがダウンしている場合、コールは後でまでローカルキューに残ります。呼び出しダイアログプログラムは、リモート呼び出しが成功したかどうかを確認するのを待たずに続行できます。受信システムが一定時間内にアクティブにならない場合、コールはバッチで実行されるようにスケジュールされます。
トランザクションRFCは接尾辞を使用しますIN BACKGROUND TASK。
同期呼び出しと同様に、DESTINATIONパラメーターはリモートシステムのプログラムコンテキストを定義します。その結果、同じ宛先で関数を繰り返し(または異なる関数を1回)呼び出すと、呼び出された関数のグローバルデータに同じコンテキスト内でアクセスされる可能性があります。
システムは、リモート呼び出し要求をすべてのパラメーター値とともにデータベース表ARFCSSTATEおよびARFCSDATAに記録します。トランザクションSM58を使用してログファイルを表示することができます。呼び出し側プログラムがCOMMITWORKに到達すると、リモート呼び出しは要求されたシステムに転送されます。
1つのCOMMITWORKと次のCOMMITWORKの間に発生する単一の宛先を持つすべてのtRFCは、単一の論理作業単位(LUW)に属します。
tRFCプロセスフロー図
たとえば、トランザクションのさまざまなフェーズで関連するデータベーステーブルを更新する必要がある複雑なプロセスには、トランザクションRFCを使用できます。
トランザクションRFC処理により、プログラムがCOMMIT WORKステートメントに到達したときに、計画されたすべての更新が確実に実行されます。
システムの可用性
リモートシステムが利用できない場合、SAPシステムは、関連するトランザクションIDをバリアントとして使用して、バックグラウンド処理のためにレポートRSARFCSEをスケジュールします。実行のために非同期呼び出しを転送するこのレポートは、目的のシステムとの接続に成功するまで繰り返し呼び出されます。
バッチでスケジュールされている場合、RSARFCSEは設定された間隔で自動的に実行されます(デフォルトは15分ごとで、最大30回試行されます)。この間隔と、プログラムが試行を続ける時間の長さをカスタマイズできます。これを行うには、拡張プログラムSABP0000およびSABP0003を使用します。
宛先を設定するには、トランザクションSM59を呼び出し、宛先の画面を選択して、[ ]を選択します。したがって、タスクまでの接続試行回数と繰り返し試行間の時間を決定できます。
指定された時間内にシステムに到達できない場合、システムはRSARFCSEの呼び出しを停止し、状況CPICERRがARFCSDATAテーブルに書き込まれます。別の指定された時間内(デフォルトは8日)に、ARFCSSTATEテーブルの対応するエントリが削除されます(この制限はカスタマイズすることもできます)。(トランザクションSM59でこのようなエントリを手動で開始することは引き続き可能です。)
詳しくは
tRFCのステートメントの説明は、次の場所にあります。