目次
背景と目的
ABAP CDS Viewは、SELECTやJOINなどのデータ加工機能と、アノテーションによるUIやデータ連携などの機能を備えており、効果的で適切な利用には、この多岐にわたる機能の把握が必要です。
ABAP CDS Viewは、Code Pushdownアプローチと一緒に話題にされ、高速な処理が期待されることがあります。しかし、ABAP CDS Viewを導入するだけでCode Pushdownアプローチが自動的に実現するという誤った認識が広まっています。実際には、Code Pushdownアプローチを正しく理解し、設計することで、ABAP CDS Viewが有力な要素技術の選択肢として利用されます。この違いを正確に理解することがプロジェクトの成功に重要です。過度な期待は逆にプロジェクトに困難をもたらす可能性があるため、慎重にアプローチすることが必要です。
また、ABAP CDS Viewは多機能で柔軟性が高く、複数のViewが協調動作するため、場当たり的な設計と実装を行うと、無秩序な設計や品質の低下(特に保守性)を招く可能性があります。したがって、正確なルールを理解し、業務要件を業務的および機能的に適切に分解し、適切なレイヤーに機能を配置することが、設計の品質を維持し、保守性を高めるために非常に重要です。
2020年に、ABAP 7.55で動作する新しいABAP CDS Viewがリリースされました。今後は、これらの新旧のABAP CDS Viewの違いを理解し、SAP-BTP環境を含むさまざまな環境でどのように対応すべきかを把握することが重要です。新しいABAP CDS Viewが導入されたことで、設計や開発のアプローチに変更が生じる可能性があるため、これらの変更に迅速に対応する必要があります。
当ブログでは上記を明らかにし、ABA) CDS Viewを導入することで、どのようなアクセス方法が実現できるかについて説明します。
はじめに
以下3回に分けてブログ投稿致します。
SAP関連のViewまとめ(1/3):全体像と処理速度 | |
今回の記事 | SAP関連のViewまとめ(2/3):ABAP CDS View |
SAP関連のViewまとめ(3/3):HANA Information View |
ABAP CDS Viewの位置づけ
- ABAP CDS Viewと、これにアクセスする技術要素は、以下の図の色がついている箇所です。NetWeaverでABAP CDS Viewを有効化すると、SAP HANAに、SQL Viewが作られます。SQL Viewは、SQL Engineで動作します。
- S/4はABAP CDS View 、BWはHANA Information Viewといった認識もありますが、実際は自由に組合せて設計実装可能です。
※ABAP CDS ViewはABAP層で動作するため、Non-HANA(NetWeaver(ABAP)7.4以降)システムでも動作いたします。
処理速度
- ABAP CDS ViewはSQL Engineで動作するため、処理速度に関してはそれ以上でも以下でもありません。たとえば、ABAP 7.31以前からある「Open SQL」「SE11 Database View」も、SQL Engineで動作します。そのため、ABAP CDS Viewはこれらと処理速度は同一です。Code Pushdownのアプローチで設計実装することで、高速な処理が実現します。
- 詳細は、前回のブログ「SAP関連のViewまとめ(1/3):全体像と処理速度」に記載致しました。以下リンクをご参照お願い致します。
ABAP CDS Viewの種類
業務視点
業務視点で以下のレイヤーに分けて実装します。文章では伝わりにくいので、後で実装イメージ例を示します。
仮に、上記のレイヤーを無視して実装してもエラー無く動作します。
機能視点
先の業務視点で説明した3つのViewに対して、追加でアノテーション設定する内容です。
Extension Viewは、メインとなるViewが既に存在し、これに従属する形で別途Viewを作成し協調動作します。
ABAP CDS Viewの実装イメージ例
新旧ABAP CDS Viewについて
- ABAP 7.40で導入された旧ABAP CDS View(以下CDS DDIC-based view)は、その後のバージョンで機能が追加され、ABAP 7.52あたりで一段落したように思います。しかしながら、内部的にはCDS View名とDDIC名の二重管理があり、SAPの各種ドキュメントを読むと、不自然で複雑な実装となってしまっているように感じます。
- 私の過去の経験では、CDS DDIC-based viewでDDIC名を指定して新規作成し、後でDDIC名を変更すると有効化は成功しますが、変更前のDDIC名が内部的に残り、それを別の名前に変更しようとすると、名前の重複エラーが発生し、作業ができなくなる場合がありました。なお、私の手元にあるABAP 7.55:ADT 3.36.1環境では、DDIC名の変更がエラーとして扱われるようです。
- ABAP 7.55で新ABAP CDS View (以下CDS view entity)が追加されました。この新しいバージョンでは、DDIC名の指定が廃止され、2重管理が排除され、内部的な実装がシンプルになりました。おそらく、SAP社はCDS DDIC-based viewにおける不自然で複雑な実装を改善しようとしたのだと感じました。
- 一方で、CDS view entityに移行してから、SE16、SE16N、SE16H:データブラウザでデータ確認ができなくなりました。代わりに、ADTのData PreviewやSQL Consoleを使用してデータ確認を行うように推奨されています。
※ABAP CDS Viewは、多くの場合、入れ子にして使用されることがあります。新旧のバージョンを混在して使用することも可能です。
NetWeaver ABAP 7.55の挙動
当然ですが、ABAP 7.55環境でCDS view entityはエラー無く作成できます。
SAP NetWeaverのバージョン確認
ADT:ABAP CDS Viewウィザードの挙動
エラーは発生しません。
NetWeaver ABAP 7.50の挙動
ABAP 7.50環境は、CDS view entityは動作しないため、エラーが発生します。
SAP NetWeaverのバージョン確認
ADT:ABAP CDS Viewウィザードの挙動
サポートしてないとの注意を促すメッセージを表示します。
エラーが発生します。
ABAP CDS Viewのアクセス方法
ABAP
- ABAP CDS Viewは、ABAP SQLを使用してアクセス可能です。そのため、ABAPコードが記述できる場所は、すべて利用可能です。
- アノテーションを使用してDDIC名を設定可能です。そのため、SE11/12のデータブラウザやSQ01/02のSAPクエリなどからも利用可能です。※CDS DDIC-based viewのみ
BW
- ディクショナリービューとしてアクセスする方法と、ABAP SQLでアクセスする方法があります。
OData等
- SAPのシステム間連携の仕組みにおいて、ODataは非常に重要な要素となっています。特に、ABAP CDS ViewはOData系のアノテーションを設定することで、ODataインターフェイスを簡単に作成できます。このようにして、異なるSAPシステム間でデータを共有しやすくなり、シームレスな連携が実現されます。
まとめ
- 処理速度に関して、ABAP CDS ViewはOpen SQLと同等の性能を持つため、過度な期待は避けるべきです。高速な処理を実現するには、設計者がCode Pushdownアプローチをもとに設計する必要があります。
- ABAP CDS Viewの設計においては、業務要件を固有業務非依存のロジック(Basic View)、固有業務依存のロジック(Composite View)、UI等の物理レイヤー(Consumption View)に分割して実装することが推奨されます。これにより、ビジネスロジックとUIが分離され、Viewの再利用性が向上します。
- 今回の説明では、実際のプロジェクトで理解しやすいように、「ABAP CDS Viewの実装イメージ例」を示しました。また、ABAP CDS ViewはABAP内で利用するだけでなく、BWでも活用できることが可能です。これにより、データの再利用性や処理効率が向上し、柔軟性が高まります。
- 2023-09-12現在は、新旧ABAP CDS Viewの過渡期であり、新規開発する場合は「新:CDS view entity」が推奨です。
お知らせ
BeeXは、SAP S/4HANAのデータモデルに深い理解を持ち、データ層からプレゼンテーション層に至るまで包括的な対応が可能です。特に、SAP標準のCDS View(VDM)に関する専門知識を持つ技術者がチームに在籍し、ガバナンスに基づいた設計と実装のノウハウを提供できます。もしABAP CDS Viewの設計実装が無秩序になってしまい、Viewの再利用が難しいなどの課題に直面している場合は、どうぞお気軽にご相談・ご連絡ください。
前回「SAP関連のViewまとめ(1/3):全体像と処理速度」
次回「SAP関連のViewまとめ(3/3):HANA Information View」
キーワード:
SAP HANA
SAP Netweaver
ABAP
ABAP CDS View
SQL View
ABAP SQL
Open SQL
New Open SQL
Classic Open SQL
SQL Engine
Code Pushdown
Code to Data