BAPI Module の動作方法

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 のビジネス ・オブジェクト処理を示します。

図 47. BAPI Module ビジネス・オブジェクト処理

BAPI ビジネス・オブジェクト・ハンドラーは、Vision ビジネス・オブジェクト・ハンドラーによって呼び出されると、以下の動作を実行します。

  1. Vision ビジネス・オブジェクト・ハンドラーから SAP 用の WebSphere ビジネス・オブジェクトを受け取ります。
  2. BAPI パラメーターにビジネス・オブジェクト・データを取り込みます。
  3. RFC を使用して BAPI 呼び出しを実行し、SAP アプリケーションに BAPI パラメーターを渡します。ビジネス・オブジェクト・ハンドラーは、ビジネス・オブジェクト・データが戻されるまで待機します。
  4. ビジネス・オブジェクト・データ (BAPI パラメーター) を受け取ります。
  5. BAPI パラメーターを、WebSphere ビジネス・オブジェクト・データに変換します。
  6. ビジネス・オブジェクトを Vision ビジネス・オブジェクト・ハンドラーに渡し、最終的には統合ブローカーに渡します。

注:
BAPI Module が Return Structure または Return Table を持つ場合、コネクターはメッセージ・タイプ A (打ち 切り) および E (エラー) の有無を調べ、サービス呼び出し要求 が正しく処理されたかどうかを判別します。メッセージ・タイプ A または E は、サービス呼び出し要求の処理が失敗したことを示します。BAPI に Return Structure または Return Table がない場合は、独自のエラー処理を実装する必要があります。 Return Structure または Return Table にあるエラー・メッセージ (1つまたは複数) が、リターン状況記述子の中に返されます。

BAPI のサポート

ビジネス・オブジェクト生成ユーティリティーの SAPODA は、BAPI をサポートするビジネス・オブジェクト定義を生成します。SAPODA は、BAPI のインターフェースを解釈し、そのパラメーターをビジネス・オブジェクト属性にマップし、各属性のアプリケーション固有情報 (ASI) を追加します。

注:
一部の BAPI は、WebSphere ビジネス・オブジェクトの単純属性に対応する単一フィールド・パラメーターを持ちません。コネクターは、すべてのトップレベル・ビジネス・オブジェクトが、キー属性として使用される単純属性を持つことを要求します。そのため、単一フィールド・パラメーターを持たない BAPI からビジネス・オブジェクトおよびビジネス・オブジェクト・ハンドラーを生成すると、SAPODA はトップレベル・ビジネス・オブジェクトに Dummy_key という名前のキー属性を作成し、それにキー属性としてマークを付け、dummy_key をこの属性のアプリケーション固有情報として追加します。Dummy_key は、コネクターにキー属性を提供して、ビジネス・オブジェクトを処理できるようにします。ただしコネクターは、アプリケーション・データを変更する際には Dummy_key 属性の値を無視します。

BAPI トランザクションのサポート

コネクターおよび 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 のビジネス・オブジェクトの開発を参照してください。

Copyright IBM Corp. 2004, 2005