Die Macht der Metadaten
ABAP Core Data Services (CDS-Views) bilden den zentralen Baustein bei der Verwendung von Embedded Analytics auf S/4HANA. In den CDS-Views können sogenannte Annotationen verwendet werden, welche die View um Metadaten anreichern. Diese Metadaten erfüllen verschiedene Zwecke. Beispielsweise:
- dienen sie der semantischen Beschreibung des Datenmodells.
- definieren sie, ob CDS-View einer Berechtigungsprüfung unterliegt.
- liefern sie wichtige Metadaten für aufsetzende Frameworks wie Fiori.
Mit anderen Worten, CDS-Annotationen erweitern eine CDS-View um Kontext und Bedeutung, die zur Laufzeit ausgewertet werden können. Man unterscheidet grob zwischen View-Annotationen und Element-Annotationen. Erstere beziehen sich auf die gesamte CDS-View, während sich Element-Annotationen auf einzelne Felder (Elemente) innerhalb der View beziehen.
SAP bietet einen umfangreichen Standard an Annotationen, deren Erkennungszeichen das vorangestellte @-Zeichen ist. Je nach Verwendungszweck sind die Annotationen in semantische Namenräumen unterteilt, wie z.B.:
- @AbapCatalog – technische Einstellungen und Informationen für das ABAP Dictionary
- @ObjectModel – Hinweise zur OData-/ABAP-Runtime, z.B. das Verhalten von Assoziationen
- @UI – UI-relevante Einstellungen, insbesondere für Fiori und SAP UI5-Anwendungen
User Defined Annotations: Flexibilität über den SAP-Standard hinaus
Jedes Unternehmen hat besondere Anforderungen, und manchmal reicht der Standard nicht aus, um diese im Datenmodell abbilden zu können. Hier kommen User Defined Annotations (benutzerdefinierte Annotationen) ins Spiel, die maßgeschneidert auf nahezu jeden Bedarf entwickelt werden können.
Für das Unternehmen liegt darin ein strategischer Vorteil: Man gewinnt die Flexibilität, das System über den SAP-Standard hinaus zu erweitern, um spezifische Kundenanforderungen schnell und gezielt zu erfüllen – ein entscheidender Pluspunkt um das operative Reporting in S/4HANA individuell anpassen zu können.
Der Weg zur ersten User Defined Annotation
Eine User Defined Annotation wird als Annotationsdefinition angelegt, welches ein eigenständiges CDS-Objekt ist.
Darin legt man fest, wie die neue Annotation heißt, welche Werte oder Strukturen sie aufnehmen kann und wo sie verwendet werden darf. Letzteres wird durch den Scope der Annotation bestimmt. Mit @Scope definiert man die erlaubten Zielbereiche wie z.B.:
- #VIEW – für View-Annotationen
- #ELEMENT – für einzelne Felder
- #ASSOCIATION – für Assoziationen
- #PARAMETER – für Parameter einer View.
Die Syntax einer Annotation ähnelt der einer „normalen“ CDS-View. Schlüsselwort der Annotationsdefinition ist DEFINE ANNOTATION, auf das der Namen der Annotation folgt. Innerhalb der Definition können Datentypen wie String, Integer, Boolean etc. festgelegt werden. Diese können ggf. mit Enumerationswerten eingeschränkt oder Standardwerten (Default Values) vorbelegt werden.
Im Ergebnis kennt CDS drei grundsätzliche Annotationstypen:
- Skalare Annotation: Eine einfache Annotation mit einem einzelnen Wert (z.B. eine Zahl, ein Text oder boolescher Wert).
- Strukturierte Annotation: Eine Annotation, die aus mehreren Unterelementen besteht.
- Array-Annotation: Eine Annotation, die einen Array (Liste) von Werten oder Strukturen aufnehmen kann – nützlich, um dieselbe Annotation mehrfach an einem Objekt zu verwenden.
Bei der Definition einer eigenen Annotation müssen Scope und Syntax der Vorgabe entsprechen, damit die Annotation später in CDS-Views verwendet werden kann. Eine Annotationsdefinition wird ähnlich wie eine CDS-View beim Aktivieren ins ABAP Dictionary übernommen. Hier ist zu beachten, dass der Name der Annotation (Main Annotation) und der Name des DDL-Quellcodes übereinstimmen muss, da jede Annotation ein eigenständiges Repository-Objekt darstellt. Analog zu anderen kundeneigenen Objekten sollte ein kundenspezifischer Namespace für eigene Annotationen verwenden werden, um Verwechslungen mit SAP-Annotationen zu vermeiden.
Modul-Zuordnung einer CDS-View
Nehmen wir an, ein Unternehmen möchte seine CDS-Views besser organisieren und sofort erkennbar machen, zu welchem SAP-Modul eine View inhaltlich gehört. SAP liefert hierfür keine eigene Standard-Annotation – daher kann mit einer User Defined Annotation selbst Abhilfe geschaffen werden.
Als Beispiel definieren wir eine Annotation im kundeneigenen Namensraum, die eine Modulzuordnung für eine CDS-View ermöglicht. Diese Annotation hat den Scope #VIEW, da sie auf View-Ebene verwendet werden soll. Sie könnte als Wert die Kennungen der verwendeten Module erhalten, wie beispielsweise die Module FI, CO, SD und MM. Weiter kann in der Annotationsdefinition festgelegt werden, dass nur diese vier Module als Ausprägungen (Enumerations) erlaubte sind, um eine konsistente Verwendung sicherzustellen.
Nach der Definition kann man eine CDS-View aus dem Bereich Finance – etwa für einen CDS-basierten Finanzreport – wie folgt annotieren:
- @MyCompany.Module: ‚FI‚.
Damit ist im Metadatenbereich der View eindeutig vermerkt, dass diese View dem Module Finance (FI) zuzuordnen ist.
Dieses zusätzliche Kontextwissen ist vor allem in größeren Entwicklungsprojekten hilfreich: Entwickler und Fachexperten erkennen direkt am CDS-Artefakt, aus welchem Geschäftsbereich die definierten Daten stammen. Auch Tools oder Dokumentationen können diese Information auslesen, um z.B. Berichte nach Modulzugehörigkeit zu gruppieren oder Filtermöglichkeiten anzubieten. Die selbst definierte Annotation erhöht somit die Selbstbeschreibung des Datenmodells. Auf diese Weise stehen solche Zusatzinformationen unmittelbar im Datenmodell zur Verfügung – ohne dass man dafür auf externe Dokumentionen oder Namenskonventionen angewiesen ist.
Fazit
CDS-Annotationen sind ein zentrales Element bei der Verwendung von ABAP Core Data Services. Die Annotationen nehmen einen direkten Einfluss auf die CDS-Views und bieten eine Vielzahl an Funktionen. SAP bietet im Standard ein umfangreiches Angebot an Annotationen, welche den CDS-Views wichtige Metadaten hinzufügen und so den richtigen Zweck der CDS-View im Embedded Analytics Universum mitgeben. Neben diesen Standard-Annotation können Entwickler kundenspezifische Annotationen definieren und in Embedded Analytics Anwendungen einbinden, um diese um projektspezifische Metadaten zu erweitern. Es ist jedoch wichtig zu beachten, dass i.d.R. eine User Defined Annotation nur sinnvoll ist, wenn es keine Standard-Annotation gibt.
Richtig eingesetzt, erhöhen sie die Selbstbeschreibung und Flexibilität von CDS-Datenmodellen und helfen, konzeptionelle Informationen dort zu verankern, wo die Daten definiert sind – nämlich direkt in der CDS-View.
Haben Sie spezielle Anforderungen an Ihre SAP S/4HANA Analytics?
Kontaktieren Sie unsere Experten – wir zeigen Ihnen, wie Sie mit User Defined Annotations Ihr Reporting optimal erweitern!
Webinare zu Embedded Analytics
Success Story: Finanzreporting mit Echtzeit-Berichterstattung direkt aus SAP S/4HANA bei Munich Re
Die Munich Re ist ein global führender Anbieter von Rückversicherung, Erstversicherung und versicherungsnahen Risikolösungen. Um den Abschlussprozess bei Finanz- und Buchhaltungsprozessen zu optimieren, wurde die Einführung eines Finanzreportings direkt aus SAP S/4HANA beschlossen.
Wie dies genau realisiert wurde und welche Vorteile sich für die Munich Re ergeben, erfahren Sie in der Success Story.