19,99 €
ABAP Core Data Services (CDS) sind auf komplexe Datenbeschaffungsszenarien bei der Entwicklung klassischer ABAP- wie auch moderner UI-Applikationen ausgerichtet. Die vorliegende zweite Auflage des Praxishandbuchs streift kurz die Grundlagen der Core Data Services, um sich dann ausführlich den CDS-View-Entitäten – Nachfolger der klassischen CDS-Views seit ABAP-Release 7.55 – zuzuwenden. Sie begegnen Erweiterungen für CDS-Entitäten und CDS-Tabellenfunktionen, die speziell für SAP-HANA-Datenbanken entwickelt wurden und eine Verbindung zwischen SQLScript-Abfragen und ABAP-Klassen herstellen.
Neben dem eigens für CDS entwickelten Berechtigungskonzept nach dem Code-Pushdown-Prinzip erläutert der Autor fortgeschrittene Techniken wie Annotationen, virtuelle Felder und eingebaute Funktionen. Abgerundet wird das Thema durch Einblicke in die Implementierung eines virtuellen Datenmodells zur Datenanalyse in Echtzeit. Speziell für Entwickler gedacht ist der Ausblick auf die CDS-Testumgebung mit der Option, automatisierte Unit-Tests auch für Core Data Services zu nutzen.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 148
Veröffentlichungsjahr: 2025
Johannes Gerbershagen
SAP®-Praxishandbuch ABAP Core Data Services (CDS)
2., erweiterte Auflage
Johannes GerbershagenSAP®-Praxishandbuch ABAP Core Data Services (CDS) – 2., erweiterte Auflage
ISBN:978-3-960124-29-0 (E-Book)
Lektorat:Monika Hong/Anja Achilles
Korrektorat:Die Korrekturstube/Team Wallmow 65
Coverdesign:Philip Esch
Coverfoto:iStockphoto.com | Roman Samokhin No. 952964950
Satz & Layout:Johann-Christian Hanke
2. Auflage 2025
© Espresso Tutorials GmbH, Gleichen 2025
URL:www.espresso-tutorials.de
Das vorliegende Werk ist in allen seinen Teilen urheberrechtlich geschützt. Alle Rechte sind vorbehalten, insbesondere das Recht der Übersetzung, des Vortrags, der Reproduktion und der Vervielfältigung. Espresso Tutorials GmbH, Bahnhofstr. 2, 37130 Gleichen, Deutschland.
Ungeachtet der Sorgfalt, die auf die Erstellung von Text und Abbildungen verwendet wurde, können weder der Verlag noch die Autoren oder Herausgeber für mögliche Fehler und deren Folgen eine juristische Verantwortung oder Haftung übernehmen.
Feedback:Wir freuen uns über Fragen und Anmerkungen jeglicher Art. Bitte senden Sie diese an: [email protected].
Unser Ziel ist es, SAP-Wissen wie einen Espresso zu servieren: Auf das Wesentliche verdichtete Informationen anstelle langatmiger Kompendien – für ein effektives Lernen an konkreten Fallbeispielen. Viele unserer Bücher enthalten zusätzlich Videos, mit denen Sie Schritt für Schritt die vermittelten Inhalte nachvollziehen können. Besuchen Sie unseren YouTube-Kanal mit einer umfangreichen Auswahl frei zugänglicher Videos: https://www.youtube.com/user/EspressoTutorials.
Kennen Sie schon unser Forum? Hier erhalten Sie stets aktuelle Informationen zu Entwicklungen der SAP-Software, Hilfe zu Ihren Fragen und die Gelegenheit, mit anderen Anwendern zu diskutieren: https://forum.espresso-tutorials.com/.
Thomas Stutenbäumer:
SAP
®
Praxishandbuch ABAP Teil 1 – Konzeption, Entwicklung, Debugging –
2., erweiterte Auflage
Thomas Stutenbäumer:
SAP
®
Praxishandbuch ABAP
®
Teil 2 – Performance, Erweiterungen, Transportwesen
– 2., erweiterte Auflage
Johannes Gerbershagen:
Praxishandbuch SAP
®
CAP – Cloud Application Programming Model
Christoph Lordieck, Manfred Sprenger:
SAP
®
-Schnelleinstieg: ABAP-Entwicklung in Eclipse
– 2., erweiterte Auflage
Julian Danho, Phillip Dörrschuck:
Schnelleinstieg in das SAP ABAP RESTful Application Programming Model (RAP)
Johannes Gerbershagen:
Qualitätsmanagement in der ABAP-Entwicklung unter SAP
®
– 2., überarbeitete Auflage
Der ABAP-Open-SQL-Standard mit den klassischen Dictionary-Elementen unterstützt bereits die vereinheitlichten Elemente der Abfragesprache SQL (Structured Query Language), mit der Abfragen an rationelle Datenbanken gestellt und verarbeitet werden. Über diesen Standard hinaus bietet insbesondere die SAP-HANA-Datenbank viele Funktionen und Erweiterungen an, die keine Bestandteile der Open SQL-Syntax sind. Zudem gestatten es die klassischen Dictionary-Elemente bis auf Views nicht, Daten aus mehreren Quellen zu aggregieren. Oftmals ist es in der Entwicklung aber wünschenswert, dem Anwendungsentwickler komplexere Aggregationen als Service bereitzustellen, den er für die Entwicklung klassischer ABAP- bzw. moderner UI5-Applikationen oder flexibler Auswertungen nutzen kann, wie sie vom Business Warehouse (BW) bekannt sind.
Aus diesen Gründen wurden seitens der SAP die Core Data Services (CDS) entwickelt, die ich Ihnen in diesem Buch vorstelle. Dabei stehen die beiden folgenden nicht kompatiblen Ausprägungen von Core Data Services zur Verfügung:
HANA-CDS
ABAP-CDS
Sie werden nachfolgend die ABAP-CDS kennenlernen, die Sie auf ABAP-Applikationsservern entwickeln und ausführen. Bei den HANA-CDS handelt es sich um Dienste der HANA-Datenbank, die keinen ABAP-Applikationsserver benötigen. Sowohl HANA-CDS als auch ABAP-CDS besitzen jeweils separate anwendungsspezifische Programmiersprachen und Entwicklungsumgebungen.
In den ersten vier Kapiteln lernen Sie die CDS-View-Entitäten, Erweiterungen für CDS-Entitäten und CDS-Tabellenfunktionen kennen, die Ihnen die Core Data Services zur Verfügung stellen. Das fünfte Kapitel enthält das eigens für Core Data Services entwickelte Berechtigungskonzept. Im sechsten Kapitel erläutere ich Ihnen einige fortgeschrittene Techniken wie Annotationen, virtuelle Felder und eingebaute Funktionen, die in CDS-Entitäten Verwendung finden.
Abgerundet wird das Thema Core Data Services schließlich durch die Kapitel 7 und 8, in denen Sie die Implementierung flexibler Auswertungen mit dem virtuellen Datenmodell sowie die CDS-Testumgebung kennenlernen werden. Für das siebte Kapitel sind Grundkenntnisse im BW hilfreich. Das achte Kapitel ist für Entwickler gedacht, die die Vorteile automatisierter Unit-Tests auch für Core Data Services nutzen wollen.
In der zweiten Auflage wurden unter anderem Neuerungen berücksichtigt, die in der BTP zur Verfügung stehen. Die erste Auflage richtete sich an alle Leser, die noch auf On-Premise-Systemen mit einem älteren Releasestand vor 7.55 entwickelten, während die zweite Auflage Leser adressiert, die in der BTP und/oder auf aktuellen On-Premise-Systemen entwickeln. Alle Themen habe ich so ausgewählt, dass Sie diese auch mit einem BTP-Trial-Account und bei spezifischen On-Premise-Aspekten mit der ABAP-Developer-Edition 7.52 (miniSAP) nachvollziehen und selber in Ihrem System implementieren können. Bei der Drucklegung dieses Buches unterstützte die ABAP-Developer-Edition CDS-View-Entitäten noch nicht. Daher finden Sie in Abschnitten, die On-Premise-Aspekte behandeln, noch die inzwischen als veraltet gekennzeichneten CDS-Views.
Neben den in diesem Buch vorgestellten entwickelt die SAP fortlaufend neue CDS-Entitäten wie abstrakte CDS-Entitäten, CDS-Hierarchien oder externe Entitäten. Um den Umfang dieses Buches nicht zu sprengen, wurden diese Neuentwicklungen nicht mit aufgenommen.
Die Codebeispiele wurden unter Beachtung der Clean-Code-Gestaltungsrichtlinie (https://github.com/sap/styleguides) erstellt. Sie sind mit SAP NetWeaver Releases 7.55 und höher kompatibel und können im GitHub-Repository unter https://github.com/ABAP-CDS/cds_samples_auflage2 abgerufen werden. Neben der reinen Entwicklung auf dem ABAP-Applikationsserver finden Sie immer wieder Querverweise auf die Schnittstellen zwischen Core Data Services und UI5-Applikationen.
Im Text verwenden wir Kästen, um wichtige Informationen besonders hervorzuheben. Jeder Kasten ist zusätzlich mit einem Piktogramm versehen, das diesen genauer klassifiziert:
Hinweis
Hinweise bieten praktische Tipps zum Umgang mit dem jeweiligen Thema.
Beispiel
Beispiele dienen dazu, ein Thema besser zu illustrieren.
Achtung
Warnungen weisen auf mögliche Fehlerquellen oder Stolpersteine im Zusammenhang mit einem Thema hin.
Um den Lesefluss nicht zu beeinträchtigen, verwenden wir im vorliegenden Buch bei personenbezogenen Substantiven und Pronomen zwar nur die gewohnte männliche Sprachform, meinen aber gleichermaßen die weibliche.
Sämtliche in diesem Buch abgedruckten Screenshots unterliegen dem Copyright der SAP SE sowie Adobe. Alle Rechte an den Screenshots hält die SAP SE. Der Einfachheit halber haben wir im Rest des Buches darauf verzichtet, dies unter jedem Screenshot gesondert auszuweisen.
Für ein besseres Verständnis der nachfolgenden Inhalte gebe ich Ihnen zunächst einen schnellen Einblick in die Grundlagen der Core Data Services.
Die ABAP Core Data Services bestehen hauptsächlich aus verschiedenen CDS-Entitäten. CDS-Entitäten sind Entwicklungsobjekte des ABAP-Dictionarys, mit denen Sie Daten aus verschiedenen Datenbanktabellen aggregieren. Die SAP stellt unter anderem die folgenden CDS-Entitäten zur Verfügung:
CDS-Views:
Mit den inzwischen als veraltet gekennzeichneten CDS-Views formulieren Sie mit der CDS-Datendefinitionssprache Datenbank-Views. Die CDS-Datendefinitionssprache stellt eine Reihe von SQL-Funktionen wie Fallunterscheidungen, numerische Funktionen, Zeichenkettenfunktionen, JOINs, Aggregatsfunktionen und SAP-spezifische Annotationen zur Verfügung, die in klassischen Dictionary-Views nicht zugänglich sind. Das SAP-ERP-System setzt CDS-Views in Dictionary-Views und native Datenbank-Views um. Die erste Auflage dieses Buches konzentrierte sich auf CDS-Views.
CDS-View-Entitäten:
CDS-View-Entitäten sind die Nachfolger der CDS-Views. Sie stehen in der SAP BTP sowie seit dem ABAP Release 7.55 auch in On-Premise-Systemen zur Verfügung. Mit ihnen formulieren Sie in der CDS-Datendefinitionssprache Datenbank-Views. Im Vergleich zu CDS-Views fällt die Bindung an das ABAP-Dictionary weg. Das SAP-ERP-System kompiliert CDS-View-Entitäten direkt in native Datenbank-Views. Sie finden CDS-View-Entitäten in
Kapitel 2
.
CDS-Tabellenfunktionen:
CDS-Tabellenfunktionen stellen das Bindeglied zwischen der SAP-HANA-spezifischen SQLScript-Abfragesprache und ABAP dar. Mit CDS-Tabellenfunktionen verschalen Sie SQLScript-Abfragen mit ABAP-Klassen.
Kapitel 4
behandelt CDS-Tabellenfunktionen.
Neben CDS-Entitäten stellt Ihnen die SAP mit CDS-Berechtigungsrollen Integrationsmöglichkeiten für Berechtigungsprüfungen in CDS-Entitäten zur Verfügung.
Mit den ABAP Core Data Services können Sie Datenaggregationen und Berechtigungsprüfungen, die Sie ohne sie mit Open SQL und ABAP-Anweisungen implementiert haben, in die Datenbank und das ABAP-Dictionary verlagern (Code Pushdown). Durch Code Pushdown sind Datenaggregationen wesentlich flexibler nutzbar als solche in ABAP-Klassen oder ABAP-Programmen. Sie können auf CDS-Entitäten direkt in ABAP-Klassen und -Programmen, in ODATA-Services, im Data-Browser (Transaktion SE16) oder in weiteren CDS-Entitäten zugreifen. Auf der letzten Möglichkeit basiert das virtuelle Datenmodell, das Sie in Kapitel 8 kennenlernen. Durch eine Kaskade aus CDS-Entitäten gelangen Sie zu Auswertungen, die aus dem Business-Warehouse (BW) bekannt sind.
In diesem Kapitel stelle ich Ihnen einen wichtigen Bestandteil der Core Data Services vor, die CDS-View-Entitäten, und zeige Ihnen einige Problemstellungen auf, die Sie mit CDS-View-Entitäten elegant lösen können.
Wie bereits im vorherigen Kapitel erwähnt, formulieren Sie mit CDS-View-Entitäten bzw. mit CDS-Views Datenaggregationen. Beide View-Typen gehören zu den sogenannten Datenbank-Views. CDS-Views basieren dabei auf dem ABAP-Dictionary, d.h., der ABAP-Applikationsserver erstellt bei der Aktivierung für jeden CDS-View einen zugehörigen Dictionary-View. CDS-View und Dictionary-View sind zwar miteinander verknüpft, haben aber unterschiedliche Namen. Eine CDS-View-Entität ist seit Release 7.55 Nachfolger des CDS-Views. Bei CDS-View-Entitäten fällt die Bindung an das ABAP-Dictionary weg, d.h., es existieren auch keine Dictionary-Views mehr. In den nachfolgenden Abschnitten gehe ich hauptsächlich auf CDS-View-Entitäten ein und behandle CDS-Views als Randthema, um Unterschiede zu CDS-Views hervorzuheben.
Migration
Die Migration von Dictionary-basierten CDS-Views zu CDS-View-Entitäten ist mit dem Programm RUTDDLSV2MIGRATION möglich.
CDS-View-Entitäten editieren Sie in den ABAP Development Tools (ADT), die Ihnen in Abschnitt 2.1 begegnen, und besitzen eine eigene Syntax. In der ABAP-Sprachreferenz heißt diese Syntax Datendefinitionssprache (DDL), die ich Ihnen in Abschnitt 2.1.3 erläutere. In diesem Buch wird hierfür immer der Begriff CDS-Datendefinitionssprache verwendet. Diese Sprache bietet weit mehr Möglichkeiten als klassische Dictionary-Views, ist aber wie ABAP Open SQL von den Eigenheiten des Datenbanksystems unabhängig. Sie können diese Sprache deshalb sowohl auf ABAP-Applikationsservern mit einer SAP-HANA-Datenbank als auch auf ABAP-Applikationsservern mit Datenbanksystemen von Drittanbietern in derselben Art und Weise nutzen.
Die ABAP Development Tools basieren auf der Eclipse-Entwicklungsumgebung. Diese können Sie unter https://eclipse.org/downloads herunterladen. Bei der Installation wählen Sie zwischen verschiedenen Programmiersprachen (z.B. Java oder C++), wobei ABAP standardmäßig nicht enthalten ist. Um die ABAP-Development-Tools zu installieren, wählen Sie Help • Install New Software im Menü der Eclipse-IDE (Abbildung 2.1).
Abbildung 2.1: Eclipse-IDE – neue Software installieren
Im zweiten Schritt geben Sie die URL https://tools.hana.ondemand.com/latest in das Feld Work With ein, wählen die ABAP Development Tools in der Liste aus und bestätigen den Schritt mit Next.
Abbildung 2.2: Eclipse-IDE – ADT-URL
Im dritten Schritt installiert die Eclipse-IDE die ABAP Development Tools im Hintergrund. Sie brauchen die Eclipse-IDE nach der Installation nur neu zu starten und können mit der ABAP-Entwicklung beginnen.
Um Ihre erste CDS-View-Entität zu erstellen, öffnen Sie die ADT und wählen File • New • Other (siehe Abbildung 2.3).
Abbildung 2.3: CDS-View-Entität erstellen – Schritt 1
Daraufhin öffnet sich der in Abbildung 2.4 gezeigte Dialog, in dem Sie die Kategorie Core Data Services • Data Definition auswählen.
Abbildung 2.4: CDS-View-Entität erstellen – Schritt 2
Im dritten Fenster, das Sie in Abbildung 2.5 sehen, geben Sie das Entwicklungspaket (Package), den technischen Namen sowie die Beschreibung für die Entität ein.
Abbildung 2.5: CDS-View-Entität erstellen – Schritt 3
Im vierten Fenster wählen Sie die Vorlage defineViewEntity (Abbildung 2.6).
Abbildung 2.6: CDS-View-Entität erstellen – Schritt 4
Nun öffnet sich der in Abbildung 2.7 gezeigte Editor. Dieser enthält die CDS-View-Entität in der CDS-Datendefinitionssprache, die Sie, wie bereits erwähnt, in Abschnitt 2.1.3 näher kennenlernen werden.
Abbildung 2.7: ADT-Editor mit CDS-View-Entität
In ABAP-Programmen unterscheidet sich die Handhabung von CDS-View-Entitäten und klassischen Dictionary-Views nicht. Sie können CDS-View-Entitäten folgendermaßen einsetzen:
zur Definition von Strukturen oder internen Tabellen
als Datenquelle in Open SQL-SELECT-Anweisungen
Die Strukturen und Tabellen können Sie nur in ABAP-Programmen definieren, nicht jedoch im ABAP-Dictionary. Wenn Sie Strukturen oder Tabellentypen im ABAP-Dictionary mit Bezug zu CDS-Entitäten definieren möchten, müssen Sie zu diesem Zweck auf CDS-Views zurückgreifen.
Die Umsetzung von in der CDS-Datendefinitionssprache geschriebenen CDS-View-Entitäten in Datenbank-Views können Sie im ADT-Editor über einen Rechtsklick im Menüpunkt Show SQL CREATE Statement überprüfen (siehe Abbildung 2.8).
Abbildung 2.8: ADT – SQL-CREATE-Anweisung
Mit den Buttons prüfen und aktivieren Sie CDS-View-Entitäten. Sie finden die Buttons mittig in der Menüleiste (Abbildung 2.9). Bei der Aktivierung erzeugt oder ändert das System den entsprechenden Datenbank-View.
Abbildung 2.9: ADT – Menüleiste
Syntaxfehler und Warnungen sehen Sie unterhalb des Editors (Abbildung 1.7).
Abbildung 2.10: ADT – Syntaxprüfung
Nachdem Sie Ihren ersten View mit der Tastenkombination Strg + S gesichert haben, können Sie diesen mit dem Button in der Menüleiste erneut öffnen. Es erscheint der in Abbildung 2.11 gezeigte Dialog, in dem Ihre zuletzt verwendeten Objekte angezeigt werden oder in dem Sie nach bestimmten Objekten suchen können.
Abbildung 2.11: ADT – Dialog zum Öffnen von Entwicklungsobjekten
Wenn Sie ein Objekt suchen, brauchen Sie nur dessen Name in das Suchfeld einzugeben. Die Entwicklungsumgebung gibt automatisch alle Objekte aus (Programme, Klassen, Funktionsgruppen, Datendefinitionen), die dem Suchbegriff entsprechen.
Die Codebeispiele in den nachfolgenden Abschnitten basieren auf dem DMO-Namensraum, der die Abwicklung eines Flugbetriebs darstellt, sowie auf Z-Tabellen. Die Codebeispiele sollen dabei nicht die Umsetzung einer konkreten Aufgabe, sondern die Syntax und Verwendung der CDS-Datendefinitionssprache demonstrieren.
In diesem Abschnitt möchte ich Ihnen den Teil der CDS-Datendefinitionssprache vorstellen, den Sie für CDS-View-Entitäten benötigen.
Eine CDS-View-Entität leiten Sie mit den Schlüsselwörtern DEFINE VIEW ENTITY ein. An diese Schlüsselwörter schließen sich die folgenden Elemente an:
1. der technische Name der CDS-Entität, den Sie bei der Erstellung gewählt haben (Abbildung 2.5);
2. die Datenquelle, die mit AS SELECT FROM eingeleitet wird; dies kann eine einzelne Datenbanktabelle, eine Verknüpfung aus mehreren Datenbanktabellen (ein sogenannter JOIN bzw. eine Assoziation) oder wiederum ein CDS-View/eine CDS-View-Entität sein.
Wie bei Open SQL-SELECT-Anweisungen geben Sie als Nächstes die View-Felder in der Feldliste ein, die Sie mit geschweiften Klammern umschließen. Schlüsselfelder leiten Sie mit dem Schlüsselwort KEY ein. Bei Open SQL-Anweisungen verknüpft das Sonderzeichen »~« die Datenbanktabelle mit dem Feld. Bei CDS-View-Entitäten ersetzen Sie dieses Sonderzeichen durch einen Punkt. Mit dem Schlüsselwort AS können Sie dem Feld einen alternativen Namen (Aliasnamen) geben. In Listing 2.1 bekommt das Feld BOOKING_ID aus der Tabelle /DMO/A_BOOKING_D den Aliasnamen BOOKING_NUMBER.
@EndUserText.label: 'Flight booking' define view entity zcds2_flight_booking as select from /dmo/a_booking_d{ key booking_uuid, carrier_id, connection_id, flight_date, booking_id as booking_number, booking_date }
Listing 2.1: Einfache CDS-View-Entität »zcds2_flight_booking«
Feldliste mit Stern (*)
CDS-View-Entitäten unterstützen keine Feldlisten mehr, die nur aus einem Stern (*) bestehen. Nur in CDS-Views können Sie den Stern weiterhin verwenden, um alle Felder in den View zu übernehmen.
Die erste Zeile in Listing 2.1 enthält eine sogenannte Annotation. Mit Annotationen definieren Sie während der Entwicklung Metadaten der CDS-View-Entität. In Listing 2.1 enthält die Annotation @EndUserText.label die Kurzbeschreibung der CDS-View-Entität.
Wenn Sie mit CDS-Views vertraut sind, werden Sie in Listing 2.1 bemerkt haben, dass folgende Annotationen fehlen:
@AbapCatalog.sqlViewName
@AbapCatalog.compiler.compareFilter
@AbapCatalog.preserveKey
Diese Annotationen sind nur für die Generierung der Dictionary-Views relevant, die der ABAP-Applikationsserver bei CDS-Views im Hintergrund erstellt. Bei CDS-View-Entitäten benötigen Sie sie nicht mehr. Der Compiler wird Ihnen einen Fehler liefern, sobald Sie versuchen, eine der Annotationen in CDS-View-Entitäten einzufügen.
Innerhalb von CDS-View-Entitäten können Sie nicht nur bereits vorhandene Felder aus den Datenquellen übernehmen (siehe Listing 2.1), sondern auch Felder nach eigenen Regeln definieren. Wie Sie später in diesem Abschnitt noch sehen werden, habe ich diese Möglichkeit in Listing 2.19 und Listing 2.21 genutzt. Daher möchte ich Ihnen die Regeln in diesem Abschnitt schon einmal vorstellen:
1. Aggregatsfunktionen:
Maximum
max( feld )
Minimum
min( feld )
arithmetischer Mittelwert
avg( feld )
Summe
sum( feld )
Anzahl
count(*)
Die Aggregatsfunktion wird für mehrere Einträge gebildet. Daher ist bei Verwendung einer Aggregatsfunktion immer eine GROUP BY-Klausel notwendig.
2. arithmetische Ausdrücke:
Summe
feld1 + feld2
Subtraktion
feld1 − feld2
Multiplikation
feld1 * feld2
Division
feld1 / feld2
Die Operanden müssen dabei numerische Felder sein.
3. Fallunterscheidungen: Abhängig vom Wert des Vergleichsfeldes wird der Wert des resultierenden Feldes gebildet (case feld1 when wert1 then resultat1 when wert2 then resultat2 else resultat3 end). Den Wert des resultierenden Feldes können Sie dabei aus den in dieser Liste aufgeführten Regeln festlegen. Dies kann beispielsweise ein arithmetischer Ausdruck, eine Aggregatsfunktion oder eine geschachtelte Fallunterscheidung sein.
4. Konvertierungen zwischen Dictionary-Typen, beispielsweise vom Typ Dezimalzahl in den Typ Gleitkommazahl (cast( feld1 as abap.fltp )).
Listing 2.2 zeigt die Syntax der Aggregatsfunktionen Summation (sum( price )), Maximum (max( price )), Minimum (min( price)), arithmetischer Mittelwert (avg( price as abap.curr(16, 2) )) und Anzahl (count(*)):
@EndUserText.label: 'Aggregat functions' define view entity zcds2_aggregat_functions as select from /dmo/flight { key carrier_id, key connection_id, currency_code, @Semantics.amount.currencyCode : 'currency_code' sum( price ) as sum_price, @Semantics.amount.currencyCode : 'currency_code' max( price ) as max_price, @Semantics.amount.currencyCode : 'currency_code' min( price ) as min_price, @Semantics.amount.currencyCode : 'currency_code' avg( price as abap.curr(16, 2) ) as avg_price, count(*) as flight_count } group by carrier_id, connection_id, currency_code
Listing 2.2: Felddefinitionen mittels Aggregatsfunktionen
Listing 2.3 zeigt die Syntax für:
1. arithmetische Ausdrücke (seats_max – seats_occupied subtrahiert die Anzahl belegter Sitzplätze von der maximalen Sitzplatzanzahl)
2. Fallunterscheidungen (case plane_type_id when 'A340' then 4 else 2 end gibt vier Triebwerke für den Flugzeugtyp A340 aus, sonst zwei)
3. Konvertierungen (cast( price as abap.fltp ) konvertiert den Preis in eine Gleitkommazahl)
@EndUserText.label: 'Field rules' define view entity zcds2_field_rules as select from /dmo/flight{ key carrier_id, key connection_id, key flight_date, seats_max, seats_occupied, seats_max - seats_occupied as free_seats, plane_type_id, case plane_type_id when 'A340' then 4 else 2 end as engines, cast( price as abap.fltp ) as price_float }
Listing 2.3: Felddefinitionen mittels arithmetischer Ausdrücke – Fallunterscheidungen und Konvertierungen
Diese Regeln sind schachtelbar. Einen arithmetischen Ausdruck können Sie beispielsweise mit einer Aggregatsfunktion umschließen.
Wie bereits erwähnt, kann eine CDS-View-Entität mehrere Datenbanktabellen als Quellen enthalten. Zur Verknüpfung dieser Datenbanktabellen bestehen folgende Möglichkeiten:
INNER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN
CROSS JOIN
Assoziation
Die Ergebnismenge weist jeweils folgenden Inhalt auf: