
036: Core Data Service [Basics] - Analysis
Wo findest du eigentlich weitere Informationen zu einem Core Data Service in ABAP, wenn es um die Analyse von bestehenden Objekten geht? Schauen wir uns dazu verschiedene Tools an.
Inhaltsverzeichnis
Einleitung
In der letzten Folge hatten wir uns mit der Anlage und der Modellierung vom Consumption Layer beschäftigt. Dabei entsteht im Laufe der Zeit und mit den unterschiedlichen Schichten des virtuellen Datenelements auch die Komplexität im Datenmodell. Meist für den Ersteller sehr einfach zu verstehen, aber für jemanden der sich einarbeiten soll, kann die Komplexität viel Zeit in Anspruch nehmen. Daher schauen wir uns in dieser Folge verschiedene Werkzeuge in den ABAP Development Tools an, die dir bei der Analyse unter die Arme greifen sollen.
Outline
Bereits in der Standard Sicht ist der View "Outline" geöffnet. Hier werden in verschiedenen Use-Cases die Objekte und die Bestandteile aufgelöst. Bei einer Klasse sehen wir die Klassen, die Methoden und ihre Sichtbarkeiten, sowie eventuelle lokale Klassen und Testklassen. Normalerweise ist der View unter dem "Project Explorer", aber du kannst diesen flexibel einrichten, so wie du es brauchst. Bei einem Core Data Service sehen wir im oberen Teil den Namen der Entität, dann den SELECT, die Tabellen und Elemente. Da ein View sehr lang werden kann, ist eine Navigation zu den einzelnen Bestandteilen sehr praktisch und erhöht unsere Arbeitsgeschwindigkeit. Die Elemente haben jeweils eigene Ikonen für Schlüssel, Felder aus der Datenbank und virtuelle Elemente, die wir lokal definiert haben. Klicken wir auf ein Element, so navigieren wir im CDS View und alle Bestandteile des Elements werden hervorgehoben.
CDS Navigator
Ein weiteres hilfreiches und wichtiges Werkzeug in den ABAP Developments Tools ist der CDS Navigator. In der Standardansicht ist dieser nicht sichtbar und muss erst über die Tools eingeblendet werden. Über die Lupe starten wir die Suche und können über das Keyword "CDS" bereits den View finden und per Klick in die aktuelle Sicht einbetten. Wo du den View am Ende anzeigst, bleibt dir überlassen, im Standard zeigen wir diesen neben der Outline und dem Relation Explorer an, direkt unter dem Project Explorer an. In der Grundlage gibt der CDS Navigator erst einmal einen Context zum aktuellen View, wie Erweiterungen, Metadata Extensions, Access Controls oder andere Objekte. Über die Buttonleiste stehen uns noch weitere Funktionen und Tools zur Verfügung, die wir für die weitere Analyse verwenden können.
Active Annotations
Schauen wir uns einmal die aktiven Annotationen im View an. Dazu wählen wir den Button "Active Annotations" und der passende View wird in Eclipse geladen. Die Aufbereitung der Informationen kann etwas in Anspruch nehmen. Auf den ersten Blick sehen wir alle Annotationen, die nun im View zur Verfügung stehen. Hier sehen wir auch Annotationen wie die Semantics, die im eigentlichen View gar nicht vorhanden sind, aber durch die Vererbung aus einem der unteren Views kommen. In diesem Fall von den Positionen, wie wir im hinteren Teil unter "Source" sehen. Weiterhin stehen die verschiedenen Annotationen aus anderen Views, aber auch lokal zur Verfügung.
Möchtest du auf dieser Ebene weniger Informationen haben oder gibt es störende Annotationen, dann kannst du diese auch auf diesem Level deaktivieren. Über die zusätzliche Annotation "ignorePropagatedAnnotations" können wir die Vererbung deaktivieren. Dabei erhalten wir nun eine Fehlermeldung, dass unserem Feld "PositionPrice" nun die relevante Information der Währung fehlt. Diese müssen wir nun auf dieser Ebene nachpflegen. Dazu erweitern wir die Annotation aus dem Bereich Semantics und ergänzen die fehlende Information. Im Anschluss aktivieren wir den Core Data Service, der sich nun wieder kompilieren lässt. Gehen wir nun in den View für die Annotationen und drücken den "Refresh" Button, erst dann werden die Annotationen erneut ermittelt. Nach der Neuermittlung stehen nur noch lokale Annotationen zur Verfügung. Für die Analyse von Fehlern solltest du daher hin und wieder in den View schauen, ob die richtigen Annotationen geladen werden oder ob die unteren Annotationen ignoriert werden, weil die entsprechende Annotation gesetzt wurde.
Dependency Analyzer
Starten wir im nächsten Schritt das Tool "Dependency Analyzer" in der Toolbar des CDS Navigator. Das Tool beginnt direkt mit der Analyse des aktuellen Views, was etwas dauern kann. Wir erhalten dann einen neuen Tab mit dem Ergebnis der Analyse und im unteren Bereich finden wir drei Reiter mit weiteren Sichten auf die Daten.
Als erste Sicht erhalten wir einen hierarchischen Baum der Abhängigkeiten. Ausgehend vom View, werden alle weiteren Objekte bis zur jeweiligen Datenbank nach unten aufgeschlüsselt. Daneben finden wir dann weitere Informationen wie die Relation auf SQL Ebene, den Typen, den Namen der CDS Entität, ob das Objekt auf der Datenbank angelegt wurde und ob es ein Access Control, also eine Berechtigungsprüfung, gibt.
Daneben gibt es den SQL Dependency Graph. Der View stellt alle Informationen in hierarchischer Reihenfolge nach ihren Abhängigkeiten dar. Dabei findest du auf der obersten Ebene den Consumption View und auf der untersten Ebene die entsprechenden Tabellen, die vorhanden sind. Im Menü oben findest du einen Button zum Umschalten zwischen den Entitätsnamen und den eigentlichen Namen der Objekte. Diese Funktion schauen wir uns später in einem komplexeren View noch einmal genauer an. Über die Navigation im View oder an der Seite kannst du den Ausschnitt verschieben. Wenn du im View auf ein Objekt klickst, erhältst du zunächst verschiedene Informationen wie den Entitätsnamen, den Objekttyp und die Art der Verbindung. Per Rechtsklick kannst du das Kontextmenü aufrufen und das Objekt beispielsweise direkt öffnen, um weitere Informationen zu erhalten.
Auf der dritten Ebene findest du die Complexity Metrics. Dort erhältst du Informationen zur Komplexität des aktuellen Views, wie zum Beispiel zu geladenen Datenbanktabellen oder Views, die im Viewstack vorhanden sind. Daneben werden komplexe SQL-Operationen abgebildet, die zur Laufzeit beitragen können. Weitere Informationen zur Performance sind beispielsweise aufgerufene Funktionen, durchgeführte Casts oder entsprechende Case-Statements in der Hierarchie. Dies sind alles Informationen, welche die Performance später maßgeblich beeinflussen können.
Komplexer View
Schauen wir uns im nächsten Schritt einmal einen komplexeren View aus dem Standard an. Dazu öffnen wir über Strg + SHIFT + A das Objekt C_BusinessPartnerTP_2. Hier handelt es sich um die zweite Version des Business Partners für die entsprechende Anwendung. Im CDS-Navigator sehen wir nun weitere Objekte, wie zum Beispiel die Metadata Extension oder das Access Control. Durch einen Klick auf das entsprechende Objekt gelangen wir direkt zur Erweiterung des Views. So können wir uns beispielsweise das Access Control anschauen oder, wie im zweiten Schritt, die Metadata Extension, die ebenfalls zu diesem View gehört.
Laden wir nun im nächsten Schritt den Dependency Analyzer. Die Analyse ist entsprechend komplex, da der View sehr groß ist. Wenn wir den Baum betrachten, sehen wir eine sehr komplexe Struktur aus vielen Tabellen und Views, die darin vorhanden sind. Komplexe Views wie der Business-Partner sind deshalb nicht auf den ersten Blick zu überschauen, sondern müssen im Detail analysiert werden. Die verschiedenen Entitäten und Tabellen können dabei eine beträchtliche Komplexität bewirken. Visualisieren wir uns nun den kompletten Baum im Dependency Graph. Dabei stellen wir sofort fest, dass der View sehr unübersichtlich ist und eine hohe Komplexität herrscht. Innerhalb des Views finden wir zum Beispiel auch den I_BusinessPartner, der die Grundlage für den Business-Partner bildet. Dieser basiert auf der Tabelle BUT000 und ist der entsprechende View, den man verwenden sollte, wenn man mit dem Business-Partner arbeitet.
Schauen wir uns etwas weiter drüben in der Ansicht eine spezielle Konstellation an. Hier sehen wir einen Union über verschiedene Daten, die in einem View dargestellt wird. Dabei werden die Adressdaten von natürlichen Personen und von Unternehmen zusammengeführt - dafür verwendet der Standard eine Union-Operation. Schauen wir uns dazu den entsprechenden View an und öffnen diesen in den ABAP Development Tools (ADT). Dort sehen wir als Erstes den Select auf den ersten Teil der Adressen; im unteren Teil findest du den Union und den entsprechenden Select auf die zweite Datenmenge, die zusammengeführt wird. Damit entsteht eine gemeinsame Ergebnismenge aus den Adressen beider Welten, zusammengeführt in einem neuen View.
Gehen wir noch einmal zurück zur Übersicht und schauen uns die zwei Views im oberen Bereich an. Hier sehen wir, dass diese View-Entitäten als Namen haben. Schalten wir nun die Ansicht einmal um, erhalten wir den eher kryptischen Namen des entsprechenden SQL-Views. Das Umschalten im View erlaubt uns sowohl die Anzeige des SQL-View-Namens als auch die Anzeige der eigentlichen Entität. Was genau der Unterschied zwischen dem SQL-Namen und dem Entitätsnamen ist, werden wir uns in der nächsten Folge einmal genauer anschauen.
Im letzten Schritt schauen wir uns noch einmal die Complexity Metrics an. Dabei fällt die große Anzahl an Datenbanktabellen und Views auf, die verwendet werden. Insgesamt haben wir neun Group-By-Klauseln in den verschiedenen Views. Zudem sehen wir eine hohe Anzahl an Cast-Operationen und Case-Statements. Bei einem so komplexen View solltest du deshalb unbedingt auf das Thema Performance achten.
Zusammenfassung
In dieser Folge haben wir uns das Thema Analyse von Core Data Services im Detail angeschaut. Ab der Ebene des Consumption Views wird die Analyse bestehender Views sehr schnell komplex. Hier helfen dir verschiedene Werkzeuge und Sichten innerhalb der ABAP Development Tools (ADT) in Eclipse. Mithilfe dieser Tools erhältst du zunächst einen schnellen Überblick, kannst aber auch fundierte Aussagen über die Komplexität des jeweiligen Views treffen. Damit sind wir am Ende dieser Folge angelangt. Wir hoffen, dass du nun einen besseren Überblick darüber hast, wie du deine entsprechenden Core Data Services analysieren kannst. Danke fürs Zuschauen und bis zum nächsten Mal.
YouTube
Video