CData SAP ドライバー徹底解説:SAP RFC モジュールを作成し、CData Driver for SAP からアクセスする方法



CData SAP ERP ドライバーの内部を詳しく見ていくと、ドライバーの処理が汎用モジュールと RFC(Remote Function Call)を通じて実行されていることがわかります。テーブル一覧の取得やテーブルデータの呼び出しも、専用の汎用モジュールと RFC を介して行われています。

また、CData SAP ERP ドライバーでは、すべての SAP テーブルを読み取り専用のビューとして提供しています。そのため、SAP テーブルに対する操作は汎用モジュールを通じて行う必要があります。これは、SAP ERP の画面(Dynpro)がそれぞれのモジュールを通じて処理を行う仕組みと同様です。

この記事では、CData SAP ERP ドライバーの中核となる汎用モジュールと RFC の呼び出し方法をご紹介します。

注:この記事では CData SAP ERP JDBC Driver を使用していますが、同じ方法は他の CData SAP ERP 接続ソリューションでも適用できます。

汎用モジュールと RFC の実行

まずは、CData SAP ERP ドライバーを通じて汎用モジュールと RFC を実行する方法をご紹介します。

ドキュメントに記載されているとおり、CData SAP ERP ドライバーでは汎用モジュールをストアドプロシージャとして直接実行できます。CData SAP ERP JDBC Driver ドキュメント

CData JDBC Driver を通じて確認すると、ストアドプロシージャとして一覧表示されているのがわかります。

たとえば、汎用モジュール「RFC_READ_TABLE」を実行するには、以下のように記述します。

EXEC RFC_READ_TABLE OPTIONS='{ \"TEXT\": \"TABNAME LIKE ''MARA%''\" }', QUERY_TABLE='DD02L', ROWCOUNT='1', ReturnTables='DATA';

この場合、「Import」がパラメータとなり、「Export」が結果セットとして確認できます。

この汎用モジュールを実行する際の重要なポイントは、「RFC」(Remote Function Call)として定義されているかどうかです。「RFC_READ_TABLE」は Remote-Enabled Module として定義されているため、CData SAP ERP ドライバーを通じて外部から呼び出すことができます。

カスタム汎用モジュールと RFC の作成と呼び出し

それでは、カスタム汎用モジュールと RFC を作成し、CData ドライバーから呼び出してみましょう。

作成する汎用モジュールは「Z_HELLO_MODULE_1」です。これは、入力値に基づいて「HELLO:{INPUT}」のような文字列を返す、シンプルなエコータイプの汎用モジュールです。たとえば、import パラメータ「INPUT」に「KAZUYA」という値を渡すと、export パラメータ「OUTPUT」に「HELLO:KAZUYA」が返されます。

それでは、新しい汎用モジュールを作成していきましょう。

ショートカットキー「SE37」で Function Builder に移動し、Function Module に「Z_HELLO_MODULE_1」と入力して「Create」をクリックします。

事前に作成した「Z_FUNCTION_GROUP」を Function Group として指定し、適切な Short Text を入力して「Save」をクリックします。

汎用モジュールの開発画面で、import パラメータと export パラメータを定義します。ここでは、INPUT と OUTPUT という名前の CHAR100 パラメータを作成しました。

RFC として利用する場合は、必ず「Pass Value」として定義してください。

次に、Source Code タブで ABAP コードを記述します。

FUNCTION Z_HELLO_MODULE_1.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(INPUT) TYPE  CHAR100 DEFAULT 'TEST'
*"  EXPORTING
*"     VALUE(OUTPUT) TYPE  CHAR100
*"----------------------------------------------------------------------

DATA: VALUE TYPE string.
VALUE = 'HELLO:'.

CONCATENATE VALUE INPUT INTO OUTPUT.

ENDFUNCTION.

「Attributes」タブで「Remote-Enabled Module」にチェックを入れてこの汎用モジュールを RFC として有効化し、保存してからアクティベートします。

アクティベート後、CData SAP ERP ドライバーで接続すると、追加した汎用モジュールが表示されます。

SQL コマンド「EXEC Z_HELLO_MODULE_1 INPUT = 'KAZUYA';」を実行すると、以下のような結果が得られます。

対象の汎用モジュールが表示されない場合のトラブルシューティング

使用したい汎用モジュールが表示されない場合は、ヘルプドキュメントの Stored Procedure Filter 接続プロパティを確認してください。Stored Procedure Filter プロパティ

汎用モジュールの数が多いため、デフォルトでは BAPI 汎用モジュールのみが表示されます。

以下の接続プロパティを追加することで、すべての汎用モジュールと RFC を確認できます:StoredProcedureFilter="*"

まとめ

ご紹介したとおり、CData SAP ERP ドライバーは汎用モジュールと RFC を効果的に活用する構造になっており、この機能を最大限に活かして SAP ERP 連携を実現できます。CData SAP ERP ドライバーの詳細や無料トライアルのダウンロードについては、CData SAP ERP ドライバーのページをご覧ください。