ERP(統合基幹業務システム)は、今や企業の経営に不可欠のシステムとなりつつあります。このため、エンタープライズシステムをERPパッケージに置きかえたり、Javaアプリケーションで新規開発したいというニーズが出てきました。一方、COBOLやCで開発した業務システムが多く残っている場合は、ERPを使ったシステムに既存資産を全て刷新するリスク(費用・業務移行等)が大きく、悩ましいところです。
このような場合、既存資産を活かしつつ、段階的にシステムを移行していくことができればベストです。そのために、前回までに説明してきたSOAのエンタープライズバスを利用する方法があります。
SAP ERPパッケージとその種類
SAPは、ERP市場最大手のソフトウェアメーカです。ここでは、同社のERP製品であるSAP R/3、mySAP ERP、SAP ERP 6.0を例に、SOA-ERP連携の方法を説明します。まず、SAP ERPの歴史とその製品についておさらいしておきましょう。
SAP R/3
WindowsやUNIXのオープンプラットフォームで動作するクライアント/サーバ型のシステムで、1992年に発表されました。ABAPと呼ばれるSAP独自のプログラム言語で実装されており、財務会計、管理会計、販売、在庫購買、生産計画/管理などの業務に必要なモジュールをほとんど備えています。ビジネスプロセスをこのパッケージにあらかじめ用意されている機能で実現できない場合、アドオンパッケージを開発する必要があります。
mySAP ERP
SAP R/3の後継製品。2004年にリリースされ、統合アプリケーションプラットフォーム「SAP NetWeaver」を基盤にした新しいアーキテクチャに変更されました。またWebサービスにも対応し、RFCイネーブルされた汎用モジュールをWebサービス化できるようになりました。従来の R/3の部分についてはECC(ERP Central Component) 5.0としてモジュール提供されました。
SAP ERP 6.0
2006年にSAP ERP Central Component(ECC)のバージョンを6.0とし、基盤のSAP NetWeaverのバージョンは7.0となりました。また、Enhancement Packageを組み込むことにより、再定義されたWebサービス「Enterprise Services(ES) 」が利用できるようになりました。このWebサービスは、RFCイネーブルされた汎用モジュールとはインターフェースが異なっています。
SAP ERPとの連携方式
最近のSAP 6.0などはWebサービスを使ったSOAパッケージとの連携が可能ですが、SAP R/3ではそうはいきません。SAP R/3の時代からサードパーティのアプリケーションとSAP ERPを連携するため、次のようなインターフェースが提供されています。
RFC(Remote Function Call)
RFCとは呼出元と異なるシステムで動作する汎用モジュールを指します。SAP ERPに入ってくる方向をインバウンド、SAP ERPから出ていく方向をアウトバウンドと呼んでいます。外部のシステムからSAP ERPを呼ぶ場合にはC/C++やJavaをサポートしたライブラリを使います。
IDoc(Intermediate Document)
IDocは、EDIシステムとの連携を主とした構造化されたデータを交換するためのインターフェースです。
BAPI(Business API)
ビジネスオブジェクトを意識したインターフェースです。
これらのインターフェースは、同期または非同期でリアルタイムに連携するためのインターフェースです。これらとは別に「バッチインプット」と呼ばれるバルクデータを転送するバッチでのデータ転送用インターフェースがあります。
リアルタイムにSAP ERPと連携するためには、通常上記のRFC/IDoc/BAPIインターフェースを使って、C/C++やJavaで連携部品を開発する必要があります。開発の手間を省くため、通常はプレビルドされた「SAPアダプタ」を購入し、ノンプログラミングで外部接続を実現します。
たとえば、日立のCosminexusでは、アイウェイ・ソフトウェアとの協業により、プレビルドされたSAPアダプタとして「iWayアダプタ」を提供しています。iWayアダプタを導入することにより、連携部品を開発することなしにSAP ERPと接続することができるようになります。
mySAP ERP以降の製品からは、ABAPで開発されたRFCイネーブルされた汎用モジュールをWebサービス化することができるようになり、連携部品の開発は不要になっています。また、SAP ERP 6.0のEnhancement PackageではプレビルドされたWebサービス(ES)を利用することができ、より便利になっています。
SOA-ERP連携システムの構築
ここまでの話をふまえ、SAP ERPとの連携を検討する場合、次の2種のシステム構成が考えられます。
①Webサービスのインターフェースを装備しないSAP ERPとの連携
SAP R/3は、Webサービスのインターフェースを装備していません。このような場合は前出のiWayアダプタなどのSAPアダプタを利用して、SOAプラットフォームとの連携システムを構築できます(図1 ) 。
図1 iWayアダプタを使った連携例
CosminexusとiWayアダプタは、内部でSOAPプロトコルを経由して接続します。接続定義に必要なWSDLは、iWayアダプタが動作するサーバに Webブラウザでアクセスして取得します。
②Webサービスのインターフェースを装備したSAP ERPとの連携
mySAPERPやSAP ERP 6.0はWebサービスのインターフェースを装備しています。このような場合、iWayアダプタを利用しなくても、Cosminexusとの連携システムを構築できます(図2 ) 。
図2 iWayアダプタを使わない連携例
CosminexusとSAP ERPはSOAPプロトコルで直接接続します。接続定義に必要なWSDLは、SAP ERPから取得します。SAP ERPからCosminexusを呼び出すことも可能です。
なお、SAP ERPにWebサービス経由で接続するためには、ABAPで開発されたRFCイネーブルされた汎用モジュールをWebサービス化したり、プレビルドされた Webサービス(ES)を利用するために Enhancement Packageをインストールしたり、その他の方法でSAP ERPが提供するWebサービスが利用可能な状態にしておく必要があります。
連携方式を使い分けるための指針
最新のSAP ERPはWebサービスをサポートしており、iWayアダプタを導入しなくても接続できるようになりました。しかし次のような場合、開発および運用コストの面でiWayアダプタを利用することも考えられます。
複数ベンダのERPとの連携
グループ会社あるいは部門ごとでベンダの異なるERPを導入しており、全社的にシステム統合をしたい場合があります。たとえば対象となるERPとしてSAP ERPとOracle E-Business Suiteがあった場合、連携するWebサービスの運用をiWayアダプタに集約するということが考えられます。
SAP R/3から最新版SAP ERPへのバージョンアップ
図1 のシステム構成で既に運用を開始した後、SAP ERPをバージョンアップする場合があります。最新のSAP ERPではWebサービスをサポートしており、iWayアダプタは不要です。しかし、iWayアダプタを無効にして直接Webサービスで接続する場合、連携システム側の接続インターフェースが変更になり、連携システム側に改修が必要となります。このような場合、iWayアダプタを継続利用することが考えられます。
このように、連携方式は状況に応じて適切な方を選び、その後段階的に移行していくのがポイントです。
SOA-ERP連携の実際
では実際に、CosminexusからSAPのESを呼び出す場合の利用例について簡単に説明します。想定パターンは、サービス・リクエスタからSOAPプロトコルでESBに接続後、SOAPアダプタを介してSAP ERP上のESのオペレーションを呼び出し、ビジネスプロセスで決められたシナリオを実行するというものです(図3 ) 。
図3 パターンの構成例
SAPが提供するWebサイトES Workplace には、ビジネススイート製品の一部として提供している最新のES定義が用意されています。ESWorkplace上では、業務知識なしでもESを試せるように、いくつかのESを“ SimpleSample” として外部から利用できる形で公開しています。
今回は、このSimpleSampleの中から「CREATE SALESORDER BASED ON SALES HISTORY」というシナリオを利用してSAP ERPに接続します。このサンプルは、以下のような手順で既存の受注書(Sales Order)を使って、新しい受注書を作成するシナリオになっています。
最初に「Find Sales Order Basic Data by Buyer and Basic Data」というESを呼び出し、購買者IDによって、過去の受注書を検索します。
受注書を選択した後、「 Read Sales Order_V1」というESを呼び出して、受注書の詳細情報を取得します。
最後に、取得した受注書の受注パラメータを変更し、「 Create Sales Order」という ESを呼び出して、新しい受注書を作成・登録します。
実際には、次の手順で連携シナリオを実装します。
ES Workplace から、次のESのWSDLを取得します。
Find Sales Order Basic Data by Buyer and Basic Data
Read Sales Order_V1
Create Sales Order
これらのWSDLを使ってESに接続するアダプタを定義します。
シナリオに従ってビジネスプロセスを定義します。
アダプタの定義
アダプタの定義は、WSDLを入力するだけで自動で生成されます。図4 は、Cosminexusの開発環境のアダプタ定義画面です。
図4 アダプタ定義例
ビジネスプロセスの定義
シナリオにしたがって、ビジネスプロセスを定義します。ビジネスプロセスの定義は次の3つのステップで構成されます。
ビジネスプロセスの受付パラメータを定義する。
ESのサービス呼び出しと、その呼び出し順序を定義する。
ESのサービスの入力パラメータとビジネスプロセスの応答パラメータを定義する。
図5 ビジネスプロセス定義し、SAP ERPに接続したところ
接続確認
サービス・リクエスタを、MyEclipseのWebサービスエクスプローラで代用して接続確認できます。ビジネスプロセスの呼び出しに定義したWSDLを指定して、Webサービスエクスプローラを起動します。起動後、入力値を指定して実行すると、画面上に結果が表示されます(図6 ) 。
図6 接続確認の画面
おわりに
この例のようにシナリオがあらかじめ決まっていれば、アダプタの定義やプロセスの定義はほぼ自動的に決まり、接続の確認も簡単にとることができます。皆さんもぜひ一度試してみてください。
出典:Cosminexusホワイトペーパー「CosminexusとSAP ERPパッケージとの連携」
URL:http://www.hitachi.co.jp/Prod/comp/soft1/cosminexus/whitepaper/pdf/wp_sap.pdf