CDS ViewとはCoCo壱のカレーである
はじめに
お久しぶりのBlogとなります。今回はCDS Viewについて最近あらためて調べたり、考えたことを書きたいと思います。
そもそも、あらためてCDS Viewについて考えたきっかけなのですが、SACにはContent Package User Guide というオンラインヘルプがあるのですが、
「あれ?ここに書いてあるCDS Viewからデータをインポートしたいけど、できないぞ?」ということがあり、CDS Viewについて理解を深める必要性を感じたからです。
読む人によっては今更感があるかもしれませんが、CDS Viewについて理解する一助になればと思います。
また現時点での筆者の理解をまとめたものであり、事実異なる部分があるかもしれませんがご容赦ください。
(ので以下すべての文末に「、と筆者は理解しています。」と記載があると思ってください。)
What's CDS View
以下、SAP JAPAN Official Blogからの引用となります。
業務的により高度なデータモデルの定義を可能にするためSQLを拡張したものが Core Data Services (CDS)です。CDSで記述したビューのことをCDS Viewと呼びます。
ということでABAPerの皆様にはイメージが湧くと思いますが、通常データをDB層から取得しAP層で計算、編集するということが一般的と思いますが、CDSはDB層で計算、編集する(できる)ということです。
そのため、CDS Viewは複雑なデータモデルを定義することが可能になりました。
標準のFiori Applicationの多くがCDS Viewをバックエンドとしていて、CDS Viewを介することでSACなどのBIツールや3rdパーティシステムと物理なテーブルを意識せずデータをやり取りすることが可能です。(これがVDMってやつですね。)
またCDS Viewというと「S/4で新しく実装されたオブジェクトでしょ?」と思うとおもいますが実態はABAP CDSとHANA CDSが存在し、私を含め皆さんがイメージするのは前者の方です。(本Blogの記載はABAP CDSについてです。)
CDS ViewとはCoCo壱のカレーである
「はじめに」で記載した通り、あるCDS Viewについてインポートができない。(データソースとして候補にならない、候補として出てくるCDS Viewもあるので接続自体に不備がない。)
ということがありCDS Viewについてあらためて調べてみる必要があると感じました。
というわけで以前からCDS Viewについて様々なBlogを執筆してくれているAraiさんの以下のPostを参考にさせていただきました。
参考:Predefined Virtual Data Model as example for understanding difference of CDS View type
まず大前提としてCDS Viewには、以下のtypeがあります。
- Consumption View
- Interface View
Consumption ViewとはApplicationから消費されるViewのことであり、コンサルタントや非SAPの技術者はConsumption Viewについてのみ意識すれば実装できるということです。(こちらが所謂VDM)
Interface ViewはConsumption Viewを構成するためのCDS Viewです。さらにInterface ViewにはBasic ViewとComposite Viewがあるようです。(私の理解が浅いこともあるのですが詳細は割愛。)
さてそろそろタイトルを回収しますが、Consumption Viewは「カレーライス」でありInterface Viewはカレールゥ、ライス、皿、スプーン・・・etcと考えることができます。(色々突っ込みはありそうですが、ご容赦を)
更にConsumption Viewには以下のtypeに分けられます。
Araiさんも言及されていますが、CDS View for API以外は正式なカテゴリではないのでご注意ください。
こういったtypeはCDS Viewに記述されるannotationで制御されています。
annotationは直訳すると注釈ですが、個人的には属性とかプロパティとかがイメージに近いと思っています。
AraiさんのBlogでは各typeは排他的なイメージで書かれていますが、実際は共存するものだと私は理化しています。
つまりannotationはCoCo壱で言えばトッピングであり、
ロースかつカレー(CDS View piblished as ODta)と野菜カレー(Analytic Query)はそれぞれ存在しますが、
ロースかつ野菜カレー(CDS View piblished as ODta&Analytic QueryのCDS View)も存在します。
ではどうやってトッピング(annotation)を確認するかというと以下3つの方法があるかと思います。
1. SE11、EclipseADTなどでソースを確認する。
2. Fiori ViewBrowserで確認する。
3. テーブル:DDHEADANNOで確認する。
手元に実機がなくスクリーンショットが載せられないので皆さんそれぞれの環境でぜひご確認いただければと思います。
個人的には一覧形式で見やすいので3がおすすめです。(なんで3のテーブルの存在に気付いたかは別の機会に。)
またどんなトッピング(annotation)があるかはメニュー(Help)があるりますので私も勉強中です。