SAP-Praxishandbuch ABAP Core Data Services (CDS) - 2., erweiterte Auflage - Johannes Gerbershagen - E-Book

SAP-Praxishandbuch ABAP Core Data Services (CDS) - 2., erweiterte Auflage E-Book

Gerbershagen Johannes

0,0
19,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

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.

  • Core Data Services in S/4HANA On-Premise und in der BTP
  • Code Pushdown
  • Das virtuelle Datenmodell als Alternative zum BW
  • Viele Übungsprogramme für Anfänger und Fortgeschrittene

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 148

Veröffentlichungsjahr: 2025

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



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].

Inhaltsverzeichnis

Cover
Titelseite
Copyright/Impressum
Vorwort
1 Kurze Einführung in ABAP Core Data Services
2 CDS-View-Entitäten
2.1 ABAP Development Tools (ADT)
2.2 Code-to-Data-Paradigma
2.3 Einsatzszenarien für CDS-View-Entitäten
3 Erweiterungen für CDS-Entitäten
3.1 Erweiterungskategorien
3.2 Erweiterungen für CDS-Views
3.3 Erweiterungen für CDS-View-Entitäten
3.4 Aggregatsfunktionen
3.5 Assoziationen
3.6 Vereinigungsmengen
4 CDS-Tabellenfunktionen
4.1 Parameter
4.2 Implementierung
5 Berechtigungskonzept
5.1 CDS-Views in On-Premise-Systemen
5.2 CDS-View-Entitäten in der BTP
6 Fortgeschrittene Techniken
6.1 Annotationen und Kommentare
6.2 Metadatenerweiterungen
6.3 Eingebaute Funktionen
6.4 CDS-Views mit virtuellen Feldern
7 Virtuelles Datenmodell
7.1 CDS-Views in On-Premise-Systemen
7.2 CDS-View-Entitäten in der BTP
8 CDS-Testumgebung
8.1 Unit-Tests mit ABAP Unit
9 Fazit
10 Anhang
10.1 ABAP-Annotationen
10.2 Framework-spezifische Annotationen
A Der Autor
B Disclaimer

Willkommen bei Espresso Tutorials!

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/.

Eine Auswahl weiterer Bücher von Espresso Tutorials:

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

Vorwort

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.

Die Form der Anrede

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.

Hinweis zum Urheberrecht

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.

1   Kurze Einführung in ABAP Core Data Services

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.

2   CDS-View-Entitäten

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.

2.1   ABAP Development Tools (ADT)

2.1.1   Installation

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.

2.1.2   Erste CDS-View-Entität erstellen

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.

2.1.3   CDS-Datendefinitionssprache

Codebeispiele

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.

Syntax Datendefinition

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.

Annotationen im Vergleich zu CDS-Views

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.

Felddefinitionen

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.

Verknüpfungen aus mehreren Datenbanktabellen

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: