
こんにちは。CData Software Japan マーケティング&パートナーサクセス マネージャーの杉本です。
今回は最新バージョンのCData Sync V25.2 で新しくサポートされたSAP ERP のCDC(変更データキャプチャ)の機能・使い方を紹介したいと思います!
CDC(変更データキャプチャ) とは?
CData Sync のようなデータパイプラインツールを利用してDWH にデータを取り込む際にポイントになる部分が、変更データの連携方法です。
もちろん、毎回データを洗替を行うようなアプローチも可能ですが、データソースのデータ量が肥大化している場合、連携に時間がかかってしまうため、更新されたデータのみを識別してDWH に取り込むアプローチが望ましいです。
更新データの識別方法は大きく分けて2つあります。一つは「日付や連番などに基づいて最新データを識別する方法」と「変更履歴のログデータに基づいて最新データを識別する方法」です。(イベント通知型というアプローチもありますが、ここではデータソースへ更新データを見に行く観点で進めます)
日付を用いた差分取得はアプローチとしては実装しやすいものの、データソースの種類によっては更新日を持たないデータもあり、難しいデータソースがありました。汎用的なSQL Server やOracle といったRDB などがそうですね。
しかしながら、今回のアップデートでSAP ERP の変更履歴テーブルを元に更新されたデータを識別して、連携する方法がサポートされました!
ちなみにCDC 全般に関する詳しい解説は以下の記事を参考にしてみてください。
https://jp.cdata.com/blog/db-cdc-sync
サポートするSAP ERP エディション
ちなみにSAP ERP は様々なエディションがあり、自社の環境に繋げるのかどうかわかりにくい部分があると思います。
CData SyncのSAP ERP コネクタは「BAPI およびRFC」で接続する仕様となっており、主に以下のエディションをサポートしています。
https://cdn.cdata.com/help/RYK/jp/synch/default.htm#pg_editionsandcontent
・SAP BW
・SAP ECC
・SAP ERP
・SAP R/3
・SAP S/4HANAオンプレミス Private Cloud
ちなみにイベントで「RISE With SAP は接続できますか?」という質問をよく頂くんですが、以下のドキュメントにあるようにRISE With SAP ではRFC/BAPI による接続がサポートされています。
https://learn.microsoft.com/ja-jp/azure/sap/workloads/rise-integration-network#network-communication-ports-with-sap-rise

>SAP RISE の SAP システムには、SAP によって構成され、ユーザーが使用できるように開かれたオープン ネットワーク ポートを介してアクセスできます。 https、RFC、JDBC/ODBC プロトコルは、プライベート ネットワーク アドレス範囲を通じて使用できます。
前提条件
SAP ERP コネクタを利用する際には、RFC 接続のためSAP から提供されている「JCo」のライブラリ「sapjco3.dll」「sapjco3.jar」を利用するので「C:\ProgramData\CData\sync\libs\ext(Windows 環境の場合)」のフォルダにあらかじめ入れておきましょう。

また、あらかじめ対象とするデータの変更履歴(CDHDR)も有効化しておきましょう。
今回はBank Master(BNKAテーブル)を対象にしますが、以下のように変更履歴が確認できる状態にあります。

SAP ERP のコネクションの作成
それでは実際に試していきましょう。
まず必要に応じて、CData Sync およびSAP ERP コネクタをアップデートします。

そこから接続を構成します。

ちなみにCDC 機能を利用する場合は「高度な設定」の「Table Mode」を「ChangeDataCapture」に設定する必要があります。

また、今回はSAP ERP のデータをMySQL に連携させるので、MySQL のコネクションもあらかじめ作成しておきます。

CDC ジョブの作成
SAP ERP のコネクションを作成したらCDC 用のジョブを作成します。
ジョブ作成画面でデータソースに先ほど作成した「SAP ERP」のコネクションを指定します。
すると、ジョブの種類に「変更データキャプチャ」が表示されるので、これを選択しましょう。

続いてタスクの一覧から連携対象のSAP テーブルである「BNKA」を選択します。


レプリケーションされるデータはプレビュー画面で確認できます。

この状態でジョブを実行することで、BNKA テーブルがMySQL 上に作成されデータがレプリケーションされます。

CDC 機能の動作を確認する
一旦シンプルなレプリケーションができたので、いよいよCDC 機能の動作も確認していきます。
まず、ショートカットキー「FI01」でBank Mater を作成してみましょう。
以下のような「SAMPLEBANK」というデータを作成してみました。

この状態で再度ジョブを実行すると、レプリケーション結果が1件のみ成功した表示になります。

実際にMySQL を確認してみると、新しくレコードが追加されていました!

続いて「FI02」のChange Bank でデータを変更します
対象のBank Country・Bank Keyで先程の値を入力して、「Enter」をクリック

Bank name を「SAMPLEBANK_UPDATE」という名前に変更します。

実際に変更履歴が残っているかどうかも確認しておきましょう。「Change Documents」をクリックします。

すると以下のように「SAMPLEBANK」→「SAMPLEBANK_UPDATE」に変更した履歴が残っていました。

改めて再度ジョブを実行してみます。今回も1件のみ反映されました。

MySQL 上でデータを確認してみると、正常に先程のレコードのデータが更新されていることがわかります!

おわりに
このようにCData Sync を利用することでとても手軽にSAP ERP のデータを変更履歴に基づきながら連携することが可能です。
もし試していてよくわからない点や相談したいことがあれば、以下のサポートフォームまでお気軽にお問い合わせください。
https://jp.cdata.com/support/