Was sind ABAP CDS Views
ABAP CDS Views können als erweitere Dictionary Views betrachtet werden, in die mit Hilfe von sog. Annotationen zusätzliche Funktionalitäten eingebaut werden können. In CDS Views ist es bspw. möglich, Kalkulationen direkt auf der Datenbankebene durchzuführen, wodurch der Code Pushdown umgesetzt wird. Das bedeutet, dass ein Teil der Datenverarbeitung bereits auf der Datenbankebene ausgeführt wird, wodurch weniger Daten Richtung AS (Application Server) transportiert werden müssen und die Performance der Applikationen gesteigert werden kann.
Verwendung von CDS Views
CDS Views können als einfache Datengrundlage für Reports dienen. Aber CDS Views können mehr! Über die Annotation @OData.publish: true lässt sich im Handumdrehen ein oData Service erstellen, der bspw. von einer SAPUI5 Anwendung konsumiert werden kann. Mit Hilfe von @UI Annotationen kann Einfluss auf die Metadaten des Services genommen werden, welche wiederum von den SAPUI5 Controls genutzt werden, um bspw. den Spaltennamen in einer Tabelle zu generieren. SAP setzt mit den Annotationen u.a. das Ziel der Low-Code App Entwicklung um - mit wenig Quellcode und viel Magie, schnell Ergebnisse generieren.
Entwicklungsumgebung einrichten
CDS Views können über Eclipse angelegt und bearbeitet werden. Eclipse könnt ihr euch unter https://www.eclipse.org/downloads/ runterladen. Im Anschluss müssen noch die ABAP Dev. Tools installiert werden. Dafür öffnet ihr über Help->Install New Software den Installations Wizard.
Im Feld „Work with:“ tragt ihr folgenden Link ein https://tools.hana.ondemand.com/latest, selektiert alle Module und startet die Installation. Jetzt braucht ihr noch eine Verbindung zu eurem SAP BackEnd. Dafür öffnet ihr über File -> New -> ABAP Project den Wizard und legt eine neue Systemverbindung an.
Die Daten, die hier eingetragen werden müssen, findet ihr im SAP Logon hinter den jeweiligen Verbindungseigenschaften. Im Project Explorer könnt ihr euch, wie in der SE80 auch, in euren Paketen bewegen. Wer will, kann die SE80 vergessen und fortan nur noch hier programmieren.
CDS View Getting Started
CDS Views kannst du wie jedes andere Workbench Objekt anlegen - Rechtsklicks auf dein Paket-> New -> Other ABAP Repository Object:
Data Definition suchen, auswählen und Next.
Namen und Beschreibung vergeben.
Transport auswählen.
Und zum Schluss ein Template auswählen. Wir beschränken uns an dieser Stelle erstmal auf einen einfachen View. Aber über CDS Views könnt ihr bspw. auch hierarchische Strukturen abbilden oder vorhandene Views in fremden Namensräumen erweitern.
Ihr startet dann mit einem leeren View.
Bevor ihr den View das erste Mal aktivieren könnt, braucht er einen sqlViewName. Unter diesem Namen wird der View gespeichert. Den Namen könnt ihr im Nachgang nicht mehr ändern, also wählt weise. Und natürlich braucht ihr eine Datenquelle. Als Datenquelle könnt ihr Tabellen, Views oder andere CDS Views angeben. Zwischen den geschweiften Klammern könnt ihr dann die Felder der Datenquelle angeben, die ihr im View mitnehmen wollt. Über STRG + Leertaste könnt ihr in Eclipse die Autovervollständigung nutzen.
CDS Views brauchen wie jede Tabelle auch mind. ein Key Element. Den Spaltennamen könnt ihr mit dem Zusatz as verändern.
Jetzt könnt ihr den View aktivieren und euch mit F8 das Ergebnis anschauen. Was dann so aussehen sollte:
Soweit so gut. Jetzt können wir uns schonmal Daten einer einzelnen Tabelle anzeigen lassen.
Neues Szenario:
Unsere Firma stellt den Airlines jeden Monat eine Rechnung. Der Rechnungsbetrag richtet sich nach der geflogenen Strecke. Für jede Verbindung gibt es unterschiedliche Preise. Wir müssen also Informationen aus drei Tabellen zusammenbringen, die Strecken aufsummieren und die Daten nach Flugdatum einschränken.
Um die Daten unterschiedlicher Tabellen zusammen zu bringen, können wir Associations verwenden. Normale JOINs funktionieren auch. Associations haben aber den Vorteil, dass die Daten erst bei Bedarf geladen werden. Performancetechnisch kann das einen Unterschied machen. Associations sind also „kluge“ JOINs und funktionieren quasi gleich. Wir verbinden die Tabellen über ihre Schlüsselfelder, geben der Verbindung einen Namen und sind dann in der Lage direkt auf die Elemente in der Tabelle zuzugreifen.
Das ganze Konstrukt sieht dann wie folgt aus: Wir definieren die Eigenschaften des Views, dann die Associations, geben an welche Felder angezeigt werden sollen, bzw. ob auf den Felder Berechnungen durchgeführt werden sollen, und zum Schluss gruppieren wir und grenzen die Selektionsmenge ein.
Das Ergebnis sieht dann so aus: