三層構造とデータ連携

SAPシステムとのデータ連携

たとえば、SAP Intermediate Document (SAP IDoc)、たとえばSAP Business Application Programming Interface (SAP BAPI)、たとえば SAP Remote Function Call (SAP RFC) …と、SAPシステムには、いろいろなデータ連携の技法や機能があります。
ここに挙げたものはSAPシステムのアプリケーション層でのデータ連携の技法ですが、SAPシステムは、データベース、アプリケーション、プレゼンテーションの三層からなるのですから、他の層でのデータ連携があっても良さそうです。
では、SAPシステムの三層それぞれでのデータ連携はどのようなものなのでしょうか。今回はそういう視点でSAPシステムのデータ連携についてご紹介しましょう。

■ データベース層でのデータ連携

あるDBMSの管理下におかれたデータベーステーブルをアプリケーションシステム間のデータ連携に利用するのがこの連携方式の骨格です。この方式自体はデータ連携の技法としては特段珍しいものではありません。ですが、SAPシステムでのデータ連携に限って言えば、事実上不許可と言える扱いです。

SAPシステムは独自のデータベースアクセス機構を持ちます。DBMS製品が提供する機能に似たものを見つけることはできますが、互換ではありません。排他制御がその好例で、SAPシステムでは、SAPシステム固有の排他制御機構を持ちます。このため、SAPシステムからのデータアクセスとDBMSへの直接アクセスでは、処理の整合性や一貫性は保証されません。
SAPシステムの独自の機構には、排他制御以外にも、透過型以外のテーブルを扱う仕組み、テーブルバッファリング(テーブルデータのアプリケーションサーバ上のキャッシュ)、独特の権限管理、を挙げることができます。
ABAPランタイムがABAPアプリケーションプログラムに提供する多言語対応や多通貨対応も、データベース層ではなくアプリケーション層の機能ですので、ここで挙げた独自性に準じたものだと言えます。

SAP独自の機構に類似した製品を作ることは可能でしょうが、SAP社は互換製品の認証どころかABAPランタイムの基盤の詳細仕様を公開していません。おそらくは知財管理上の問題となるはずです。さらに、仮に互換なものができたにせよ『自称』互換であるわけで、知財問題にならずとも、業務用としては採用しにくいものであると言えましょう。
データベース層での連携が推奨されない理由は、技術的な難しさというよりは知財と権利の課題に行き着くからという言い方もできるかと思います。

■ アプリケーション層でのデータ連携

データベース層からではなく、アプリケーション層のプログラムを通して二つのアプリケーションシステム間のデータ連携を実現するのがこの連携方式の骨格です。
データベース層での連携とは異なり、SAPシステムの独自のデータベースアクセス機構も、多言語対応や多通貨対応も、機能の補完や追加には及びません。
BAPI も IDoc も、RFCも、そして、ABAPで書いたバッチインプットプログラムも、アプリケーション層でのデータ連携に分類されるものです。
アプリケーション層でのデータ連携は、プロセス間通信によるデータ連携とデータファイルを使ったデータ連携が可能です。システムとしては両方が可能ですが、両方を自在に使い分けるというものではありません。たとえば、BAPIはRFC、IDoc連携は両方、SAP データ転送ワークベンチやSAPレガシシステム移行ワークベンチはファイル渡し、といったように、製品機能ごとの対応です。

 

column02_1_1

 

図1 SAP architecture of “dual stack instance”
出所:
http://help.sap.com/saphelp_nw73/helpdata/en/a8/5927ff58cf46a981fb57c6ad2b9b7a/frameset.htm

 

図1には、FastRFCと JCoベースの連携がAS Java と AS ABAP を繋ぐものとして示されていますが、これらもアプリケーション層での連携に分類されるものだと言えます。

■ プレゼンテーション層でのデータ連携

SAPシステムのプレゼンテーションと言えばSAPGUIを指すことが多いのですが、ユーザインタフェースを提供するものと考えれば、ウェブブラウザとSAPGUIの二系統のプレゼンテーションが提供されています。図1では、左の Client(Web Browser)と、上の Client(SAP GUI)として示されています。

ウェブブラウザであれば、基本的にはブラウザという一つのシステムに様々なものを盛りつけるという方向性が色濃いものです。プレゼンテーション層での連携ではありませんがマッシュアップ技法を含め、クラシックなデータ連携とはいささか趣が異なります。そこで、今回のコラムではこれを除外し、SAPGUIが関連するデータ連携について説明します。

プレゼンテーション層でのデータ連携の相手は、おおむねSAPGUIの機能拡張コンポーネントです。これらは、SAPGUIのインストール時に採否の指定ができます。アプリケーション層でのデータ連携の相手はSAPシステムから独立したアプリケーションシステムであるのとは対照的に、プレゼンテーション層の場合には、SAPGUIの機能拡張とのデータ連携が主であると言えます。
SAP社製品以外との連携としては、Microsoft Windows環境であればSAPGUIの機能拡張の他にも、OLE2を使ったMicrosoft 社の製品とデータ連携が可能です。この場合、SAPGUI内部に組み込まれた OLE Library を中継して、Microsoft Excel などOLE サーバーとして動くプログラムとの連携を行うことができます。(図2)

 

column02_1_2

 

図2 Architecture of ABAP as OLE2 Automation Controller
出所:
http://help.sap.com/saphelp_46c/helpdata/en/db/9987b6c3cf11d194ad00a0c94260a5/frameset.htm
補記
NW7.3 の help.sap.com 文書の対応箇所は以下のURL。
http://help.sap.com/saphelp_nw73/helpdata/en/59/ae3c98488f11d189490000e829fbbd/frameset.htm
SAP R/3 4.6資料図のほうが詳細なため、上記文書で引用

このコラムの読者であれば、テーブルブラウザ(T-Cd SE16 )出力結果パソコンへのファイルのダウンロードや、ABAPソースコードのローカルファイルをアップロードする機能を御利用になったこともあろうかと思います。『データ連携』という意識はあまり強く持たないでしょうが、これらも、プレゼンテーション層でのデータ連携の一形態であると言えます。

■ 今回のまとめ

・技術的には、SAPシステムとの連携はSAPシステムの三層のどこでも可能である。
・データベース層での連携は非推奨で、事実上不許可扱いである。
・アプリケーション層での連携ではプロセス間通信とファイル渡しによる連携が可能である。
・アプリケーション層での連携手法をプロセス間通信とするかファイル渡しとするかは製品機能ごとに決定されている。
・プレゼンテーション層の連携は、SAPGUIとその機能拡張との連携用に利用されることが殆どである。

お問い合わせ

  • Webで簡単お問い合わせ

    製品、導入事例、関連セミナーなど
    お気軽にお問い合わせください。

  • SAPアダプタ ショールーム

    製品デモンストレーションを
    見てみませんか?

  • 資料ダウンロード

    製品別のパンフレットや導入事例の資料をダウンロードできます。

  • エンジニアコラム
  • 特別コラム
  • サイト内用語解説