BAPI Module は、init()、terminate()、pollForEvents()、および doVerbFor() の各メソッドを実装します。ただし、BAPI Module は要求操作のみを サポートするため、pollForEvents() メソッドは使用されません。
init() メソッドは、SAP Gateway を経由した SAP アプリケーションとの RFC 接続を開きます。コネクターは、初期化に失敗すると terminate() メソッドを使用して終了します。コネクターは、SAP Gateway への接続を切断することで終了します。
すべてのビジネス・オブジェクト要求は、Vision コネクター・フレームワークのビジネス・オブジェクト・ハンドラー内にある doVerbFor() メソッドの単一の実装で開始されます。 Vision ビジネス・オブジェクト・ハンドラーは、BAPI Module と統合ブローカーとの間で受け渡しされる すべてのビジネス・オブジェクトを処理します。BAPI Module では、1 つの BAPI ビジネス・オブジェクト・ハンドラーですべての BAPI 呼び出しをサポートします。
図 47 に、BAPI Module のビジネス ・オブジェクト処理を示します。
BAPI ビジネス・オブジェクト・ハンドラーは、Vision ビジネス・オブジェクト・ハンドラーによって呼び出されると、以下の動作を実行します。
ビジネス・オブジェクト生成ユーティリティーの SAPODA は、BAPI をサポートするビジネス・オブジェクト定義を生成します。SAPODA は、BAPI のインターフェースを解釈し、そのパラメーターをビジネス・オブジェクト属性にマップし、各属性のアプリケーション固有情報 (ASI) を追加します。
コネクターおよび SAPODA は、SAP BAPI トランザクション (「作業論理単位」とも呼ばれる) をサポートします。BAPI トランザクションは、トランザクション全体を完全に実行するために順番に実行される BAPI の集合から成ります。複数の BAPI のシーケンスを、同じ JCo クライアント接続を使用して呼び出します。
SAPODA は、BAPI トランザクションをサポートするため、トップレベルのビジネス・オブジェクトを生成します。このオブジェクトは、それぞれがトランザクションのシーケンスの中の 1 つの BAPI 呼び出しを表す子ビジネス・オブジェクトの集合のラッパーの役目を果たします。BAPI トランザクションのラッパー・オブジェクトは、完全なトランザクションを表します。第 2 レベルの子ビジネス・オブジェクトはそれぞれ、メソッドの構造体パラメーターまたは表パラメーターを表します。単純属性は、メソッドの単純パラメーターに相当します。
BAPI ビジネス・オブジェクト・ハンドラーは、トランザクション内のすべての BAPI 呼び出しが正常に処理されたとき、SUCCESS を戻します。障害が起きた場合、ビジネス・オブジェクト・ハンドラーは、エラー処理も提供します。トランザクションの BAPI 呼び出しの処理に失敗した場合、エラー・コードによっては、そのトランザクションのそれ以降の呼び出しが終了し、BAPI_RETURN によって FAIL または APPRESPONSETIMEOUT が戻されます。
BAPI インターフェースには、トランザクションのロールバック機構はありません。ロールバックは、次のいずれかの方法で実行することができます。
ロールバックは、ビジネス・プロセス・ロジックによって処理する必要があります。
BAPI トランザクション・ビジネス・オブジェクトの構造の詳細については、BAPI Module のビジネス・オブジェクトの開発を参照してください。