使用する
SAP環境内の異なるシステムのアプリケーション間の通信には、SAPシステム間、およびSAPシステムと非SAPシステム間の接続が含まれます。Remote Function Call(RFC)は、SAPシステム間の通信のための標準のSAPインターフェースです。RFCは、リモートシステムで実行される関数を呼び出します。
現在、一連の異なるRFCバリアントがあり、それぞれが異なるプロパティを持ち、特定の目的に使用されます。
同期RFC
RFCの最初のバージョンは同期RFC(sRFC)です。このタイプのRFCは、同期通信に基づいて関数呼び出しを実行します。つまり、関係するシステムは、呼び出しが行われたときに両方とも使用可能である必要があります。
非同期RFC(aRFC)
その名前にもかかわらず、aRFCはこのための条件を満たさないため、実際には非同期タイプの通信ではありません。たとえば、sRFCの場合、呼び出されたシステムは呼び出し中に使用可能である必要があります。
aRFCの主な特徴は次のとおりです。
-
関数制御は、呼び出しの直後に呼び出し側プログラムに戻ります。
-
非同期RFCのパラメータはデータベースに記録されませんが、サーバーに直接送信されます。
-
非同期RFCを使用すると、ユーザはリモートシステムとの対話型ダイアログを実行できます。
-
呼び出し元がaRFCを開始するとき、呼び出されたサーバーは要求を受け入れるために使用可能である必要があります。
-
呼び出し側プログラムは、非同期RFCから結果を受け取ることができます。
リモートシステムとのリアルタイム通信が確立されている場合、aRFCを使用することは常に良い考えです。リモートシステムでは、呼び出された汎用モジュールの結果が取得されるまで、呼び出し側プログラムの処理が中断されないようにする必要があります(この意味で非同期という用語はここで使用されます)。 )。
トランザクションRFC(tRFC)
トランザクションRFC(tRFC、以前は非同期RFCと呼ばれていました)は、RFCとは異なり、RFCサーバーで呼び出された汎用モジュールを1回だけ実行する真の非同期通信方式です。RFCクライアントプログラムがtRFCを実行しているときに、リモートシステムが使用可能である必要はありません。tRFCコンポーネントは、呼び出されたRFC関数を、対応するデータとともに、一意のトランザクションID( TID)でSAPデータベースに保存します。
コールが送信され、受信システムがダウンしている場合、コールは後でまでローカルキューに残ります。呼び出しダイアログプログラムは、リモート呼び出しが成功したかどうかを確認するのを待たずに続行できます。受信システムが一定時間内にアクティブにならない場合、コールはバッチで実行されるようにスケジュールされます。
関数が論理作業単位(LUW)として実行される場合、tRFCが常に使用されます。LUW内では、すべての呼び出しは
-
呼び出された順序で実行されます
-
ターゲットシステムの同じプログラムコンテキストで実行されます
-
単一のトランザクションで実行されます。これらは、ユニットとしてコミットまたはロールバックされます。
呼び出しのトランザクションシーケンスを維持する場合は、tRFCの実装をお勧めします。
tRFCのデメリット
-
tRFCは、すべてのLUWを互いに独立して処理します。アクティブ化されたtRFCプロセスの量が原因で、この手順は送信システムとターゲットシステムの両方でパフォーマンスを大幅に低下させる可能性があります。
-
さらに、アプリケーションで定義されたLUWのシーケンスを保持することはできません。したがって、トランザクションがアプリケーションによって指定された順序で実行されることを保証することは不可能です。保証できる唯一のことは、すべてのLUWが遅かれ早かれ転送されることです。
キューに入れられたRFC(qRFC)
複数のLUWがアプリケーションで指定された順序で処理されることを保証するために、キュー(インバウンドキューとアウトバウンドキュー)を使用してtRFCをシリアル化できます。このタイプのRFCは、キューRFC(qRFC)と呼ばれます。
したがって、qRFCはtRFCの拡張です。LUW(トランザクション)は、参加キューに先行(さまざまなアプリケーションプログラムで定義されたシーケンスに基づく)がない場合にのみ転送されます。
複数のトランザクションが事前定義された順序で処理されることを保証する場合は、qRFCの実装をお勧めします。
バックグラウンドRFC(bgRFC)
bgRFCはtRFCおよびqRFCの後継であり、パフォーマンスと機能の点で大幅に改善されています。
ローカルデータキュー(LDQ)
LDQは、RFC通信の特殊なケースです。ここでは、システムによってアクティブにデータが送信されることはありません。代わりに、プルの原則に従って外部アプリケーション(モバイルデバイスなど)から呼び出されるまでローカルに保存されます。
データ転送
すべてのRFCタイプは、 CPI-CまたはTCP/IPによって転送されます。それらは一種のゲートウェイ通信を構成します。
詳しくは
RFC関連のトピックの詳細については、次のリンクをたどってください。