はじめに
最近、S/4HANAのデータを外部と連携するユースケースが増え、「CDS View」に関する説明依頼や問い合わせを受けることが増えています。日本語でしっかりと全体像をまとめた記事が少なかったため、自分の頭の中を整理するために記事にしました。
「SAP Business Technology Platform (BTP)の基本的なことのまとめ」や「SAP Side by Side開発の基本的なことまとめ」に続く基本的事項の説明記事となります。
また、本記事は概要把握や個人とトライアル利用の参考として、まとめたものなので、プロジェクトでの利用の際は、SAP社への問合せの実施や正式情報であるHelp Portalを活用して下さい。
一言でいうと
S/4HANAの内部で作成するViewです。概念としてはSQLのViewに近く、HANAのインメモリ機能をフル活用する仕様となっているため、高速に動作します。S/4HANAの標準機能として事前に準備されているものと、開発ツールを用いて個別に作成するものが存在します。
CDS Viewの基本
正式には「ABAP CDS View」と呼ばれる、SAP社が開発したABAPベースのオブジェクトです。基本的には、SQLのViewの概念に近く、HANAのインメモリ機能をフル活用する仕様となっているため、高速に動作します。下記に基本的な事項を整理します。
- HANAのインメモリのメリットを享受するための仕様となっており、読み込みが非常に高速です。
- DBではなく、ABAPスタックで動作するオブジェクトです。このため、DBレイヤーでの権限付与やログインは不要であり、ABAPの開発物と同様の管理(移送など)が可能です。
- 内部的にはHANAのレイヤーにおいて、SQL Viewが生成されています。
- S/4HANAの標準機能として、多くのCDS Viewが準備されています。標準のViewはFioriのアプリケーションである「View Browser」によって閲覧できます。
- ユーザー独自のCDS Viewを作成する場合には「ABAP Development Tools (ADT) 」が必要となります。また、Fioriアプリケーションのキーユーザー拡張として提供される「Custom CDS Views」を用いて簡易な開発をすることも可能です。ADTはEclipseのプラグインとして公開されています。詳細は@tamiさんのこちらの記事が参考になります。
- ちなみにCDSは「Core Data Services」の略です。
CDS Viewで実現したいこと
「CSD View」にて実現したい最も重要なことは、「OLTP(Online Transaction Processing)とOLAP(Online Analytical Processing)の統合」です。これは、リリース時から提唱されているS/4HANAの大きな目的の1つでもあります。
従来、ERPはOLTP(Online Transaction Processing)を実現するための仕組みでした。そのデータを閲覧するためには、ETLツールなどを用いてデータ加工等を実施し、別のデータベースによりOLAP(Online Analytical Processing)を実施するのが一般的でした。分析に対してタイムラグが発生してしまうというデメリットを抱えていました。このようなアーキテクチャとなっているのは、DBに処理能力的な限界があったからです。そこに改善点を見いだしたSAP社は、インメモリを採用することにより、メモリ上で「CDS View」によるOLAPを実施し、リアルタイムでの業務データ分析を可能にしました。これが、「OLTP(Online Transaction Processing)とOLAP(Online Analytical Processing)の統合」です。
CDS Viewを利用するメリット
- コードプッシュダウンによる処理の高速化
- 定義したViewの内容は、HANAのインメモリ上でSQL Viewとして生成され、呼び出しに対してデータを確保し待機しています。そのため、ABAPレイヤーで1からビューを発行する場合に比べて処理が高速になります。これをビューの生成処理を下位のHANAレイヤーで実施していることから「コードプッシュダウン」と呼びます。
- Annotation利用によるロジックの組込
- 「Annotation」という技術を用いて、項目長等の一般的なDB属性以外の要素を管理することができます。これにより、アプリケーションレイヤで実施すべきロジックをDBレイヤーに寄せることが可能であり、開発工数の削減や一元化に貢献します。
- ODataサービスとしての外部公開
- CDS Viewは自動でODataサービスを生成可能です。そのため、外部サービスから一般的な通信プロトコルであるhttpベースでの情報のやり取りが可能になります。
- 定義したViewの内容は、HANAのインメモリ上でSQL Viewとして生成され、呼び出しに対してデータを確保し待機しています。そのため、ABAPレイヤーで1からビューを発行する場合に比べて処理が高速になります。これをビューの生成処理を下位のHANAレイヤーで実施していることから「コードプッシュダウン」と呼びます。
- SAP Fiori elementsなどのSAP社の技術と統合することで、閲覧するためのUIを自動生成可能
- SAP社のフロントエンド技術である「SAP Fiori elements」などは、統合を前提に作成されています。そのため、View検索画面などを自動で生成することが可能です。
CDS Viewの種類
CDS Viewにはいくつかの種類が存在します。その種類は名称の接頭につける「技術名称」と「View Type」によって区別されます。ただし、これらは厳密なシステム的制約に基づいているわけではないため、標準で定義されているViewでも区別の基準が曖昧な面もあります。
名称 | 概要 | 技術名称 | View Type |
---|---|---|---|
Consumption View | 特定のレポート要件実現のために作成された外部公開向けのビュー。基本的には再利用は想定されない。 | C_ | CONSUMPTION |
Interface View | 再利用を想定された、業務的な意味のあるまとまりのビュー。Basic ViewとComposite Viewから構成される。 | I_ | |
- Basic View | Customer や Sales Order といった重複しないコアエンティティを表すために使用するビュー。 | I_ | BASIC |
- Composite View | 複数のBasic Viewを組み合わせたView | I_ | COMPOSITE |
Extension View | 標準の VDM 内 の View に対して 拡張(例:項目追加)したい場合に作成される View | E_ | EXTENSION |
Private View | Interface View作成の為の部品となるビュー。再利用は想定されない。上記のViewとは異なり、View typeではない。技術名称として「P_」をつけて区別される。 | P_ |
上記の概念とは別のQueryの種類定義も存在しています。
Analytic Query:こちらは多次元分析前提としたCDS Viewです。一般のCDS ViewがFioriアプリなどで利用されるのに対して、こちらは閲覧用の機能「SAP Analytics Cloud SAC」、「BusinessObjects」、Fioriアプリケーションである「Fiori Multidimensional Reporting」で利用されます。(CDS Viewの設定としてはAnnotationにて@Analytic.query: true
とします。)
抽出可能なCDS View:DHW等に一括抽出を実施したい場合は、CDS Viewの設定を変更する必要があります。(CDS Viewの設定としてはAnnotationにて@Analytics.dataExtraction.enabled: true
とします)
Annotation
CDS Viewに対して様々な技術要素・定義を付加するための仕組みが「Annotation」になります。CDS Viewのデータ定義に際して、テキストベースでの定義を実施しますが、この際にルールに基づき「Annotation」を実施することにより、技術要素やデータ定義を追加することができます。
例えば「OData-Annotations」という種類のAnnotationを利用して@OData.publish: true
と定義すれば、そのCDS ViewはODataとして公開が可能になります。他にも「AccessControl Annotations」を利用して@AccessControl.authorizationCheck: #CHECK
と定義すれば、権限チェックが有効化されます。
View全体の定義だけでなく、個別の項目の定義も可能です。「Semantics-Annotations」を利用して、@Semantics.currencyCode:
として項目を列挙すれば、その項目は通貨コードとして定義されます。
ここまでのものは、単なるDBの設定定義ですが、他にも特徴的な「Annotation」として、「UI Annotation」があります。DB上でUIの定義をするという機能です。
CDS Viewは、Fiori elementsなどのFiori機能と統合させることにより、自動でUIを生成することが可能です。詳細は@tamiさんのこちらの記事が大変わかり易いのですが、Fioriのアプリケーションを作成する際にCDS Viewをしていすることにより、CDS Viewの閲覧画面がフロントエンドの画面側のデザイン無しに生成されます。どこで「Annotation」を利用するのかというと、検索条件に追加や検索結果の表示など画面側の要件を「Annotation」によりCDS View側に実装します。例えば@UI.selectionField:
として項目を指定することにより、その項目は画面上にて検索条件として上部のバーに表示されます。
もともとABAPは、フロントエンドの処理とバックエンド・DBの処理を区別せずに構築できるという特徴を持っています。その一方で、SAP社が近年推進するGUIではないFioriなどの技術はWEB系の技術要素を含んでいるため、普通に構築するとフロントエンドの処理とバックエンド・DBの処理を区別する必要があります。ここがABAPベースのSAP界隈の人にとっての障壁となると考えて、SAP社がフロントを意識せずに開発ができるような仕組みとして、「Annotation」のような技術要素を作成したと個人的には考えています。
CDS Viewの利用方法
CSD Viewは、S/4HANA内部での利用と、S/4HANA外の外部システムからの利用に大別できます。
S/4HANA内部での利用
- ABAPプログラムからの利用:ABAPのプログラムでも利用可能です。ABAPレイヤーでのView作成に比べて高速に動作することが期待できます。
- Fiori系のプログラムからの利用:前述のように、CSD ViewでUI側の定義が可能です。
- S/4HANAの閲覧系の機能を用いた利用:Fioriアプリケーションである「Query Browser」や、キーユーザ拡張機能である「Custom Analytical Queries」を使用して閲覧することができます。
S/4HANA外部での利用
- CDS Viewを「OData API」として公開することで、外部システムからもhttpベースでアクセスすることが可能です。公開は「T-code: /n/iwfnd/maint_service」で実施します。
VDM (Virtual Data Model)との関係
業務的な意味をもつデータモデルの総称が「VDM (Virtual Data Model)」です。S/4HANAなどのSAP社のビジネスアプリケーションのデータは複数のテーブルから構成されるため、1つのテーブルのデータだけでは不完全であり、データを解釈することができません。そこでSAP社として、業務的な意味のあるまとまり(受注のデータ、品目マスタのデータなど)で事前にデータとりまとめ、公開しています。S/4HANAにおいては実体としては、S/4HANAに事前準備されたCDS Viewです。
最後に
CDS Viewは、S/4HANAの拡張を実施するにあたり、非常に重要な概念です。本記事などを通じて、繰り返し理解を深めることをお勧めします。