この章では、IBM WebSphere Business Integration Adapter for mySAP.com の ABAP Extension module について説明します。ABAP Extension module により、統合ブロ ーカーはバージョン 4.0、4.5、および 4.6 の SAP R/3 アプリケーションからビジ ネス・オブジェクトを送受信することができます。
この章の内容は以下のとおりです。
v 『ABAP Extension module のコンポーネント』
v 37ページの『ABAP Extension module の動作方法』
ABAP Extension module のコンポーネント
ABAP Extension module は、Java および ABAP で記述されたコンポーネントから 構成されています。Java コンポーネントは、コネクター・モジュールと SAP RFC ライブラリーから構成されています。SAP では、Java および C で記述した RFC ライブラリーを提供しています。ABAP コンポーネントは、各種の SAP アプリケ ーション機能モジュール、データベース表、およびプログラムから構成されていま す。これらの ABAP コンポーネントは、アダプターの一部として開発、提供される ものと、インストールされた各 SAP システムに固有なものとがあります。
36ページの図5 に、ABAP Extension module の全体的なアーキテクチャーを示し ます。
© Copyright IBM Corp. 1997, 2003
35
Java コンポーネント
コネクターは、JAR (Java Archive) ファイルとして提供され、実行されます。コネ クターは、イベント・デリバリーおよびイベント・ビジネス・オブジェクト要求プ ロセスを処理します。SAP RFC ライブラリーも、JAR ファイルとして納入され、
実行されます。このライブラリーは、外部プログラムから SAP アプリケーション 内の ABAP 機能モジュールを実行できるようにします。
Java コンポーネントは、以下の処理を行います。
v SAP RFC ライブラリーと SAP Gateway を使用して、SAP アプリケーションへ の RFC 接続をオープンします。
v 統合ブローカーからの要求を処理し、その要求をコネクターの ABAP コンポーネ ントに渡します。
v SAP アプリケーションでイベントをポーリングします。
ABAP コンポーネント
コネクターの ABAP コンポーネントは、機能モジュール、プログラム、およびデー タベース表です。これらの要素は、Java コンポーネントによって開始されたイベン 図5. ABAP Extension module のアーキテクチャー
ト・デリバリーおよびビジネス・オブジェクト要求プロセスを処理します。ABAP コンポーネントは、コネクター・トランスポート・ファイルでデリバリーされて SAP アプリケーションにロードされ、ロードされた後には ABAP リポジトリー・
オブジェクトとして実行されます。
ABAP コンポーネントは、以下の処理を行います。
v Java コンポーネントからのビジネス・オブジェクト要求を、特定のビジネス・オ ブジェクト・タイプおよび動詞を処理するために設計された適切な機能モジュー ルを呼び出して処理します。
v イベント表内のイベントを検出またはトリガーしたり、イベント表にイベントを 格納したりします。
v Java コンポーネントからのイベント要求と、そのイベントの戻り (イベント・ス テータス更新) を処理します。
ABAP Extension module の動作方法
ABAP Extension module が提供するほとんどの機能は、SAP アプリケーションの内 部で実行されます。SAP アプリケーションには、すべてのコネクターが実装する必 要のある仮想関数のほとんどについて、それに対応する ABAP 機能モジュールがあ ります。ただし、init()、doVerbFor()、および pollForEvents() の各メソッドに 固有な要件に対応する ABAP 機能モジュールは SAP から提供されていないため、
これらの機能モジュールはコネクター・モジュールの一部として開発され、提供さ れています。Java コンポーネントもいくつかの機能を提供しますが、これらのメソ ッドに関する処理の大部分は、SAP アプリケーション内で ABAP コンポーネント によって行われます。
表5 に、コネクター・モジュールが実装している仮想 Java メソッドと、それに対 応する ABAP コンポーネントを示します。これは、コネクターで使用される ABAP コンポーネントの完全なリストでないことに注意してください。
表5. Java コンポーネントとそれに対応する ABAP コンポーネント
Java コンポーネント ABAP コンポーネント
doVerbFor() /CWLD/RFC_DO_VERB_NEXTGEN
getVersion() 実装不要
getBOHandlerForBO 実装不要
init() /CWLD/RFC_LOGON
pollForEvents() /CWLD/RFC_EVENT_REQUEST
/CWLD/RFC_EVENT_RETURN
terminate() 実装不要
これらの ABAP 機能モジュールは、ABAP Extension module のコアを構成してい ます。以下のセクションでは、コネクターの初期化、ビジネス・オブジェクトの処 理、およびコネクターでのイベント通知の処理方法について説明します。
実装されている機能については、この章の残りの部分で説明します。
第 3 章 ABAP Extension module の概要
37
初期化
init() メソッドは、宛先の SAP アプリケーションが実行されているかどうか、お
よび ABAP 機能モジュールを実行するために RFC ライブラリーを使用できるかど うかを確認するために、ABAP 機能モジュールの /CWLD/RFC_LOGON を呼び出しま す。また、/CWLD/RFC_LOGON 機能モジュールは、進行中のすべてのイベントを処理 するときにも呼び出されます。イベント検索済みの状況 (イベント表に R とマーク される状況) がマークされたイベント表にあるイベントはすべて、InDoubtEvents コ ネクター・プロパティーに基づいて処理されます。デフォルトのプロパティー値 は、Ignore です。イベント分配が使用されているときは、その特定のコネクターお よびサーバーに属する、状況が ‘R’ のイベントだけ、そのコネクター・プロパティ ーに従って処理されます。イベント分配が使用されていないときは、状況が ‘R’ の すべてのイベントが、そのコネクター・プロパティーに従って処理されます。コネ クター・プロパティーが reprocess であるときは、これらのイベントは、キュー (イ ベント表で Q とマークされる) の状況に変更されます。コネクターでイベントのポ ーリングを行うときは、‘Q’ 状況のすべてのイベントが、
/CWLD/RFC_EVENT_REQUEST 機能モジュールを使用して処理されます。コネクター・
プロパティーが FailOnStartUp に設定されている場合は、SAP ログおよびローカ ル・ログ・ファイル内に致命的エラーが記録され、コネクターがシャットダウンさ れます。また、致命的エラーが発生したことを通知する E メールもユーザーに送信 されます。コネクター・プロパティーが LogError に設定されている場合は、SAP ログおよびローカル・ログ・ファイルの両方にエラーが記録されます。進行中のイ ベントは処理されず、またコネクターはシャットダウンされません。コネクター・
プロパティーが Ignore に設定されている場合、イベント表に進行中のイベントがな いかのように、進行中イベントは無視され、コネクターはポーリングします。
それが正常に実行されない場合には、コネクターは終了します。
ビジネス・オブジェクトの処理
SAP 用のすべてのサービス呼び出し要求は、コネクター・モジュールの Java コン ポーネントに属する doVerbFor() メソッドにより開始されます。コネクターの ABAP 機能モジュール /CWLD/RFC_DO_VERB_NEXTGEN およびコネクター・モジュール の ABAP コンポーネントに属する ABAP Handler が要求を処理します。
39ページの図6 に、ビジネス・オブジェクト処理を示します。
doVerbFor()
コネクター・モジュールの Java コンポーネントの中で、実装された単一のビジネ ス・オブジェクト・ハンドラーの doVerbFor() メソッドが、統合ブローカーからの すべてのビジネス・オブジェクト要求および pollForEvents() メソッドからのすべ てのビジネス・オブジェクト・イベントを処理します。いずれの場合も、
doVerbFor() は次のように実行されます。
1. SAP 用の WebSphere ビジネス・オブジェクトのインスタンスを、このビジネ
ス・オブジェクトのデータを格納している単一の事前定義フラット構造に変換し ます。
2. ABAP 機能モジュールの /CWLD/RFC_DO_VERB_NEXTGEN を呼び出し、ビジネス・
オブジェクト・データを渡してから、ビジネス・オブジェクト・データが戻され るまで待機します。
3. 返されたビジネス・オブジェクト・データを、WebSphere ビジネス・オブジェク トに変換します。
doVerbFor() メソッドは、ビジネス・オブジェクト・データを機能モジュール
/CWLD/RFC_DO_VERB_NEXTGEN に渡した後、戻されたビジネス・オブジェクト・デー タから新たなビジネス・オブジェクト構造を作成します。
図6. doVerbFor() のビジネス・オブジェクト処理
第 3 章 ABAP Extension module の概要
39
/CWLD/RFC_DO_VERB_NEXTGEN
コネクター・モジュールの ABAP コンポーネントでは、コネクターの ABAP 機能 モジュール /CWLD/RFC_DO_VERB_NEXTGEN が、SAP アプリケーションでのすべての
WebSphere ビジネス・オブジェクト処理を実行します。具体的には、ビジネス・オ
ブジェクト・データを適切な ABAP Handler に発送します。この意味で、機能モジ ュール /CWLD/RFC_DO_VERB_NEXTGEN は、ビジネス・オブジェクト・ルーターと考え ることができます。これは次のように実行されます。
1. ビジネス・オブジェクトを受け取ります。
2. ビジネス・オブジェクト・データを処理する ABAP Handler を動的に呼び出 し、ビジネス・オブジェクト・データをパラメーターとして渡します。
3. ビジネス・オブジェクト・データを ABAP Handler から受け取り、要求呼び出 しに戻します。
/CWLD/RFC_DO_VERB_NEXTGEN は ABAP Handler を使用して、各オブジェクト・タイ プおよび動詞固有の要求を実行します。/CWLD/RFC_DO_VERB_NEXTGEN は、ビジネ ス・オブジェクトの動詞のアプリケーション固有情報の値を使用して、どの ABAP
Handler を呼び出すかを決定します。また、アーカイブ状況についても検査しま
す。/CWLD/RFC_DO_VERB_NEXTGEN は、doVerbFor() メソッドから ABAP Handler へ のルーターと見なすことができます。
ABAP handler
ABAP Handler は、コネクター・モジュールの Java コンポーネントに含まれている
ビジネス・オブジェクト・ハンドラーの機能を拡張するため、コネクター・モジュ ールに固有です。ABAP Handler は、SAP アプリケーション内に ABAP 機能モジ ュールとして存在し、/CWLD/RFC_DO_VERB_NEXTGEN と直接通信します。ABAP
Handler は、ビジネス・オブジェクト・データを SAP アプリケーション・データベ
ースとの間で出し入れするために必要です。
41ページの図7 に、ABAP Extension module のビジネス・オブジェクト処理コン ポーネントと、それらの相互関係を示します。この図から分かるように、1 つのビ ジネス・オブジェクト・ハンドラー (doVerbFor()) および ビジネス・オブジェク ト・ルーター (/CWLD/RFC_DO_VERB_NEXTGEN ) に対して、複数の ABAP Handler が 存在します。