レベル: 初級 久保 陽子, WebSphereテクニカル・セールス, IBM
2009年 7月 10日 本連載では、WebSphere Connectivity製品であるWebSphere Adapters for SAP Softwareを使用した、WebSphereとSAPの連携について、4回にわたって解説していきます。
前回は、WebSphereとSAP連携のために必要となる前提知識についてご紹介しました。今回は、WebSphere Adapters for SAP Softwareの機能と、BAPIインターフェースを使用した際の設定方法についてご紹介します。
SAPアダプターを使用するには?
前回ご紹介した通り、WebSphereとSAPを連携するためには、WebSphere Adapters for SAP Software(以降SAPアダプター)を経由して外部インターフェースを利用する方法と、Webサービスを利用する方法があります。今回はこのSAPアダプターを使用したSAPとの連携についてご紹介しましょう。
まずは開発環境が必要
SAPアダプターは、前身のWebSphere Business Integration Adaptersと同様、ハブ製品(インテグレーション・ブローカー)を経由してSAPサーバーとつながります。このインテグレーション・ブローカーに位置づけられるIBM製品として、WebSphere Enterprise Service Bus(WESB)とWebSphere Message Broker(WMB)があります。
であれば、SAPアダプターを使ってみよう!ということで、SAPアダプターとハブ製品をマシンにインストールしても、いきなり使えるわけではありません。アダプターを含んだインテグレーション・モジュールを作成する開発環境が必要です。WESBをハブとして使用する場合にはWebSphere Integration Developer(WID)が必要となります。前回WebSphere Adaptersには、テクノロジー・アダプターとアプリケーション・アダプターがあることをご紹介しました。WIDには、このテクノロジー・アダプター(開発および実働時に使用する事が可能)、 アプリケーション・アダプター(開発時のみ使用する事が可能)がバンドルされています。SAPアダプターはアプリケーション・アダプターに属しています。 WMBをハブとして使用する場合には、WMBツールキットが用意されており、WIDと同様にテクノロジー・アダプターとアプリケーション・アダプターが組み込まれています。WebSphere Adaptersでは、WID版はV6.2、WMBツールキットはV6.1をサポートしています。(2009年6月末現在)
SAPアダプターを使用する上での前提モジュール
前回の「SAPアダプターを経由して外部インターフェースを利用する方法」でも触れましたが、SAPはRFCという独自のプロトコルを使用して、BAPI(Business Application Programming Interface)、ALE/IDoc(Application Link Enabling/Application Link Enabling/Intermediate Document)などの外部インターフェースを提供しています。SAPアダプターが、SAPアプリケーションと通信するためには、どこかでリクエストを、これら外部インターフェースに変換する必要があります。この役割を果たすのが、SAP Java Connector (SAP JCo)です。SAPアダプターはSAP JCo APIを使用して、リクエストをBAPI関数呼び出しなどに変換します。
SAP JCoはSAP社が提供しているToolkitで、SAPユーザーであれば入手可能です。
図1. SAP Java Connector
Outbound処理とInbound処理
SAPアダプターは、SAP サーバー上のアプリケーションおよびデータと連携するために、Outbound 処理 (アプリケーションからSAPアダプター、SAPアダプターからSAPサーバー) および Inbound 処理 (SAPサーバー からSAPアダプター、SAPアダプターからアプリケーション) がサポートされています。
Outbound 処理の場合、ハブ上のアプリケーションからアダプター操作を呼び出して、SAPサーバー上のデータを作成、更新、照会などが可能です。
Inbound 処理の場合、SAPサーバー上で発生するイベントにより、SAPサーバー上のデータを、アダプターに送信します。
インテグレーション・ブローカー側がトリガーになる処理だけでなく、SAPサーバー側がトリガーになる処理も可能ということです。
SAPアダプターの機能について
SAPアダプターには具体的にどのような機能があるのでしょうか。大きくわけて以下の4つがあります。
- BAPIインターフェースを使用する
- ALEインターフェースを使用する
- Query interface for SAP Software(QISS)を使用する。
- 拡張イベント処理(Advanced Event Processing:AEP)インターフェースを使用する
それでは、それぞれについて見ていきましょう。
図2. SAPアダプターの機能
BAPIインターフェース
SAPの外部インターフェースであるBAPIを使用して、SAPサーバーとの連携を行います。
BAPIを使用する連携機能として、SAPアダプターは以下の3種類を提供しています。
- 単純BAPIインターフェース(Simple BAPI Interface)
BAPIを1回呼出す処理です。最新版SAPアダプターV6.2(2009年6月末現在)では、Outbound処理、Inbound処理が可能です。SAPアダプター V6.1では、単純BAPIのInbound処理を同期コールバック・インターフェース(Synchronous Callback Interface)と呼んでいました。
- BAPI作業単位インターフェース(BAPI Work Unit Interface)
一つのUOW(Unit Of Work)で、複数のBAPIを指定された順序で呼び出す処理です。順序性があり、いずれかのBAPIの処理が失敗した場合、すべてを最初の状態に戻すことが必要な場合に使用されます。Outbound処理が可能です。
- BAPI結果セット・インターフェース(BAPI ResultSet Interface)
BAPIは通常、ビジネス・オブジェクト(マスタデータやトランザクションデータ)に対して、作成、変更、照会などを行う汎用モジュールの形で提供されています。BAPI結果セット・インターフェースは、照会系のメソッドであるGetList関数(ある条件で照会されたデータを配列の形で取得) および GetDetail 関数(あるデータの詳細項目を照会)を使用して、SAP サーバーからデータを取り出します。 GetList 関数から戻される情報を GetDetail 関数への入力として使用されます。Outbound処理が可能です。
SAP社から標準で提供されているBAPIは、通常BAPIのトランザクションモデルに従い実装されています。このトランザクションモデルでは、ユーザーが明示的にCOMMIT WORKを管理できるようにするため、BAPI自身の中でCOMMIT WORKするようには規定されていません。
標準BAPIを使用して、ビジネス・オブジェクトに作成や変更を行い、その処理をCOMMITするためには、“BAPI_TRANSACTION_COMMIT”というBAPIを最後に呼ぶ必要があります。
SAPアダプターは、この“BAPI_TRANSACTION_COMMIT”を、処理の最後に呼ぶ仕様になっていますので、SAPアダプターを使用してWebSphereとSAPを連携する際には、この部分を連携処理の開発者が意識する必要はありません。
ただし、SAPアダプターは”BAPI_TRANSACTION_COMMIT”を呼ぶだけで、実際のCOMMIT処理のタイミングは、SAPサーバーに任されています。
またSAPサーバーでは、汎用モジュール実行時の処理結果をqRFCというプロトコルを使用して、SAPサーバー上の事前定義キューに送るABAPプログラムを開発することも可能です。
このようなSAPサーバー上に作成されたABAPプログラムをBAPI化し、単純BAPIインターフェースの一つであるQueued RFC(qRFC) BAPIインターフェースを使用して、応答の無い非同期呼出しとして、SAPアダプターから呼び出すことも可能です。(SAPアダプターV6.2から可能)
ALEインターフェース
SAPの外部インターフェースであるALE/IDocを使用して、SAPサーバーとの非同期連携を行います。データはIntermediate Document (IDoc) 形式で交換され、Outbound処理及びInbound処理をサポートします。
ALEインターフェースを使用して、IDoc形式でビジネス・オブジェクトをSAPサーバーとやり取りする場合には、SAPサーバー側に、RFC宛先の構成、受信ポートの構成、パートナープロファイルの構成、分散モデルの構成などの設定が必要となります。SAPサーバー側の具体的な設定については、SAP BASISコンサルタントのスキル・エリアになります。
比較的大量のデータをやり取りする場合に、よく用いられるインターフェースです。
Query interface for SAP Software(QISS)
これまでご紹介したBAPIインターフェース、ALEインターフェースは、SAPが標準で提供している外部インターフェースを用いて連携する機能でした。
このQuery interface for SAP Softwareは、SAP サーバーが持つアプリケーション・テーブルからデータを取得したり、データが存在するかどうかについて SAP アプリケーション・テーブルに照会したりできます。
ユーザーが独自に作成したアドオン・テーブルを参照する際によく使われる機能です。
拡張イベント処理(Advanced Event Processing:AEP)インターフェース
拡張イベント処理インターフェースは、SAPサーバー上のイベントを認識することで、SAPとデータのやり取りを行うことが出来るインターフェースです。Inbound 処理と Outbound 処理の両方に使用することができ、SAPサーバー内に、拡張イベント処理インターフェース用のトランスポート・ファイル(ABAPプログラム)を組み込む(移送する)ことで、連携を可能にしています。
Inbound処理の場合は、拡張イベント処理インターフェース用のトランスポート・ファイル内にある汎用モジュールを使用して、イベントが発生した際に動くABAPハンドラーをコーディングします。実際にイベントが起きた際、このABAPハンドラーが動き、イベント・データをビジネス・オブジェクトとして SAPアダプター側に送信します。
Outbound 処理の場合は、アダプターはアプリケーションから送信されたイベントを処理して、ABAPハンドラーを用いて、SAP サーバーからデータを取得したり、そこでデータを更新します。
SAPサーバー上に機能を組み込み、インテグレーション・ブローカーと連携する、特徴のあるインターフェースです。
実際にSAPに接続してみよう!
では実際に、開発環境であるWIDとSAPアダプターのBAPIインターフェースを使用して、SAPと接続してみましょう。
まずは、WIDの画面から、SAPアダプターの構成を行います。手順としては、大まかには以下の通りです。
SAPサーバーから外部インターフェース(この場合はBAPI)の情報を入手するため、SAPサーバーと接続できる環境にて実施します。
- 外部サービスによるSAPアダプターの選択(図3)
- 処理方向の設定(Outbound処理、Inbound処理)
- ESD(エンタープライズ・サービス・ディスカバリー)を使用して、SAPサーバーのBAPI情報を取得(図4)
ESDを使用すると、BAPIのImport、Exportパラメータを、ビジネス・オブジェクトとして取得できます。
- サービスの生成、SAPへの接続情報(SAPサーバーのIPアドレス、システム番号、クライアント番号など)の設定(図5)
- SAPアダプターを含む、モジュールの作成
図3. ファイル→外部サービスにてSAPアダプターを選択する
図4. ESDにてBAPI情報取得
図5. SAP情報設定
WIDには、WESBのテスト環境も用意されており、簡単に接続テストも可能です。
まとめ
今回は、SAPアダプターの機能を中心に、ご紹介をさせていただきました。実際のSAPサーバーとの連携パターンとしては、同期処理でのリアルタイム連携、非同期によるバッチ更新処理などさまざま考えられます。
そのようなシステムを構築する際には、ミドルウエア側のトランザクション制御がどう機能するかが、設計のポイントとなります。
次回はSAPアダプターを使用した際の、トランザクション制御についてご紹介します。
参考文献
著者について  | |  | 久保 陽子, WebSphereテクニカル・セールス, IBM |
記事の評価
|