SAP S/4HANAとSAP Data Warehouse Cloudのデータ連携

本ブログでは、SAP S/4HANA(以下、「S/4」) とSAP Data Warehouse Cloud (以下、「DWC」) とのデータ連携の設定について解説します。

S/4とDWCの連携のシステム構成図は下記の通りです。

S/4では、仮想データモデルである、ABAP CDS Viewを使ってアプリケーション開発したり、データアクセスすることが推奨されています(参考Blog)。

同様にS/4とDWCが連携する際にも、このCDS Viewを元にデータ連携し、モデリングすることを推奨しています。

とは言え、(私のような) S/4の知識がない人にとっては、いきなり、S/4のCDS Viewを使ってデータ連携 / データ活用しろ、と言われても難しいので、出来る限り、S/4の識者の方の支援を得るのが望ましいでしょう。

ちなみに私はS/4識者の方々に頼りっぱなしです。SAP社員の嬉しいところは、社内のS/4識者に無償で相談して、快く(多分) 教えてもらえるところです。いつか恩返しできたらいいなと強く思っています。

全体の流れは下記の通りです。

1. ソースシステム(S/4)側の事前準備/設定
2. DP Agentのインストール
3. DP Agentの設定
(1) IP許可リストの設定
(2) DWCでのDP Agentの設定
(3) DP Agent から DWC への接続設定
(4) DWC でのDP Agent の追加設定(ABAP Adapterの登録)
4. 接続(リモートソース)の作成
5. 仮想テーブルの作成
(1) ビュー作成と共に仮想テーブルを作成
(2) 仮想テーブルとレプリカの切り替え

設定にあたっては、下記の情報も参考にしてください。

データプロビジョニングエージェント接続の準備

※ 図が小さくて確認し辛い時は、図をクリックして拡大表示してください。

1. ソースシステム(S/4)側の事前準備/設定

まず初めにソースシステム側の事前準備設定を行います。繰り返しになりますが、特にS/4側の設定などはS/4に詳しい方の支援を得ると良いかと思います。いや、このパートは絶対に必要だと思います。

具体的には下記のマニュアルの「リモートテーブル」の関連情報を参照していただきますが、1つ目の要注意ポイントとなるのは「ABAP RFC Streaming」の設定になります。この設定は必須と考えて良いでしょう。この設定をしないとS/4側のシステムでメモリ枯渇のエラーが発生する可能性が高くなります。

SAP Data Warehouse Cloud でのデータの統合とスペースの管理 – SAP S/4HANA On-Premise

SAP S/4HANA オンプレミスへの接続を準備

SDI – Installation and Configuration Guide – SAP ABAP

また、CDS Viewを外部公開するにあたって、S/4側での権限設定も必要になります。上記のマニュアルを辿ると設定項目が確認できますが、特にこちらの設定情報は要注意です。下記の例では全CDS Viewを検索可能にしていますが、こちらもS/4に詳しい方の支援を得て適切に設定してください。

2. DP Agentのインストール

DWCのライセンスをお持ちのお客様は、SAPのサポートポータルから、トライアル環境で試してみたい方は、SAP Development ToolsのダウンロードサイトからDP Agentのソフトウェアをダウンロードしてください。どちらも無償で利用可能です。

※ 正確に言うと、DP AgentのライセンスはDWCを購入しているお客様であれば追加費用は発生しませんので、沢山のサーバーにインストールしても大丈夫です。

ダウンロードしたファイルを任意のフォルダ(ディレクトリ)に展開(解凍)し、展開先のフォルダの直下のhdbsetup.exeを選択し、管理者として実行してインストールを開始します。

最初にインストール先のフォルダを指定しますが、デフォルトのままでも良いですし、1台のサーバーに複数のDP Agent をインストールすることが可能なので、フォルダに枝番を付加しても良いでしょう。今回の例では「C:\user\sap\dataprovagent01」としています。

次にエージェント名をつけますが、これはシステム内で名前が重ならないようにしてください。「ホスト名+枝番」のような命名が良いかと思います。

DP AgentをインストールするOSのユーザ/パスワードを指定しますが、Windows環境の場合は、OSユーザー名は Domain\User を入力します。Domainに参加していない場合は、Hostname\User を入力します。あとは、ウィザードのガイド通りに進んでインストールは完了です。

3.1. DP Agentの設定 – IP許可リストの設定

DP Agent の設定を行う前にDWCにDP Agent がアクセスできるように、DWCでIPアドレスの許可リストを設定します。

メニューの「システム」 > 「設定」を選択し、上のメニューから「IP許可リスト」 > 「信頼されたIP」を選択します。

「追加」のボタンをクリックし、DWCにアクセスするDP Agent のIPアドレスを指定します。Proxyを使ってアクセスする場合は、ProxyのIPアドレスも追記する必要があります

IPアドレスの指定の仕方については、こちらのマニュアルも参考にしてください。設定が終わったら「保存」ボタンをクリックしてください。

3.2. DP Agentの設定 – DWCでのDP Agentの設定

メニューの「システム」 > 「設定」を選択し、上のメニューから「データ統合」を選択し、「プラスマークのタイル」をクリックします。

まず、DP Agent 名を指定しますが、DP Agentのインストールの時に指定したエージェント名と同じ名前にすると管理がラクチンかと思います。

次の画面ではDWCの内部のSAP HANA Cloud データベースのホスト名やポート番号、そしてエージェントのメッセージング用のHANA Cloudのユーザとパスワードが表示されますので、これらの情報をコピーしておいてください

※ Screenshotだけでは後で入力間違いをする可能性があるので、コピーがお薦めです。

一旦、「閉じる」ボタンをクリックして、この画面を閉じますが、この「接続」自体は作成されます。

3.3. DP Agentの設定 – DP Agent から DWC への接続設定

DP AgentからDWCへの接続設定を行います。

管理者権限でコマンドプロンプトを起動します。Windowsの場合は左下のウインドウズメニューボタンをクリックした後、「cmd」と入力し、コマンドプロンプトを「管理者として実行」してください。

下記のコマンドを実行して、接続設定を行います。

ここでの注意ポイントは、先ほどDWCの画面で表示された情報を正確に入力することです。

特にホスト名やパスワードに関しては、複雑な文字列なのでコピーした文字列を正確にペーストしてください。画面上にはペーストしたパスワードは表示されません。自分の指先のクリックの感覚を信じて慎重に作業を進めてください。設定が終わったら、DP Agentを再起動します

※ 注意: DP Agentのバージョンによって選択するメニュー番号が違う場合があります。選択する項目を確認して、該当するメニュー番号を指定してください。

※ 詳細はこちらのマニュアルもご確認ください。

C:\WINDOWS\system32>set DPA_INSTANCE=C:\usr\sap\dataprovagent01 C:\Windows\system32>cd C:\usr\sap\dataprovagent01\bin C:\usr\sap\dataprovagent01\bin>agentcli.bat -configAgent
Configuring the Agent at the following location:
C:\usr\sap\dataprovagent01 Initializing DPAgent Configuration Tool ************************************************************ DPAgent Configuration Tool
************************************************************ :
7. SAP HANA Connection :
************************************************************
Enter Option:7
************************************************************ SAP HANA Connection
************************************************************
1. Connect to SAP HANA Cloud via JDBC
2. Connect to SAP Data Warehouse Cloud via JDBC :
************************************************************
Enter Option:2
************************************************************ Connect to SAP Data Warehouse Cloud via JDBC
************************************************************
Press "Enter" button to keep default or skip an optional setting.
If a setting cannot be skipped, that means it is required.
************************************************************
Enter Agent Name:
SAPJPN011
Enter Use encrypted JDBC connection[true]: Valid options: true|false
true
Enter Host Name:
23b3fd16-b480-XXXXXXXXXX.XXX.XXXX.hanacloud.ondemand.com
Enter Port Number:
443
Enter Use Proxy Server[false]: Valid options: true|false
false
Enter HANA User Name for Agent Messaging:
DWC_DP_MSG_SAPJPN011
Enter HANA User Password for Agent Messaging:
<コピーしたパスワードをペーストします。画面上は表示されません>
Enter HANA User Password for Agent Messaging: (confirm)
<コピーしたパスワードをペーストします。画面上は表示されません>
Do you want to save these connection settings? Any existing settings will be overwritten.
Enter [false] if you do not want to save or [true] to save.
true
Agent connection settings for SAP Data Warehouse Cloud have been saved. Restart the agent for the changes to take effect. Press Enter to continue... ************************************************************ SAP HANA Connection
************************************************************ :
b. Back
************************************************************
Enter Option:b
Initializing DPAgent Configuration Tool ************************************************************ DPAgent Configuration Tool
************************************************************ :
2. Start or Stop Agent :
************************************************************
Enter Option:2
************************************************************ Start or Stop Agent
************************************************************
1. Start Agent Using Service
2. Stop Agent Using Service :
************************************************************
Enter Option:2
Stopping agent service. Command: sc stop SAP_HANA_SDI_Agent_Service_Daemon_SAPJPN011
Stop Service return code: 0
Agent was shutdown gracefully Press Enter to continue... ************************************************************ Start or Stop Agent
************************************************************
1. Start Agent Using Service
2. Stop Agent Using Service :
************************************************************
Enter Option:1
Agent service daemon location: C:\usr\sap\dataprovagent01\bin\DPAgentServiceDaemon.exe
Starting agent service. Command: sc start SAP_HANA_SDI_Agent_Service_Daemon_SAPJPN011
Start Service return code: 0 Press Enter to continue... ************************************************************ Start or Stop Agent
************************************************************ :
3. Ping Agent :
************************************************************
Enter Option:3
Ping successful Press Enter to continue... ************************************************************ Start or Stop Agent
************************************************************ :
q. Quit
b. Back
************************************************************
Enter Option:q
0

注意 : 初回にDP Agent をStopしたり、Start すると下記のメッセージが表示されることがありますが、DP Agent 自体が起動していれば無視して結構です。

DP Agentが起動しているかどうかは、上記の画面の通り、「Ping Agent」 で確認します。

SAP Note:2945498 を参照
-----------------------
2022-08-25 23:27:19,607 [ERROR] DPFramework | Message.write [] - Exception while writing to output stream: Connection reset by peer: socket write error (local port 53916 to address 127.0.0.1, remote port 5051 to address 127.0.0.1)

3.4. DP Agentの設定 – DWC でのDP Agent の追加設定

DP AgentがDWCに接続しているかステータスを確認します。

ステータスが「Connected」になったことを確認したら、「・・・」 > 「編集」を選択し、ABAP AdapterHANA Adapterをチェックします。

これでDP Agentの設定は完了です。

※ S/4とDWCのデータ連携は、ABAP Adapterを利用することを前提にしていますが、ケースによっては、直接、S/4アンダーのSAP HANAデータベースにアクセスすることもありますので、ここではHANA Adapterにもチェックを入れています。

4. 接続(リモートソース)の作成

S/4に対しての「接続」を作成します。まずメニューから「接続」を選択し、「作成」ボタンをクリックします。

表示された画面の検索ボックスに「S/4」を入力すると関連したタイルが表示されますが、ここでは「SAP S/4HANA On-Premise 」を選択します。

S/4を自社のオンプレミス環境で運用されている方、AWS、Azure、GCPなどのクラウドIaaS上にインストールして利用されいる方、または、SAP社のマネージドクラウドとして、プライベートクラウド環境でS/4のサービスを利用されている方もこちらを選択します(もし、迷うことがあれば、担当営業までご連絡ください)。

続いて、S/4に対しての接続情報を指定します。

S/4のアプリケーションサーバのホスト名、システム番号(インスタンス番号)、クライアント(クライアント番号)、システムID等を入力し、S/4に接続するためのユーザ名とパスワードも入力します。

画面下部では、先ほど設定したDP Agentを指定し、「ストリーミング読み込み」を「オン」にします。事前に設定したABAP RFC Streaming の設定情報に基づいて入力しますが、「ゲートウェイポート(ゲートウェイサーバー)」には、「sapgw」とシステム番号(インスタンス番号)を組み合わせた文字列(例ではsapgw00)を入力してください。

次の拡張プロパティでは、各パラメータ値はデフォルト値のまま、次のステップに進み(詳細は下記のマニュアルを参照)、最後にこの接続に対して命名します(ビジネス名と技術名) 。

SDI – Installation and Configuration Guide – SAP ABAP

5.1. 仮想テーブルの作成 – ビュー作成と共に仮想テーブルを作成

いよいよ仮想テーブルを作成します。今回はビューの作成とともに仮想テーブルを作成する手順を紹介します。

メニューの「データビルダ」を選択し、新しいグラフィックビューを作成します。

左メニューの「ソース」を選択し、先ほど作成したS/4に対しての「接続」を展開し、「Extractors」 > 「ABAP_CDS」の順にフォルダを展開していきます。

S/4では、猛烈な数の標準CDS Viewが提供されていますが、「どのデータを見たい時は、どのCDS Viewを見るのか」については、S/4の知見のある方に支援を求めてください

S/4に関するスキル習得のために、時間とお金と情熱を掛けて、努力と経験を積んだ、選ばれし方々のみが辿り着ける頂(いただき)なので、ニワカ知識でアクセスするとケガをするかもしれません。

私はニワカ知識で、取り急ぎ、社内のS/4のデモ環境で、たまたまデータが入っていた購買関連のCDS Viewにアクセスしていますが、皆さんは目的に沿って、該当するCDS ViewをS/4識者の支援を得て確認、選定してください。

今回は購買発注明細関連のCDS Viewを元にモデリングします。対象のCDS Viewをドラック&ドロップで右側のキャンパスに持って行きますが、このタイミングで仮想テーブルが作成されます。

仮想テーブルのビジネス名と技術名をここで指定してください。技術名にはわかりやすく、接頭語に「VT_」(Virtual Tableの意)を付けてもいいでしょう。

「インポートおよびデプロイ」ボタンをクリックして、CDS Viewの定義情報を元に仮想テーブルを作成します。

この仮想テーブルを元にビューのモデリングを進めていきますが、この仮想テーブルを経由してリモートのS/4のデータを可視化する際は、「データのプレビュー」ボタンをクリックしてください。

他のCDS Viewも先ほどの仮想テーブル上にドラッグ & ドロップしてモデリングを進めつつ、仮想テーブルを同様の手順で作成します。

そして、ビューに対してビジネス名、技術名、そしてセマンティック用途として「分析データセット」を選択し、数値項目をメジャーと定義します。

その後、「保存」、「デプロイ」ボタンを順番にクリックして、ビューを有効化します。

デプロイが完了したら、画面上部のビュー名の横にある「閉じる」マークをクリックしてください。

※ データの可視化(ダッシュボード/レポート作成)はSAP Analytics Cloud にて、作成したビューを指定して行いますが、今回はその手順は割愛します。

5.2 仮想テーブルの作成 – 仮想テーブルとレプリカの切り替え

続いて、この仮想テーブルをDWCにレプリケーションしたり、スナップショットに切り替える操作を紹介します。

メニューから「データ統合モニタ」を選択し、対象の仮想テーブルを選択した後、右上のメニューから「テーブルの複製」 > 「リアルタイムアクセスを有効化」 を選択します。右上のリフレッシュボタンを押すとレプリケーションの設定状況がアップデートされます。

もう一つの仮想テーブルを同様に「リアルタイムアクセスを有効化」するとリアルタイムレプリケーションをサポートしていない旨のメッセージが出ます。これは仮想テーブルの元となる、CDS Viewがデルタ(更新差分)管理されていないためです。

そのような仮想テーブルで、かつ、リモートアクセス(透過アクセス)では、レポートの性能要件を満たせない場合は、「スナップショット」を選択します。同様の手順で、メニューから「新規スナップショットをロード」を選択し、スナップショットを作成します。

スナップショットは文字通り、「ある一時点のデータをコピーしたもの」なので、定期的にリフレッシュする必要があります。

その定期リフレッシュをスケジューリングする方法について解説します。

対象の仮想テーブルの右端の「矢印マーク」をクリックし、次の画面で「。。。」メニューから「スケジュールを作成」を選択します。設定例は、1時間毎にリフレッシュをするケースになります。

開始時刻の指定はUTC (世界標準時間)でセットしますが、右側の「現地時間」を選択すると日本での実行時間が表示されますので、参考にしてください。

データ連携可能なCDS Viewについて

CDS Viewにも沢山の種類がありますが、DWCとデータ連携できるCDS Viewは「データ抽出(Extraction)可能なCDS View」に限られます。

S/4に疎い私ですが、その検索方法だけはわかるので(教えてもらったので)、簡単にガイドします。

下記の通り、S/4のビューブラウザを利用して、「代替検索」でアノテーションが「ANALYTICS.DATAEXTRACTION」が「true」を条件に検索してください。

そのリストをExcelに出力することもできるので、まずはそのリストでアタリを付けるのも良いと思います。

※ さらに詳しい、実践的な検索の方法については、SAPのコンサルタントにBlogの記事執筆をお願いしているところなので、もう少々、お待ちください。

参考情報

CDS Viewがリアルタイムレプリケーション可能かどうか、CDS Viewのデルタ(更新差分)管理や仮想データアクセスに関する注意点など、さらに奥深い情報は下記になりますので、是非、参考にしてください。

Finding the right CDS Extractor in SAP S/4HANA

CDS based data extraction – Part II Delta Handling

Why SDI ABAP for virtual access in SAP Data Warehouse Cloud should be avoided