Features-Vergleich: ABAP Dictionary Views vs. CDS Views
"ABAP Dictionary Views waren die ersten Views, welche ich während meines Karrierenstarts kennengelernt habe." Wahrscheinlich gilt diese Aussage nicht nur für mich, sondern auch für viele andere Bewohner der Welt von SE80. In der altbekannten SE11 werden oft noch ABAP Dictionary Views für unterschiedliche Reports definiert.
Mit SAP HANA jedoch ändert sich dieser Grundsatz. Wie bereits schon in unserer mindsquare KnowHow-Datenbank beschrieben, wurde mit SAP HANA die sog. Core Data Services (oder kurz: CDS) seit ABAP 7.40 SP05 im Frühjahr 2014 zum ersten Mal eingeführt. Wenn Sie den Beitrag noch nicht kennen, können Sie diesen unter folgendem Link finden. Auch wenn im verlinktem Artikel hauptsächlich die HANA CDS beschrieben wird, so existieren viele Überschneidungen zu ABAP CDS.
CDS Views – Das Paradigmenwechsel
Mit CDS gehen auch die Core Data Services Views (kurz: CDS Views) einher. Es existieren zwei Ausprägungen von CDS Views: als ABAP CDS Views und HANA CDS Views. In diesem Artikel werde ich jedoch nicht in die weitere Differenzierung beider Versionen eingehen. Diese werden in einem anderem Beitrag näher erläutert. Besonders seit SAP HANA 1.0 SPS 10 zeigt das Softwarehaus in Walldorf mithilfe neuer Features die Entschlossenheit, dass mehr Fokus auf CDS gelegt wird (mehr dazu im offiziellen Blog der SAP).
Doch was hat die SAP nun dazu bewegt, soviele Ressourcen in die Hand zu nehmen und in diese Entwicklung zu investieren? Die Antwort hierzu ist nahezu simpel wie auch genial: Bisher galt das Credo, dass mithilfe von gut definierten SQL-Abfragen ein großes Datenpaket von der Datenbank abholt und auf der Applikationsebene in ein für uns interessantes Ergebnis verarbeitet wird. Nun folgt die SAP mithilfe von HANA ein neues Paradigma. Es sollten möglichst viele Kalkulationen bereits auf der Datenbank geschehen, sodass schon nahezu fertige Ergebnisse geliefert werden. Der Vorteil? Deutlicher Performancegewinn trotz gleichen Aufwands des Entwicklers. Das Stichwort? Code Pushdown. Und mithilfe welcher Komponene kann das erreicht werden? Oft mit CDS Views. Mehr zur Performanceoptimierung können Sie aus folgendem Beitrag entnehmen.
Lange Rede kurzer Sinn: Was sind nun die technischen Unterschiede zwischen diesem neuen Ansatz und dem Altbekannten?
Erstellung der View
ABAP Dictionary Views werden über die SE11 bzw. dem ABAP Data Dictionary (DDIC) definiert. Anders sieht es bei CDS Views aus: Da spezifische DDL source files erzeugt werden müssen, wird die Entwicklungsumgebung Eclipse benötigt. Sie können im folgenden Beitrag unter Schritt 3 “Eclipse einrichten” nachlesen, wie Eclipse eingerichtet wird.
Datenbanken
Sowohl ABAP Dictionary Views als auch CDS Views sind mit allen Datenbanken kompatibel. Es folgt nun ein kurzer aber selbstverständlicher Hinweis: Die vorherige Aussage gilt nicht für HANA CDS Views. Es wird die XS Engine benötigt, welche nur in Kombination mit einer HANA DB erhältlich ist.
UNION Befehl
Views werden unter anderem dazu eingesetzt, um oft verwendete Selektionen abzuspeichern, welche Joins über mehrere Tabellen enthalten. Durch die Verwendung von CDS Views können auch kompliziertere Joins abgedeckt werden. Ein besonderer Befehl hierbei stellt UNION dar, mit welchem die Ergebnismengen zweier SELECT Abfragen kombiniert werden können.
Nested Views
Wie bereits im Absatz vorher beschrieben, bestehen Views aus den Ergebnissen von vorbereiteten/gespeicherten Selektionsabfragen. CDS Views tragen aber diesen Gedanken auf die nächste Ebene: Es können “Views von Views” erstellt werden. Dies bedeutet nichts weiteres, als dass nicht Spalten aus einzelnen Tabellen selektiert werden können, sondern auch aus bereits bestehenden Views.
Funktionen
Nun nähern wir uns eines der interessantesten Features von SAP HANA und auch den größten Unterschied zwischen ABAP Dictionary Views und CDS Views: Es können Funktionen direkt auf Datenbankebene verwendet werden. Funktionen innerhalb von CDS Views erlauben es unterschiedliche Operationen auf ein (Teil-)Ergebnis anwenden zu können bevor es in Applikationsebene kommt. Es mag vielleicht unspektakulär klingen, von daher folgen nun wenige Beispiele zur Erläuterung:
Mittels der Funktion DATS_DAYS_BETWEEN(date1,date2) lässt sich z.B. die Menge der Tage zwischen date1 und date2 sehr komfortabel berechnen. Ein weiteres nützliches Beispiel wäre die Funktion CURRENCY_CONVERSION( p1 => a1, p2 => a2, … ). Mittels dieser lassen sich beispielsweise in einem Anwendungsszenario unterschiedliche Warenwerte direkt in eine gemeinsame Zielwährung konvertieren, um somit Vergleichbarkeit zu schaffen. An dieser Stelle erinnere ich nochmals: Diese Operationen/Kalkulationen finden bereits in der Datenbank statt!
Fazit
Wie Sie hoffentlich erkennen können, ist dieses Thema nicht gerade trivial. Wenn es besonders um die Frage geht, wie die HANA DB verwendet werden muss, um den oft nachgesagten Performancegewinn ausschöpfen zu können, rücken die Core Data Services und dessen Views immer weiter in den Fokus. Um nun zurück auf den Titel dieses Beitrages zu kommen, hoffe ich, dass meine Erläuterungen eindeutig genug sind, um die CDS Views als klare Sieger hervorzuheben! Ich bin weiterhin gespannt, wie die SAP dieses Produkt in Zukunft noch weiterentwickeln wird.
Konnte ich Ihr Interesse wecken und Sie benötigen zufällig eine Beratung bezüglich den CDS Views? Dann sprechen Sie uns ruhig an!
In diesem halbtägigen Online-Learning erhalten ABAP-Entwicklerinnen und -Entwickler eine Einführung in die Grundlagen von ABAP Core Data Services (CDS). Sie bekommen alle grundlegenden Informationen rund um das neue S/4HANA-Programmiermodell vermittelt und werden befähigt, selbst CDS Views zu erstellen.