同期および非同期 RFC
BAPI インバウンド処理およびアウトバウンド処理の場合、処理が同期的に処理されるように指定することも (メッセージ・フロー とアダプターの両方が処理の際に使用可能になる必要があります)、非同期的に処理されるように指定することもできます (クライアント・アプリケーションで関数が呼び出される際にアダプターは使用可能になる必要はありません)。 同期処理の場合、メッセージ・フロー はアダプターからの応答を待機します。 非同期処理では、SAP アプリケーションは応答を待機せずに、SAP アプリケーションが関数呼び出しを行う際にアダプターが使用可能である必要はありません。
同期および非同期のリモート関数呼び出し (RFC) を示す図については、 BAPI インバウンド・シナリオを参照してください。
BAPI インターフェースには 2 セットのアクティベーション指定プロパティーがあり (1 つは同期 RFC 用、もう 1 つは非同期 RFC 用)、これを使用してインバウンド処理をセットアップします。 「アダプター接続」ウィザードを使用して、これらのプロパティーに値を指定します。
インバウンド要求の結果として実行される処理アクションの順序は、構成時に「SAP リモート関数呼び出し (RFC) タイプ」リストから選択した項目によって異なります。
同期 RFC
- アダプターはイベント・リスナーを開始します。イベント・リスナーは、 SAP サーバー上の RFC 対応機能イベント ( RFCProgramID プロパティーで指定したもの) を listen します。
- RFC 対応機能イベントは、イベント・リスナーによってアダプターにプッシュされます。
- アダプターは、受信した RFC 対応関数名を使用して、操作とビジネス・オブジェクト名を解決します。
- アダプターはビジネス・オブジェクトをエンドポイントに同期的に送信します。
- アダプターは、エンドポイントから応答ビジネス・オブジェクトを受信します。
- アダプターは、応答ビジネス・オブジェクトを RFC 対応関数にマップし、それを SAP サーバーに返します。
アダプターは、エンドポイントがアクティブになり使用可能になるまではイベントを listen しません。
非同期トランザクション RFC
- SAP サーバー上のクライアント は、アダプター上で RFC 対応関数呼び出しを呼び出します。 注: SAP サーバー上のキューから RFC 対応機能を送信するために、 SAP サーバー 上のクライアント・プログラムは、ユーザー定義のアウトバウンド・キューにイベントを送信します。
トランザクション ID はこの呼び出しに関連付けられます。
SAP サーバー 上の呼び出し側プログラムは、アダプターへの呼び出しが成功したかどうかを待機せず、呼び出し側プログラムにデータは戻されません。
- RFC 関数呼び出しは、送信される関数のリスト上に置かれます。
イベント・リストを表示するには、 SAP サーバー でトランザクション・コード SM58 を入力します。
- RFC 関数呼び出しは、アダプターで呼び出します。 アダプターが使用できない場合、呼び出しは SAP サーバーのリストに残り、アダプターによって処理されるまで、呼び出しは一定の間隔で繰り返されます。
SAP サーバー は、呼び出しイベントを正常に送達すると、リストから関数を除去します。
- 「確実一回のみイベント送達」を選択した場合、アダプターはイベント永続表にトランザクション ID を設定します。
これにより、イベントが複数回処理されないようになります。
- アダプターは、受信した RFC 対応関数名を使用して、操作とビジネス・オブジェクト名を解決します。
- アダプターはビジネス・オブジェクトをエンドポイントに送信します。
SAP サーバー上のユーザー定義キューから関数を送信する場合、それらの関数はキューに存在する順序で配信されます。 SAP サーバーでトランザクション・コード SMQ1 を入力すると、キューの内容を表示できます。
- 送信が正常に行われ、「確実一回のみイベント送達」を選択していた場合には、アダプターによってイベント永続表からトランザクション ID が削除されます。アダプターがビジネス・オブジェクトを送信する際に障害が生じると、トランザクション ID はイベント表にとどまります。 SAP サーバーから別のイベントを受信すると、以下の処理が行われます。
- アダプターはトランザクション ID を検査します。
- イベントが表内の ID と一致すると、障害が発生したイベントをアダプターが一度処理します。重複 ID のイベントは送信されないので、イベントは一度限り処理されます。