BAPI アウトバウンド処理では、メッセージ・フローは要求を SAP サーバーに送信します。
BAPI 作業単位と BAPI 結果セットでは、処理は同期的に扱われます (メッセージ・フローは SAP サーバーからの応答を待機します)。
単純な BAPI の場合、処理を同期的または非動機的に扱うように要求できます (非同期的の場合、メッセージ・フローは SAP サーバーからの応答を待機しません)。
BAPI 作業単位と BAPI 結果セットの場合、処理は同期 RFC で説明されているように扱われます。
単純な BAPI の場合、構成の際に、実行するリモート RFC 呼び出しのタイプについての選択を行います。
同期 RFC
単純な BAPI の構成時に「同期 RFC」 (デフォルト) を選択する場合、または BAPI 作業単位あるいは BAPI 結果セットを使用している場合には、以下の処理ステップが生じます。- BAPI ビジネス・オブジェクトの形式で、アダプターがメッセージ・フローからの要求を受け取ります。
- アダプターは BAPI ビジネス・オブジェクトを SAP JCo 関数呼び出しに変換します。
- アダプターはリモート関数呼び出し (RFC) インターフェースを使用して、SAP アプリケーションでの BAPI または RFC 関数呼び出しを処理します。
- SAP サーバーにデータを渡した後、アダプターは SAP からの応答を処理し、それを変換して、メッセージ・フローで必要とされるビジネス・オブジェクト形式に戻します。
- その後、アダプターはメッセージ・フローに応答を戻します。
非同期トランザクション RFC
構成時に
「非同期トランザクション RFC」を選択すると、以下の処理ステップが生じます。
- BAPI ビジネス・オブジェクトの形式で、アダプターがメッセージ・フローからの要求を受け取ります。
- アダプターはビジネス・オブジェクトを検査して、SAP トランザクション ID 属性に値が割り当てられているかどうかを確かめます。 (SAP トランザクション ID (TID) はご使用のメッセージのフィールドです。)
- SAP トランザクション ID 属性に値が割り当てられている場合、アダプターは処理中にその値を使用します。
- 属性に値がない場合、アダプターは SAP サーバーに対して呼び出しを行い、SAP サーバーからトランザクション ID を取得します。
- アダプターは BAPI ビジネス・オブジェクトを SAP JCo 関数呼び出しに変換します。
- アダプターは、トランザクション・リモート関数呼び出し (tRFC) プロトコルを使用して、SAP サーバーに対する呼び出しを行います。
アダプターは、SAP サーバーからの応答を待機しません。
- 関数データが SAP アプリケーションに渡されると、制御がアダプターに戻ります。
- SAP サーバーに対する呼び出しが失敗すると、SAP サーバーは ABAPException をスローします。
- SAP サーバーへの呼び出しが正常に行われるものの無効なデータが含まれていると、アダプターには例外は戻りません。
例えば、アダプターが無効な顧客番号が含まれる要求を送信する場合、そのような顧客が存在しないことを示す例外にアダプターは応答しません。
- 要求ノードは、トランザクション ID が含まれるメッセージ・ツリーを 1 つのフィールドとして作成します。
キューに入れられた非同期 RFC
構成時に
「キューに入れられた非同期 RFC」を選択すると、以下の処理ステップが生じます。
- BAPI ビジネス・オブジェクトの形式で、アダプターがメッセージ・フローからの要求を受け取ります。
- アダプターはビジネス・オブジェクトを検査して、SAP トランザクション ID 属性に値が割り当てられているかどうかを確かめます。 (SAP トランザクション ID (TID) はご使用のメッセージのフィールドです。)
- SAP トランザクション ID 属性に値が割り当てられている場合、アダプターは処理中にその値を使用します。
- 属性に値がない場合、アダプターは SAP サーバーに対して呼び出しを行い、SAP サーバーからトランザクション ID を取得します。
- アダプターは BAPI ビジネス・オブジェクトを SAP JCo 関数呼び出しに変換します。
- アダプターは、tRFC プロトコルを使用して、SAP サーバー上の指定のキューに対する呼び出しを行います。
アダプターは、SAP サーバーからの応答を待機しません。
- 関数データが SAP アプリケーションに渡されると、制御がアダプターに戻ります。
- SAP サーバーに対する呼び出しが失敗すると、SAP サーバーは ABAPException をスローします。
- SAP サーバーへの呼び出しが正常に行われるものの無効なデータが含まれていると、アダプターには例外は戻りません。
例えば、アダプターが無効な顧客番号が含まれる要求を送信する場合、そのような顧客が存在しないことを示す例外にアダプターは応答しません。
- 要求ノードは、トランザクション ID が含まれるメッセージ・ツリーを 1 つのフィールドとして作成します。