4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【ABAP】SQL – データベースビューとCDSビューの違い

Last updated at Posted at 2022-06-21
S/4HANAの導入に携わると、CDSビューを目にする機会が多くなりますので、ここで少し触れておきます。

従来のABAPを拡張したABAP CDSがABAP7.40以降で提供されるようになりましたが、このABAP CDSを使って定義されたビューをCDSビューと呼びます。

CDSビューは、従来のABAPと同様にデータベースビューとして扱うこともできるし、Fioriアプリで分析用クエリを生成できるなど幅広い用途で使われます。

また、技術的にも覚えることが多く、私自身が大して知識を持ってないため、ここではデータベースビューと同様の使い方をする場合に特化して、CDSビューの特徴や従来のデータベースビューとの違いを書いていきます。

データベースビューについて

複数のテーブルを指定の条件キーで結合したものをビューと呼びますが、その中でも通常の透過テーブルと同様にSE16でデータ照会をできたり、SELECT処理でデータ取得をできるのがデータベースビューです。

標準でも多数提供されていますが、例えばこんなのがあります。

SE11で見たときに、データベースビューと表示されています。

CDSビューについて

上でも書いたように、ABAP CDSで実装されたビューがCDSビューです。

CDSビューはSAP GUIからは実装不可で照会のみ可能です。実装はHANA STUDIOとかEclipseなどの外部開発環境を使用しなければなりません。

SE11から見た場合の画面はこんな感じです。

DDL SQLビューと表示されているものがCDSビューです。実体はDDL Sourceに表示された名称をダブルクリックすると照会できます。

「RIS_DDL_TADIR」をダブルクリックすると、

実体であるソースコードを照会できます。

このビューは2つのテーブル(DDDDLSRCとTADIR)を内部結合してますが、JOINの書き方がGUIで実装するABAPとは異なるので、実装する際は標準のCDSビューを参考にしてください。

データベースビュー/CDSビューの探し方

SE11から探すことができます。

ビューの検索ヘルプから詳細を展開して、DBビューにチェックを入れて検索すると、データベースビュー、もしくはCDSビューが検索されます。

それ以上は検索できないので、SE11で照会して確認してください。

データベースビューとCDSビューの違い

ざっくりと表にまとめてみます。

データベースビュー CDSビュー
内部結合(INNER JOIN)
外部結合(OUTER JOIN) ×
ロジック実装 ×
SAP GUIで実装 ×
SAP GUIで照会
Eclipseで実装

データベースビューはテーブルと結合条件を指定すれば内部結合によるプログラムが自動生成されていたのでABAPを知らなくても実装できましたが、

CDSビューはプログラムを自分で書かないと実装できないので、開発の知識が必要とされる技術になりました。

まとめ

データベースビューと比較すると、CDSビューはプログラムの知識がある人向けのオブジェクトになった一方で実装の自由度は高まりました。

S/4 HANAの導入プロジェクトでは、Fioriアプリを作る場合、従来のSAP GUIのアプリを作る場合のいずれにおいてもCDSビューを使う機会は出てきます。

CDSビューでできることや実装するロジックの詳細をいずれ勉強して載せていきたいと思っていますが、今はまだ大した知識がないのでまた改めて。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?