Mit Vorlagen in der Entwicklungsumgebung Eclipse kannst Du ABAP CDS Views schnell und einfach erstellen. Diese ABAP CDS Views (ABAP Core Data Services Views) sind ein zentraler Bestandteil der modernen SAP-Entwicklung und ermöglichen es Dir, die SAP-HANA-Datenbank effizient zu nutzen sowie komplexe Informationen nahtlos in SAP-Fiori-Benutzerschnittstellen zu integrieren. Besonders in der ABAP Cloud sind CDS Views unerlässlich, da direkte Datenselektionen auf die Datenbanktabellen nicht erlaubt sind. Du kannst in den ADT (ABAP Development Tools) entweder Vorlagen nutzen, um das Grundgerüst der CDS View erstellen zu lassen, oder komplett eigenständig eine ABAP CDS View erstellen. Welche Vorlagen es in den ADT in Eclipse gibt und wie Du diese einfach nutzen kannst, erfährst Du in diesem Artikel.
ABAP CDS View mit Vorlagen erstellen
Eine ABAP CDS View kannst Du einfach in Eclipse mit den ABAP Development Tools (ADT) erstellen. Folgende Schritte kannst Du hierbei auswählen:
- Neues ABAP Repository Objekt erstellen: Klicke mit der rechten Maustaste im Project Explorer auf Dein Paket und wähle „New > Other ABAP Repository Object“.
- Core Data Services auswählen: Wähle im nächsten Dialog „Core Data Services > Data Definition“ oder nutze den entsprechenden Filter. Klicke auf „Next“.
- Namen und Beschreibung eingeben: Gib einen aussagekräftigen Namen und eine Beschreibung für Deinen CDS-View ein. Beachte die Namenskonventionen, da der Name auch für das Transportobjekt und das CDS-Modell verwendet wird. Falls bekannt, kannst Du unter „Referenced Object“ die zugrunde liegende Datenbanktabelle eingeben oder über den Button „Browse“ suchen. Bestätige mit „Next“.
- Transportauftrag auswählen: Wähle einen bestehenden Transportauftrag oder lege bei Bedarf einen neuen an. Klicke erneut auf „Next“.
- Vorlage auswählen: Wähle eine Vorlage aus, die das Grundgerüst der CDS View automatisch erstellt. Alternativ kannst Du auf die Vorlage verzichten, indem Du die Checkbox „Use the selected template“ abwählst. Auf der rechten Seite erhältst Du eine kurze Beschreibung der Vorlage und eine Vorschau auf das, was erstellt wird. Drücke auf „Finish“.
Die CDS View wird nun automatisch generiert. Falls noch keine Datenquelle angegeben wurde, kannst Du dies nachholen, indem Du „data_source_name“ mit der entsprechenden Tabelle ersetzt, Attribute angibst und die View aktivierst. Danach ist die CDS View einsatzbereit.
Details findest Du im Artikel Artikel „ABAP CDS View erstellen“.
Define View Entity
Definiert eine einfache CDS-View-Entität mit einer Datenquelle.
@AbapCatalog.viewEnhancementCategory: [#NONE] @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: '${ddl_source_description}' @Metadata.ignorePropagatedAnnotations: true @ObjectModel.usageType:{ serviceQuality: #X, sizeCategory: #S, dataClass: #MIXED } define view entity ${ddl_source_name} as select from ${data_source_name} { ${data_source_elements}${cursor} }
Define Root View Entity
Definiert eine Root-CDS-View-Entität mit einer spezialisierten Assoziation zu einer Kind-CDS-Entität.
Root-Knoten, Kompositionen und Zu-Eltern-Assoziationen werden verwendet, um die Struktur eines Geschäftsobjekts zu definieren, das im ABAP RESTful-Programmiermodell genutzt werden kann.
@AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: '${ddl_source_description}' define root view entity ${ddl_source_name} as select from ${data_source_name} composition of ${target_data_source_name} as ${_association_name} { ${data_source_elements}${cursor} ${_association_name} // Make association public }
Define View Entity with To-Parent Association
Definiert eine CDS-View-Entität mit einer spezialisierten Assoziation zu ihrer Eltern-CDS-Entität.
Kompositionen und Zu-Eltern-Assoziationen werden verwendet, um die Struktur eines Geschäftsobjekts zu definieren, das im ABAP RESTful-Programmiermodell genutzt werden kann.
@AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: '${ddl_source_description}' define view entity ${ddl_source_name} as select from ${data_source_name} association to parent ${target_data_source_name} as ${_association_name} on $$projection.${element_name} = ${_association_name}.${target_element_name} { ${data_source_elements}${cursor} ${_association_name} // Make association public }
Define View (veraltet ab AS ABAP 7.57)
Definiert eine einfache, DDIC-basierte CDS-View mit einer Datenquelle.
DDIC-basierte CDS-Views sind ab Application Server ABAP 7.57 veraltet. Verwende stattdessen eine Vorlage für eine CDS-View-Entität.
@AbapCatalog.sqlViewName: '${sql_view_name}' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: '${ddl_source_description}' define view ${ddl_source_name_editable} as select from ${data_source_name} { ${data_source_elements}${cursor} }
Define View with Join (veraltet ab AS ABAP 7.57)
Definiert eine DDIC-basierte CDS-View, die zwei Datenquellen mit einem Left Outer Join kombiniert.
Die Join-Bedingungen werden in der ON-Klausel angegeben.
DDIC-basierte CDS-Views sind ab Application Server ABAP 7.57 veraltet. Verwende stattdessen eine Vorlage für eine CDS-View-Entität.
@AbapCatalog.sqlViewName: '${sql_view_name}' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: '${ddl_source_description}' define view ${ddl_source_name_editable} as select from ${data_source_name} left outer join ${joined_data_source_name} on ${data_source_name}.${element_name} = ${joined_data_source_name}.${joined_element_name} { ${data_source_elements}${cursor} }
Define View with Association (veraltet ab AS ABAP 7.57)
Definiert eine DDIC-basierte CDS-View, die eine Assoziation zu einer anderen Datenquelle bereitstellt.
Die Assoziation kann in der Selektliste sowie von anderen CDS-Views, die diese CDS-View verwenden, genutzt werden.
DDIC-basierte CDS-Views sind ab Application Server ABAP 7.57 veraltet. Verwende stattdessen eine Vorlage für eine CDS-View-Entität.
@AbapCatalog.sqlViewName: '${sql_view_name}' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: '${ddl_source_description}' define view ${ddl_source_name_editable} as select from ${data_source_name} association [${1}] to ${target_data_source_name} as ${_association_name} on $$projection.${element_name} = ${_association_name}.${target_element_name} { ${data_source_elements}${cursor} ${_association_name} // Make association public }
Define View with To-Parent Association (veraltet ab AS ABAP 7.57)
Definiert eine DDIC-basierte CDS-View mit einer spezialisierten Assoziation zu ihrer Eltern-CDS-Entität.
Kompositionen und Zu-Eltern-Assoziationen werden verwendet, um die Struktur eines Geschäftsobjekts zu definieren, das im ABAP RESTful Programming Model (RAP) genutzt werden kann.
DDIC-basierte CDS-Views sind ab Application Server ABAP 7.57 veraltet. Verwende stattdessen eine Vorlage für eine CDS-View-Entität.
@AbapCatalog.sqlViewName: '${sql_view_name}' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: '${ddl_source_description}' define view ${ddl_source_name_editable} as select from ${data_source_name} association to parent ${target_data_source_name} as ${_association_name} on $$projection.${element_name} = ${_association_name}.${target_element_name} { ${data_source_elements}${cursor} ${_association_name} // Make association public }
Define View with Parameters (veraltet ab AS ABAP 7.57)
Definiert eine DDIC-basierte CDS-View mit einem einzelnen Eingabeparameter.
Der Eingabeparameter kann als Element in der Selektliste oder als Operand in bedingten oder arithmetischen Ausdrücken verwendet werden.
DDIC-basierte CDS-Views sind ab Application Server ABAP 7.57 veraltet. Verwende stattdessen eine Vorlage für eine CDS-View-Entität.
@AbapCatalog.sqlViewName: '${sql_view_name}' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: '${ddl_source_description}' define view ${ddl_source_name_editable} with parameters ${parameter_name} : ${parameter_type} as select from ${data_source_name} { ${data_source_elements}${cursor} }
Define Projection View
Definiert eine einfache CDS-Projektionsansicht.
@EndUserText.label: '${ddl_source_description}' @AccessControl.authorizationCheck: #NOT_REQUIRED define view entity ${ddl_source_name} as projection on ${data_source_name} { ${data_source_elements}${cursor} }
Extend View
Erweitert eine bestehende CDS-View, indem die angegebenen Elemente der Selektliste der CDS-View hinzugefügt werden.
@AbapCatalog.sqlViewAppendName: '${sql_view_append_name}' @EndUserText.label: '${ddl_source_description}' extend view ${view_name} with ${ddl_source_name_editable} { ${base_data_source_name}.${element_name} }
Extend View Entity
Erweitert eine bestehende CDS-Projektionsansicht, indem die angegebenen Elemente der Selektliste hinzugefügt werden.
extend view entity ${view_name} with { ${base_data_source_name}.${element_name} }
Extend Abstract Entity
Erweitert eine abstrakte CDS-Entität, indem die angegebenen Elemente der Selektliste hinzugefügt werden.
extend abstract entity ${entity_name} with { ${element_name} : ${element_type}; }
Extend Custom Entity
Erweitert eine benutzerdefinierte CDS-Entität, indem die angegebenen Elemente der Selektliste hinzugefügt werden.
extend custom entity ${entity_name} with { ${element_name} : ${element_type}; }
Define Table Function with Parameters
Definiert die Typensignatur einer clientabhängigen CDS-Tabellenfunktion mit Eingabeparametern. Die CDS-Tabellenfunktion wird in der angegebenen ABAP-Methode implementiert.
Die CDS-Tabellenfunktion kann in Open SQL und als Datenquelle in anderen CDS-View-Definitionen verwendet werden.
@EndUserText.label: '${ddl_source_description}' define table function ${ddl_source_name_editable} with parameters ${parameter_name} : ${parameter_type} returns { ${client_element_name} : abap.clnt; ${element_name} : ${element_type}; ${cursor} } implemented by method ${class_name}=>${method_name};
Define Abstract Entity with Parameters
Definiert eine abstrakte CDS-Entität mit einem einzelnen Eingabeparameter.
@EndUserText.label: '${ddl_source_description}' define abstract entity ${ddl_source_name} with parameters ${parameter_name} : ${parameter_type} { ${element_name} : ${element_type}; ${cursor} }
Define Parent Child Hierarchy
Definiert eine einfache CDS-Eltern-Kind-Hierarchie.
define hierarchy ${ddl_source_name} as parent child hierarchy ( source ${data_source_name} child to parent association ${_association_name} start where ${element_name} = ${value} siblings order by ${order_by_element_name} ) { ${element_name} ${cursor} }
Define Custom Entity with Parameters
Definiert eine benutzerdefinierte CDS-Entität mit einem einzelnen Eingabeparameter.
@EndUserText.label: '${ddl_source_description}' define custom entity ${ddl_source_name} with parameters ${parameter_name} : ${parameter_type} { key ${key_element_name} : ${key_element_type}; ${element_name} : ${element_type}; ${cursor} }
Über den Autor
Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.
ERP UP unterstützen
Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.