一月一善

一月一記事を目標にSAPに関することを書きます!※このBlogは個人の見解であり、所属する組織の公式見解ではありません

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についてです。)

参考:SAP S/4HANA のライブデータを BI ツールから参照するための仕組みを理解しよう

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に分けられます。

  • CDS View for API
  • CDS View piblished as ODta
  • CDS View with UI annotatio
  • Analytic Query

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)があるりますので私も勉強中です。

最後に

なぜCoCo壱のカレーに例えたかというと実は週に1回は通うくらいCoCo壱が好きでSAPコンサルというよりただのCoCo壱ファンとして書きました。(多分オシャレな若い子はスタバのカスタマイズで例えたでしょう。)

ちなみにSACになぜインポートできなかったかは、Parameter付きのCDS ViewでSACへの直接連携はサポートしていないシナリオだったようです。
トッピング(annotation)とは異なる概念で制約がありCDS ViewはCoCo壱に引けを取らない奥深さを感じます。