別々のメッセージ・フローを使って処理する場合、SAPRequest ノードの 「トランザクション・モード」プロパティーを適切に設定する必要があります。
このシナリオは、SAP BAPI トランザクション・コミットで説明している、コンセプトを示す 2 つの例の 1 つです。あわせてシナリオ 1: 単一フローでのビジネス・パートナーと関係の処理も参照してください。
BAPI_SALESORDER_CREATEFROMDAT2
BAPI_SALESORDER_GETSTATUS
例えば、購買があると、ユーザーは Web ベースのアプリケーションを使って注文の照会を行います。
照会の結果は、外部の SAP サーバーで実行した、注文作成のステップの動作 (非同期または同期) と密接にリンクしています。 以下の非同期の例 (デフォルトの動作) では、照会が失敗し、ユーザーは作成された注文の否定応答を受け取ります。
BAPI が注文を作成するメッセージ・フロー | ||||
---|---|---|---|---|
A1. | 販売注文を作成するトランザクション・メッセージ・フローをアプリケーションが起動します。 | |||
A2. | SAPRequest ノードが注文の作成をサブミットすると、注文登録番号が返されます。 メッセージ・フロー・レベルのトランザクションにノードが関係するため、メッセージ・フローが完了したときにコミットが実行されます。 | |||
A3. | MQReply ノードは MQ メッセージを出力キューに入れ、トランザクションのコミットを保留します。 | |||
A4. | メッセージ・フローが完了し、ブローカーはフローに関係するすべてのリソース (SAP および MQReply ノードの呼び出しを含む) のコミットを開始します。 ユーザーのアプリケーションで注文番号が使用可能になります。 | |||
次の 2 つのプロセスが同時に発生し、お互いが効果的に競争し、完了します。 | ||||
SAP が非同期で処理をコミット | BAPI が注文状況を取得するメッセージ・フロー | |||
B1. | SAP のコミットが開始します。 | C1. | 注文状況の照会を要求します。 | |
B2. | SAP のコミットが完了します。 | C2. | SAPRequest ノードが注文を要求します。 |
以下の同期の例では、照会が成功し、ユーザーは作成された注文の肯定応答を受け取ります。
BAPI が注文を作成するメッセージ・フロー | |
---|---|
1. | 販売注文を作成するトランザクション・メッセージ・フローをアプリケーションが起動します。 |
2. | SAPRequest ノードが注文の作成をサブミットすると、注文登録番号が返されます。 メッセージ・フロー・レベルのトランザクションにノードが関係するため、メッセージ・フローが完了したときにコミットが実行されます。 |
3. | MQReply ノードは MQ メッセージを出力キューに入れ、トランザクションのコミットを保留します。 |
4. | メッセージ・フローが完了し、ブローカーはフローに関係するすべてのリソース (SAP を含む) のコミットを開始します。 |
SAP が同期をとって処理をコミット | |
5. | SAP のコミットが開始します。 |
6. | SAP のコミットが完了します。 |
7. | アダプターが制御をブローカーに戻します。 |
8. | MQReply ノードの呼び出しがコミットされるため、ユーザーのアプリケーションで注文番号が使用可能になります。 |
BAPI が注文状況を取得するメッセージ・フロー | |
9. | 注文状況の照会を要求します。 |
10. | SAPRequest ノードが注文を要求します。 |
SAP が注文のコミットを完了します。これにより、注文の照会が成功します。