Für eine über DEFINE VIEW definierte CDS-View der
ABAP CDS werden zwei Objekte des ABAP Dictionary angelegt, für die jeweils ein Name angegeben werden muss:
Hinter der Annotation@AbapCatalog.sqlViewName muss in Hochkommata der Name CDS_DB_VIEW der
CDS-Datenbank-View
angegeben werden, die als technische Grundlage der CDS-View im ABAP Dictionary dient. Für diesen Namen gelten die üblichen Einschränkungen für
Views des ABAP Dictionary und die Groß-/Kleinschreibung
spielt keine Rolle (bzw. er wird intern in Großbuchstaben umgesetzt). Unter diesem Namen wird
auch die zugehörige SQL-View auf der Datenbank angelegt. Der Name der Datenbank-View darf nicht mehr geändert werden, nachdem die CDS-View in ein Folgesystem transportiert wurde.
Hinter den Schlüsselwörtern DEFINE VIEW, von denen DEFINE optional ist, wird der Name cds_entity der
CDS-Entität definiert,
ohne dass Hochkommata anzugeben sind. Dieser Name folgt den Regeln der CDS-Datenbank-View, kann aber 30 Stellen haben. Die CDS-Entität repräsentiert alle Eigenschaften der CDS-View.
Die beiden Namen liegen im Namensraum der globalen
Datentypen des ABAP Dictionary und der globalen
Objekttypen der
Klassenbibliothek und
müssen jeder für sich eindeutig sein. Über den Namen cds_entity
der CDS-Entität kann in anderen Anweisungen der CDS DDL oder in ABAP-Programmen auf die CDS-View zugegriffen werden.
Mit den Angaben in name_list
können die Namen der Elemente der View in einer Namensliste definiert werden. Mit parameter_list kann die View mit Eingabeparametern versehen werden,
die an Operandenpositionen der View angegeben werden können und denen bei Verwendung der View Aktualparameter zugeordnet werden müssen.
Hinweise
Die CDS-Datenbank-View
einer mit DEFINE VIEW definierten CDS-View kann über ihren Namen CDS_DB_VIEW im
Werkzeug ABAP Dictionary der ABAP Workbench angezeigt, aber nicht bearbeitet werden. In dieser Anzeige stehen auch nicht alle Informationen zur Verfügung. Die
CDS-Entitätcds_entity kann dort nicht angezeigt werden.
In den der CDS DDL und in ABAP kann auch direkt auf die
CDS-Datenbank-ViewCDS_DB_VIEW zugegriffen werden. Es wird aber dringend empfohlen, ausschließlich mit der
CDS-Entität zu arbeiten, da nur diese alle Eigenschaften der CDS-View umfasst. Die Verwendung der CDS-Datenbank-View in Open SQL ist deshalb
obsolet.
Über ABAP-Annotationen können einer View weitere technische und semantische Eigenschaften im ABAP Dictionary zugeordnet werden. Über
Framework-spezifische
Annotationen kann sie mit spezifischen semantischen Eigenschaften für andere Frameworks der SAP versehen werden.
Wenn für eine CDS-Entität mit der CDS-DCL-Anweisung DEFINE ROLE eine
CDS-Rolle definiert ist, wird bei einem Open-SQL-Zugriff auf die CDS-Entität standardmäßig eine implizite
Zugriffskontrolle
durchgeführt. Die CDS-Zugriffskontrolle kann mit dem Wert #NOT_ALLOWED
für die Annotation @AccessControl.authorizationCheck
und über den Zusatz WITH
PRIVILEGED ACCESS in der FROM-Klausel einer Open-SQL-Query beim Zugriff auf die Entität ausgeschaltet werden.
Wenn mit einer SELECT-Anweisung von Open SQL über den Namen cds_entity auf die
CDS-Entität zugegriffen wird, wird die Syntaxprüfung in einem
strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Der DDL-Quelltext einer CDS-View muss nicht den gleichen Namen wie die CDS-Entität haben, es wird aber empfohlen, den Namen der Entität zu verwenden.
Nach dem Transport eines DDL-Quelltexts ist die Kombination dessen Namens und der Namen der darin
definierten CDS-View und ihrer CDS-Datenbank-View festgelegt und darf nicht mehr durch Umbenennungen geändert werden.
Die Programmierung von CDS-Views mit der CDS DDL der Core Data Services ist in aller Regel nicht
Sache der normalen ABAP-Anwendungsprogrammierung sondern gehört zum Aufgabengebiet der Implementierung
von Datenmodellen im ABAP Dictionary. Einmal angelegt werden CDS-Views in ABAP-Programmen über lesende Open-SQL-Anweisungen verwendet und müssen entsprechend stabil sein.
Beispiel
Die folgende CDS-View hat genau die gleiche Funktionalität wie die klassische
Projektions-ViewDEMO_SPFLI.
Das Programm DEMO_CDS_PROJECTION greift mit SELECT
auf die View zu. Bei einem Zugriff auf die CDS-Entität DEMO_CDS_SPFLI wird anders als beim Zugriff
auf die klassische Datenbank-View DEMO_SPFLI aber keine Mandantenspalte zurück gegeben. Die CDS-Datenbank-View DEMO_CDS_PRJCTN gibt auch die Mandantenspalte zurück.
@AbapCatalog.sqlViewName: 'DEMO_CDS_PRJCTN' @AccessControl.authorizationCheck: #NOT_REQUIRED
define view demo_cds_spfli as select from spfli { key spfli.carrid, key spfli.connid, spfli.cityfrom, spfli.cityto }