使用する
このセクションでは、さまざまなRFCバリアントについて説明します。必要なサービスプロパティに応じて、次のRFCバリアントを使用できます。
同期RFC
1. CALL FUNCTION func DESTINATIONdestparameter_list 。
同期RFC(sRFC)は、関数呼び出しを直接実行し、呼び出された汎用モジュールからの応答を待ちます。呼び出し前にデータがデータベースに書き込まれることはありません。したがって、同期RFCを使用する場合は、呼び出されたシステムが使用可能である必要があります。呼び出しは1回だけ行われます。呼び出されたシステムが使用できない場合、または問題が発生した場合、呼び出しは失敗します(サービスプロパティ:最大1回)。
非同期RFC
2. CALL FUNCTION func STARTING NEW TASK task [DESTINATION {dest | {IN GROUP {group | DEFAULT}}}] parameter_list [{PERFORMING subr} | {CALLING meth} ON ENDOFTASK]。その名前にもかかわらず、非同期RFC(aRFC)は、厳密な意味での非同期関数呼び出しを実際には必要としません。関数チェックは呼び出し直後に呼び出し側プログラムに戻りますが、データは実際にはデータベースに書き込まれません。したがって、通話は直接利用可能なシステムでのみ行うことができます。
呼び出されたシステムが利用できない場合、呼び出しは失敗します。sRFCと同様に、aRFCにもサービスプロパティが最大で1回しかありません。
背景RFC
3.バックグラウンドユニットparameter_listのCALLFUNCTIONfunc。
aRFCとは異なり、バックグラウンドRFC(bgRFC)は、RFCサーバで呼び出される汎用モジュールを1回だけ実行する「本物の」非同期通信方式と呼ぶことができます(サービスプロパティ: Exactly Once)。正確に1回)。RFCクライアントプログラムがbgRFCを実行しているときに、リモートシステムが使用可能である必要はありません。bgRFCコンポーネントは、呼び出されたRFC関数を、対応するデータとともに、一意のトランザクションID(TID)でSAPデータベースに保存します。
コールが送信され、受信システムがダウンしている場合、コールは後でまでローカルキューに残ります。呼び出しダイアログプログラムは、リモート呼び出しが成功したかどうかを確認するのを待たずに続行できます。受信システムが一定時間内にアクティブにならない場合、コールはバッチで実行されるようにスケジュールされます。
関数がユニットとして実行される場合、bgRFCが常に使用されます。特定のユニット内では、すべての呼び出し:
-
呼び出された順序で実行されます
-
ターゲットシステムの同じプログラムコンテキストで実行されます
-
単一のトランザクションで実行されます。これらは、ユニットとしてコミットまたはロールバックされます。
ユニット内の呼び出しのトランザクションシーケンスを維持する場合は、bgRFCを使用することを常にお勧めします。bgRFCは、トランザクション(タイプT)またはキュー(タイプQ)のいずれかになります。タイプQを使用する場合、複数の呼び出しに属するユニットも、データベースに書き込まれた順序とまったく同じ順序で送信および処理されます。
トランザクションRFC
4.バックグラウンドタスクでのCALLFUNCTIONfunc [DESTINATION dest] parameter_list [ASSEPARATEUNIT]。
トランザクションRFCは、トランザクションRFC呼び出しのbgRFCの前身です。bgRFCと同じサービスプロパティがあります。tRFCは、bgRFCとまったく同じ方法で使用できます。ただし、2つの方法を並行して使用することはできません。
キューに入れられたRFC
キューに入れられたRFC(qRFC)は、bgRFCタイプQの前身です。qRFCでは、処理シーケンスを修正することもできます。qRFCの背後にあるテクノロジーは、tRFCに基づいています。唯一の違いは、汎用モジュールTRFC_SET_QUEUE_NAMEが実際のtRFC呼び出しの前に実行されることです。この汎用モジュールにより、キューを使用してシリアル化することができます。