
こんにちは。CData Software Japan の杉本です。
本記事では、SAP S/4 HANA と他システムとの連携を想定して、CData Arc とCData SAP ERP Drivers を使ってノーコードでSAP S/4 HANA とSQL Server を双方向にデータ連携する方法をご紹介します。
この記事では「SAP S/4 HANA のデータをSQL Server に」と「SQL Server のデータをSAP S/4 HANA に」連携するシナリオをそれぞれ作成します。
CData Drivers を利用したSAP ERP(S/4 HANAなど)への接続について
CData Drivers(CDataコネクタ)の中にはSAP ERP(S/4 HANAなど)へ接続可能な製品がいくつか存在します。各Driver で利用している接続方法や機能比較については以下の表でまとめられています。今回はCData Arc で表に記載のあるSAP ERP Driver を利用する方法について解説したいと思います。
SAP 連携徹底解説! CData Sync を利用した SAP ERP から DWH への連携ポイント - Speaker Deck

CData SAP ERP Drivers について
CData SAP ERP Drivers はRFC/BAPI やSOAP を通じて、SAP S/4 HANA のデータへアクセスし、データの参照や更新を行うことができます。
CDataコネクタについて
CData Arc からSAP S/4 HANA への接続にはCData コネクタを利用する必要がございます。CDataコネクタの利用方法は以下のブログ記事をご参照ください。事前にこちらを参考に、CData SAP ERP Drivers をインストールしておきます。
CData ArcでCData Driversを使う方法
CData Arc (クロスプラットフォーム版)の場合
CData JDBC Driver for SAP ERP ではRFC 接続のためSAP から提供されているJCo のライブラリを利用する必要があります。
上記のライブラリをインストールディレクトリ内のパスに格納します。デフォルトでは「C:\Program Files\CData\CData Arc\lib」のパスとなります。
CData Arc (.NET 版)の場合
CData ADO.NET Provider for SAP ERP ではJCo を利用した接続は利用出来ないため、代わりにNetWeaver RFC SDK を利用して接続します。
sapnwrfc.dll
icudt34.dll
icuin34.dll
icuuc34.dll
libicudecnumber.dll
libsapucum.dll
上記のライブラリをインストールディレクトリ内のパスに格納します。デフォルトでは「C:\Program Files\CData\CData Arc\www\bin\x64」と「C:\Program Files\CData\CData Arc\www\bin\x86」のパスとなります。
Z_CUSTOM_READ_TABLE
CData SAP ERP Drivers はデータの取得に、「RFC_READ_TABLE」の汎用モジュールを利用してデータを取得しているのですが、「RFC_READ_TABLE」には取得出来るレコードあたりのバイト数制限があり、エラーの発生する場合があります。
エラーを回避するために「Z_CUSTOM_READ_TABLE」というカスタムモジュールを追加する必要があります。設定方法の詳細は以下のブログ記事がご参考頂けるかと思います。
SAP カスタム Read Table を使って Table をクエリした際のエラーを回避する方法:CData SAP ERP Driver
SQL Serverの準備
今回はビジネスパートナーのBUT000 テーブルを対象としたいと思いますので、SQL Server 側には事前に同じ構成のテーブルを用意しました。

連携フローの作成(SAP S/4 HANA → SQL Server)
CDataコネクタ(SAP ERP)
ワークスペースの右上にある「追加」ボタンから「CData コネクタ」を検索して追加します。

今回は起点のコネクタとなるため「Select アクション」を選択して、コネクタを作成します。

追加された「CData コネクタ」を開き、ドライバーのリストからSAPERP を選択します。

今回はCData Arc(.NET版)を利用しているため、NetWeaver RFC SDK を利用して接続したいと思いますので、接続に必要な内容を入力します。
プロパティ | 説明 |
User | SAP システムに認証しているユーザー |
Password | SAP システムへの認証に使われるパスワード |
Client | AP システムに認証しているクライアント |
Connection Type | NetWeaver |
Host | ホスト名 |
また高度な設定にあるRead Table Function でZ_CUSTOM_READ_TABLE を指定します。

接続に必要な設定を入力後は以下の「接続テスト」を押下して、正常に接続が行えることを確認します。

その後はテーブルの追加より、対象のテーブルを選択します。

選択したテーブルのカラム情報が表示されることが確認出来たら、右上の保存ボタンを押して、「CData コネクタ」を閉じてください。

SQL Server コネクタ
ワークスペースの右上にある「追加」ボタンから「SQLServer コネクタ」を検索して追加します。

今回は連携先のコネクタとなるため「Upsert アクション」を選択して、コネクタを作成します。

追加された「SQL Server コネクタ」を開き、接続を作成します。接続設定についてはヘルプをご参照ください。
CData Arc - SQL Server Connector Setup | Version 25.2.9330

接続設定を追加後はテーブルの追加より、連携先のBUT000 テーブルを選択します。


XMLMap コネクタ
「CData コネクタ」と「SQL Server コネクタ」の設定が完了したら、次は「XMLMap コネクタ」を構成します。「XMLMap コネクタ」をワークスペースに追加して、以下のように「CData コネクタ」と「SQL Server コネクタ」に接続します。

「XMLMap コネクタ」を開いて、連携する項目を以下のようにマッピングします。

連携フローの実行
トリガー開始の「手動で受信」からフローを実行します。

フロー実行後にSQL Server 側のデータを確認すると、SAP S/4 HANA でアクセス出来るBUT000 テーブルの内容が連携されていることを確認出来ます。

連携フローの作成(SQL Server → SAP S/4 HANA)
今回はSAP S/4 HANA からSQLServer に連携したデータを更新して、その内容をSAP S/4 HANA に連携するフローを作成します。ただしCData SAP ERP Drivers を通じてデータの登録や更新を行う場合は、BAPI などの汎用モジュールを通じて行う必要があります。そしてBAPI などの汎用モジュールはストアドプロシージャとして実行することが出来ます。BUT000 を更新するために、今回はBAPI_BUPA_CENTRAL_CHANGE のBAPI を通じて、データの更新を行います。また汎用モジュールのパラメータにはテンポラリテーブルや、JSON または XMLでの指定が可能です。今回はJSON 形式で指定したいと思います。
CData ADO.NET Provider for SAP ERP - プロバイダースキーマ
まずはSQLServer に連携したデータから「NAME_FIRST」と「NAME_LAST」 のカラムを更新します。更新前のデータは以下の通りです。

「NAME_FIRST」 と「NAME_LAST」 のカラムを更新します。


そして今度はこのデータをSAP S/4 HANA に書き戻すフローを作成します。
SQL Server コネクタ
「Select アクション」の「SQLServer コネクタ」を追加します。

そしてBUT000 テーブルを選択します。不要な項目が多いため、後続のXMLMap でマッピングがしやすいように「PARTNER」、「NAME_FIRST」、「NAME_LAST」以外のカラムのチェックを外します。また更新したデータのみを取得したいので、フィルタ条件で該当の「PARTNER」を指定します。

CData コネクタ(SAP ERP)
そして「Execute Stored Procedure アクション」の「CData コネクタ」を追加して、BAPI_BUPA_CENTRAL_CHANGE プロシージャを選択します。

XMLMap コネクタ
「XMLMap コネクタ」をワークスペースに追加して、「SQL Server コネクタ」と「CData コネクタ」に接続します。

「XMLMap コネクタ」を開いて、キー項目である「PARTNER」と「BUSINESSPARTNER」をマッピングします。

そして残りのパラメータについてはJSON で指定する必要があるため、宛先の「CENTRALDATAPERSON」に対して、以下のようなJSON を入力します。
{"FIRSTNAME": "[xpath("BUT000/NAME_FIRST")]", "LASTNAME": "[xpath("BUT000/NAME_LAST")]"}

また更新したデータを反映するため、宛先の「CENTRALDATAPERSON_X」にも、以下のようなJSON を入力します。
{"FIRSTNAME": "X", "LASTNAME": "X"}

連携フローの実行
トリガー開始の「手動で受信」からフローを実行します。フロー実行後にCData コネクタのSelect アクションで確認すると対象のデータが更新されていることが確認出来ます。


おわりに
今回はCData Arc でCData SAP ERP Drivers を通じてSAP S/4 HANA と双方向にデータを連携する方法について解説しました。CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで270を超えるアプリケーションへの連携を実現できます。
皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
CData Arc | データ連携、EAI、マネージドファイル転送(MFT)、電子データ交換(EDI)のオールインワンツール
この記事ではCData Arc™ 2025 - 25.2.9330.0を利用しています。