SAP アダプターを BAPI インターフェースで使用する場合、トランザクションのフローを設計するときに特定の要因を検討する必要があります。
データベースなどのリソースに対する更新内容の整合性がとれるように、メッセージ・フローをトランザクションに構成できます。これにより、同じトランザクション内の変更内容がまとめてコミットまたはロールバックされます。 このトランザクション単位の調整は、BAPI インターフェースを SAPRequest ノードとともに使用するときに、SAP データベースのような外部システムの更新にも拡張できます。
SAP アダプターは、SAP を待って更新内容を同期をとってコミットするか、SAP でコミットが行われている間に非同期でコミットを発行して戻るかを制御できます。 この動作の決定は、「アダプター接続」ウィザードの「オブジェクトの構成」ペインの BAPI commit を呼び出す前の wait パラメーターの使用 パラメーターを使って行います。 アダプターは、メッセージ・フローのトランザクション特性の設定に応じて、コミットをコールするかどうかを決定します。
SAP の初期のリリースでは、一部の BAPI はコミットでコード化されていました。 SAP リリース 4.0A 以降は、コミット処理を実行する代わりに、BAPI が BAPI_TRANSACTION_COMMIT を個別に発行して更新を強制することで、さらに効果的になっています。 この方式を利用することで、作業をコミットする前に、バッチ化された作業単位として BAPI を呼び出すことができます。 BAPI がコミットでコード化されているかどうかを確認するには、BAPI の資料を参照してください。
SAPRequest ノードの「トランザクション・モード」プロパティーを「はい」に設定すると、アダプターは、メッセージ・フローが完了した時点で、他のデータベースのコミットに合わせて SAP コミットを発行するように指示を受けます。 「アダプター接続」ウィザードの BAPI commit を呼び出す前の wait パラメーターの使用 パラメーターを設定することで、コミットを同期させるか非同期にするかを指定できます。
SAPRequest ノードの「トランザクション・モード」プロパティーを「いいえ」に設定すると、アダプターは SAP コミットを発行せず、「アダプター接続」ウィザードで設定したパラメーターは無関係になります。 ただし、コミットは、BAPI 作業単位の COMMIT verb の一部 (ウィザードのプロパティーが適用される)、または BAPI_TRANSACTION_COMMIT へのコール (ウィザードのプロパティーは適用されない) として発行はできます。
BAPI がコミットでコード化されており、「トランザクション・モード」が「はい」に設定されている場合、同じフローで同じアダプターを使用して、他の SAPRequest ノードのトランザクションと同じトランザクションの一部として BAPI が呼び出されます。 このため、このメッセージ・フロー内で既に呼び出されている BAPI はすべてコミットされます。
「トランザクション・モード」を「いいえ」に設定すると、BAPI は現時点またはメッセージ・フローの最後でコミットされず、コミットが保証されません。