こんにちは。CData Software Japan リードエンジニアの杉本です。
前回の記事ではSAP Gateway Service Builder を使ってOData サービスを実装する方法を紹介しました。
https://www.cdata.com/jp/blog/saps4hana-odata-gateway
ただ、このアプローチは都度内部実装をABAP で進める必要があるので、ちょっと敷居が高いかなーと思います。
そこで今回はもうちょっと手軽にOData サービスを公開する方法として、CDS ビューを利用した方法を紹介したいと思います。
https://help.sap.com/docs/SAP_S4HANA_CLOUD/c0c54048d35849128be8e872df5bea6d/8573b810511948c8a99c0672abc159aa.html?locale=ja-JP
CDS とは簡単に言えば、SAP S/4 HANA 内部で定義できるSQLのビューのような存在です。
このCDS ビューにはOData サービスとして公開するための機能が標準で備わっているので、前回の記事で行ったようなABAPの実装などは必要無く、OData サービスの公開が可能のようです。
CDS ビューについては以下の記事でも詳しく書かれていたので参考にさせていただきました。
https://qiita.com/Yanagawa_Yoshihisa/items/d1b601a9f37101b4fde0
作成するOData サービス
今回作成するOData サービスは以下のようにBank データを一覧で取得するものです。
ベースとなる以下のようなCDS ビューを定義して、OData サービスとして公開します。
SAP Business Client で Fiori を起動
それではまずCDS ビューを作成していきましょう。
CDS ビューはいくつかのアプローチで作成が可能みたいですが、今回はFiori UI を使って公開してみます。
SAP Business Client で Fiori を起動
任意のユーザーでログインします。
検索画面から「Custom CDS Views」に移動して、作業を進めましょう。
Custom CDS View を作成する
Custom CDS Views の画面に移動したら「Create」をクリックして、CDS ビューの作成を進めます。
任意のLabel・Name を指定し、シナリオとしては最終的にOData サービスとして公開するために「External API」を選択します。
次にPrimary Data Source を指定します。今回は「I_Bank」を選択しました。
あとはダイアログに従って、設定を追加していきますが、今回はまずデフォルトでそのまま公開していきます。
Elements のタブでは公開する項目などを編集できます。必要に応じて追加しましょう。
設定が完了したら「Publish」ボタンをクリックします。
公開完了後、Preview をクリックすることで、実際にCDS ビューで参照できるデータが確認できます。
OData サービスとして公開する
それでは作成したCDS ビューをOData サービスとして公開しましょう。Fiori UIでは「/IWFND/MAINT_SERVICE」が呼び出せなかったので、通常のSAP Easy Access のUI で作業を進めます。
「/IWFND/MAINT_SERVICE」に移動し
「Add Service」をクリックします。
任意のSystem Alias を選択し、「Get Services」をクリックすると、先程作成したCDS ビューの名前が表示されます。
これを選択し、サービスとして追加しましょう。サービス登録のプロパティはデフォルトのままで進めます。
これだけでOData サービスとして公開が完了します。前回のBlog 記事にくらべてとても手軽ですね。
あとはSAP Gateway Client でAPI が実際にコールできるか確認してみましょう。「ZZ1_CDATA_TEST_CDS」というサービスに「ZZ1_CDATA_TEST」というリソースが確認できます。
「ZZ1_CDATA_TEST_CDS/ZZ1_CDATA_TEST」でリクエストを実行してみると、無事BankCountry やBankName などのデータが取得できました!
CData Driver から接続してみる
それでは前回と同様に作成したOData サービスへCData SAP Netwaver Gateway Driver から接続してみましょう。
今回も同じくODBC Driver を利用して接続してみますが、利用するコネクタはJDBCでもADO.NET でもCData Sync でも同じです。
https://www.cdata.com/jp/drivers/sapgateway/
CData SAP Netwaver Gateway Driver のODBC DSN 構成画面を起動して必要な情報を入力します。Namespaceはsap、Service には今回作成したOData サービスの「CDATA_SAMPLE_SRV」を入力します。
URLなどは前回と同様です。
データモデルのタブに移動してみると、CDSビューの情報が正常に表示されています。
データをプレビューしてみると、しっかりと一覧が表示されました。
おわりに
CDS ビューを使った方法はUI ベースで実装することができるので手軽で良いですね。ただ、おそらくデータの書き込みなどはサポートできないと思うので、CUD操作をサポートしたい場合は、SAP Gateway Service Builder を使った実装が必要かなと思います。
そのあたりはユースケースに合わせて、OData の実装アプローチを検討してみてください。
関連コンテンツ