Arten von CDS Views
Mit CDS, also Core Data Services stehen dem Entwickler faszinierende Möglichkeiten zur Verfügung.

Gespeichert im ABAP repository erfolgt die Ausführung per "push down" in der schnelleren HANA Datenbank.

Komfortabel ist insbesondere, wie schnell eine Datenbankabfrage erstellt werden und anschließend mit der Annotation @OData.publish:true als oData zur Verfügung gestellt werden kann.

CDS-Views gibt es eigentlich schon bemerkenswert lange,
genutzt werden können sie seit mehr als 6 Jahren mit:


Doch nun zu den Arten:


Consumption View:

Best practice: Bezeichnen mit @VDM.viewType: #CONSUMPTION
Benennung: C_*

Dieser für die Konsumation nach außen exponierte View ist anwendungsspezifisch und nicht wiederverwendbar.

Mit der entsprechenden Annotation wird er als oData zur Verfügung gestellt.


Composite Interface View:

Best practice: Bezeichnen mit @VDM.viewType: #COMPOSITE
Benennung: I_*

Dieser sammelt sämtliche Daten ein: Aus den Basic Views und / oder anderen Composite Views.

Basic Interface View:

Best practice: Bezeichnen mit @VDM.viewType: #BASIC
Benennung: I_*

Sind die einzigen, die direkt auf die Datenbank zugreifen und tragen den Namen "Basic" nicht ohne Grund:

  • Keine komplexen Kalkulationen, Aggregations, Parameter und Where-Klauseln.
  • Eine einzige Tabelle, wenn mehr: JOIN.
  • Associations nur mit anderen Basic Views.

  • Ist aber wiederverwertbar.


Mach es grafisch:

Grundsätzlich kommt man derzeit für die Erstellung und Analyse von CDS-Views an den ABAP Development Tools in Eclipse nicht vorbei, wenn man ein on-premise S4/HANA einsetzt.

Auf Basis des modellierten CDS-Views erzeugt die ABAP-Infrastruktur einen entsprechenden SQL-View.

In Tabellenform mit dem CDS-View-Stack
Den Aufbau der View-Hierarchie kann man sich in den ADT mit dem Dependency Analyzer des CDS-Editors ansehen.
Hier ein Beispiel aus dem SAP® PRESS Buch "Core Data Services für ABAP®" aus dem Jahr 2020:


Oder als Grafik mit der SQL Dependency Graph:


Schön ersichtlich, dass es sich ganz unten bei ZPRODUCT und ZSALESORDERITEM noch um die Datenbanktabellen handelt, darüber wird bereits mit dem korrekten I* jeweils der (Basic)Interface View angezeigt.

Exkurs: Der CDS-View bzw. das gleichnamige DDLS Transportobjekt heisst ZI_Product, der SQL-View im ABAP Dictionary (als Repräsentant des CDS-Views auf der Datenbankebene) hat den Namen ZIPRODUCT.

Ganz oben ist der Consumption View mit dem korrekten C* (auch hier der SQL-View angezeigt).

Projection-View:

Hier handelt es sich um einen Exoten, der keinen SQL-View im ABAP Dictionary generiert und keine Assoziationen hat. Seine Aufgabe ist nur das Zusammenstellen bereits existierender Funktionen (er kann auch keine neuen definieren)

Gebraucht wird er, um ihn in eine Service Definition umzuwandeln. Natürlich kann auch ohne den Zwischenschritt des Projektions-Views die Serviceexponierung erfolgen.
Der Nachteil wäre aber, dass aus einem View nur eine Exponierung erstellt werden kann.

Die zugrundeliegenden Views bleiben hier jedoch wiederverwendbar.

Wird ein CDS View beispielsweise einer Fiori-Anwendung als Business Service zwecks Konsumation zur Verfügung gestellt, dann kann ein CDS-Projektions-View das Bindeglied zwischen dem CDS View und der Serviceexponierung sein.

VV



vlach.solutions