インバウンド・イベントには、それぞれが単一のビジネス・オブジェクトと対応する単一の IDoc や複数の IDoc を含めることができます。
複数の IDoc は、SAP サーバーによりアダプターへ、IDoc パケットの形式で送信されます。 アダプター構成時に、パケットを個々の IDoc に分割できるかどうか、あるいは 1 つのオブジェクト (非分割) として送る必要があるかどうかを指定できます。
イベント処理は、
SAP サーバーがトランザクション ID をアダプターに送信すると開始されます。 以下のシーケンスが発生します。
- アダプターがイベントの状況を調べ、以下のいずれかのアクションを実行します。
- これが新規イベントである場合、アダプターは、各イベント・リカバリー・テーブルに状況 0 (作成済み) とともに EVNTID (トランザクション ID に対応する) を保管します。
- イベント状況が -1 (ロールバック) の場合、アダプターは状況を 0 (作成済み) に更新します。
- イベント状況が 1 (実行済み) の場合、アダプターは、成功の標識を SAP システムに戻します。
- SAP システムはアダプターに IDoc を送信します。
- アダプターは IDoc をビジネス・オブジェクトに変換し、それをエンドポイントに送信します。
単一の IDocs と非分割 IDoc パケットの場合、アダプターは、トランザクションをサポートしているエンドポイントだけでなく、トランザクションをサポートしていないエンドポイントにもオブジェクトを送達できます。
- 分割パケットの場合のみ、アダプターは以下のタスクを実行します。
- アダプターはイベント・リカバリー・テーブルの BQTOTAL 列 (またはテーブル・フィールド) をパケット内の IDoc の数に更新します。 この数は、監査やリカバリーの目的に使用されます。
- アダプターは、ビジネス・オブジェクトを 1 つずつメッセージ・エンドポイントに送信し、BQPROC プロパティーを、処理している IDoc 順序番号に更新します。 アダプターは、オブジェクトを、アプリケーション・サーバーによって制御される固有の XA トランザクション (2 フェーズ・コミット・トランザクション) の一部として、適切なエンドポイントに送達します。
- エンドポイントがイベントを受け取り、トランザクションがコミットされると、アダプターによって BQPROC プロパティーの数値が増分されます。
XA トランザクションをサポートするようにメッセージ・エンドポイントを構成する必要があります。
アダプターが分割 IDoc パケットの処理中にエラーを検出すると、アダプターは、IgnoreIDocPacketErrors 構成プロパティーに応じて、次の 2 とおりのうちいずれかの動作を行います。 - IgnoreIDocPacketErrors プロパティーが false に設定されている場合、アダプターはパケット内の IDoc をそれ以上処理することをやめ、SAP システムにエラーを報告します。
- IgnoreIDocPacketErrors プロパティーが true に設定されている場合、アダプターはエラーをログに記録して、パケット内の残りの IDoc の処理を続けます。 トランザクションの状況は 3 (進行中) として示されます。
この場合は、失敗した IDoc 番号がアダプターのログに示されます。これらの IDoc はそれぞれ別個に再実行依頼する必要があります。 イベント・リカバリー・テーブル内でこれらのレコードを手動で保守する必要もあります。
このプロパティーは、単一 IDoc や非分割 IDoc パケットには使用されません。
- SAP システムがアダプターに COMMIT 呼び出しを送信します。
- アダプターが IDoc パケット内にあるすべてのビジネス・オブジェクトをメッセージ・エンドポイントに送達した後、アダプターはイベント状況を 1 (実行済み) に更新します。
- IDoc パケット処理の途中で突然の割り込みがあった場合、アダプターは現行シーケンス番号から IDoc の処理を再開します。 アダプターは、IgnoreIDocPacketErrors が true に設定されていても、BQPROC プロパティーの更新を続行します。 万一 IDoc パケットの処理中にアダプターを手動で終了してしまっても、アダプターは処理を続行します。
- アダプターがイベントを処理している途中で例外が発生した場合や、エンドポイントが例外を生成した場合は、いずれの場合もイベント状況が -1 (ロールバック) に更新されます。
- 例外が発生しなければ、SAP サーバーはアダプターに CONFIRM 呼び出しを送信します。
- アダプターは状況が 1 (実行済み) になっているレコードを削除し、トラッキングおよび監査目的で使用できる共通イベント・インフラストラクチャー (CEI) イベントをログに記録します。