ebook img

Core Data Services für ABAP PDF

35 Pages·2017·5.63 MB·German
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Core Data Services für ABAP

SAP-Wissen aus erster Hand. Leseprobe Mit den Core Data Services (CDS) für ABAP verbessern Sie den Datenbankzugriff und die Performance Ihrer SAP-Anwendun- gen. Dieses Buch zeigt Ihnen, wie Sie CDS analysieren und in analytischen oder transaktionalen Anwendungen verwenden. In der Leseprobe lernen Sie, wie Sie eigene CDS-Modelle für Ihre Anwendungsdaten erstellen. »CDS-Modelle für Anwendungsdaten« »Einleitung« Inhaltsverzeichnis Index Die Autoren Leseprobe weiterempfehlen Renzo Colle, Ralf Dentzer, Jan Hrastnik Core Data Services für ABAP 443 Seiten, gebunden, Dezember 2017 79,90 Euro, ISBN 978-3-8362-5902-6 www.sap-press.de/4487 5902.book Seite 173 Montag, 4. Dezember 2017 3:38 15 Kapitel 6 CDS-Modelle für Anwendungsdaten Core Data Services erlauben die Modellierung semantischer Eigenschaften von Anwendungsdaten, die weit über die Möglichkeiten herkömmlicher Datenbank-Views hinausgehen. Zusammen mit einer modernen techni- 6 schen Infrastruktur erleichtert dies die Entwicklung neuer Applikationen. In den bisherigen Kapiteln haben Sie gesehen, wie Sie CDS-Views definieren und in ABAP-Programmen verwenden. Damit können Sie SQL-Mengenope- rationen und komplexe Berechnungen direkt in SAP HANA ausführen und profitieren von den SAP-HANA-Fähigkeiten zur Verarbeitung großer Da- tenmengen. Zudem können Sie Ihre Anfragen mithilfe der Pfadnotation und Assoziationen bequem formulieren. Mit diesem Vorgehen bewegen Sie sich aber immer noch im Rahmen des klassischen Programmiermodells für Anwendungen, bei dem sehr viele Details durch individuelle Program- mierung immer wieder neu implementiert werden müssen. Neue Infrastrukturkomponenten im SAP NetWeaver Application Server (AS ABAP) und semantische Metadaten an CDS-Views ermöglichen dage- gen ein neues Programmiermodell. In diesem wird die individuelle Pro- grammierung auf ein Minimum reduziert. Stattdessen werden fehlerträch- tige, wiederkehrende Programmteile durch die Infrastruktur ausgeführt. Die Steuerung übernehmen dabei betriebswirtschaftlich motivierte se- mantische Annotationen der CDS-Views. Der erste Abschnitt dieses Kapitels gibt einen kurzen Überblick der Anwen- Aufbau des Kapitels dungsarchitektur und des Programmiermodells in SAP S/4HANA. Die weite- ren Abschnitte stellen verschiedene Metainformationen für Anwendungs- daten vor, die von der neuen Anwendungsinfrastruktur ausgewertet werden. Sie behandeln folgende wichtige Aspekte: (cid:2) Feldbezeichner (cid:2) Feldeigenschaften wie Mengen und Beträge, Aggregationsverhalten, Systemzeiten, Texte in natürlicher Sprache (cid:2) Fremdschlüsselbeziehungen (cid:2) Textbeziehungen 173 5902.book Seite 174 Montag, 4. Dezember 2017 3:38 15 5902.book Seite 175 Montag, 4. Dezember 2017 3:38 15 6 CDS-Modelle für Anwendungsdaten 6.1 Anwendungsarchitektur in SAP S/4HANA (cid:2) Kompositionsbeziehungen (cid:2) zeitabhängige Daten SAP-Fiori-App (cid:2) hierarchische Daten OData Die später folgenden Kapitel zu transaktionalen und analytischen Anwen- ABAP dungen oder Suchfunktionen erläutern weitere, mächtige Metadaten für Service- infrastruktur CDS-Views und deren Verarbeitung durch die Infrastruktur. 6 implementierter Provider der Anwendung 6.1 Anwendungsarchitektur in SAP S/4HANA Die Kernaufgabe einer betriebswirtschaftlichen Anwendung ist es, Daten SQL zu lesen, aufzubereiten, einem Benutzer zu zeigen und neue Eingaben oder Datenänderungen des Benutzers entgegenzunehmen, diese zu prüfen, zu SAP HANA prozessieren, und schließlich zu persistieren. Abbildung 6.1 Klassische SAP-Fiori-Architektur SAP-Fiori-Benutzer- In modernen Benutzerschnittstellen wie SAP Fiori, die sich ganz an den Be- schnittstellen dürfnissen der Benutzer orientieren, spielt der erste Teil der Benutzerinter- In der stark vereinfachten Darstellung der beiden Programmiermodelle se- aktion eine wichtige Rolle: Viele verschiedene Informationen sind für die hen Sie die gemeinsame Grundstruktur: SAP-Fiori-Apps verwenden OData- Aufgabe des Benutzers relevant und sollen ihm als Entscheidungshilfe Services, die vom AS ABAP bereitgestellt werden, der wiederum über SQL direkt zur Verfügung stehen. Die Aufbereitung der gewünschten Daten und auf die Daten zugreift. Die technische Bereitstellung des OData-Service ihre Anzeige erzeugen beträchtlichen Entwicklungsaufwand und erfordern übernimmt in beiden Modellen die Serviceinfrastruktur. Kenntnisse in verschiedenen Anwendungsbereichen. Für den zweiten Teil der Benutzerinteraktion, das Prüfen und Prozessie- SAP-Fiori-App ren, können hingegen meist bewährte Programmteile wiederverwendet werden. OData Lesezugriffe Erfahrungen zeigen, dass es sich bei über 90% der Datenzugriffe um Lese- ABAP zugriffe handelt. Schreibzugriffe gibt es viel seltener. Um den Entwick- Service- infrastruktur lungsaufwand und die Programmkomplexität und damit den Wartungs- aufwand zu reduzieren, wurde das Programmiermodell für SAP S/4HANA generische implemen(cid:2)erte auf Lesezugriffe optimiert: Es werden CDS-Views verwendet, die in wieder- CDS Infra- Anwendungs- Anwendungs- verwendbarer Weise Rohdaten aufbereiten und mit semantischen Metada- struktur infrastruktur opt. logik ten versehen. Diese Metadaten werden von Infrastrukturkomponenten ausgewertet, wodurch der Umfang von individueller Programmierung SQL stark verringert wird. SAP HANA Programmier- Den Unterschied der Programmiermodelle sehen Sie beim Vergleich der modelle im klassischen SAP-Fiori-Architektur in Abbildung 6.1 mit der neuen, für Lese- Vergleich Abbildung 6.2 Neue Architektur für Lesezugriffe zugriffe optimierten Architektur in Abbildung 6.2. Unterschiede gibt es bei der Implementierung des Service-Providers des OData-Service- OData-Service und bei der Definition des OData-Service selbst. Im klas- Provider 174 175 5902.book Seite 176 Montag, 4. Dezember 2017 3:38 15 5902.book Seite 177 Montag, 4. Dezember 2017 3:38 15 6 CDS-Modelle für Anwendungsdaten 6.1 Anwendungsarchitektur in SAP S/4HANA sischen Modell werden der OData-Service und sein Service-Provider indivi- duell implementiert. Im neuen Modell werden CDS-Views für einen Service SAP-Fiori-App App ausgewählt; diese legen die Struktur des OData-Service und seiner Bestand- OData teile fest. Zudem stellt eine generische Anwendungsinfrastruktur auf der Basis der CDS-Views einen Service-Provider bereit. Die Definition von CDS- ABAP Views ist also der wesentliche Schritt bei der Entwicklung eines neuen ODa- Service- infrastruktur ta-Service. 6 Da die Struktur des OData-Service der Struktur der CDS-Views entspricht, generische implementierte CDS Infra- kann eine Leseanfrage an den OData-Service in SQL-Anfragen an diese CDS- Anwendungs- Anwendungs- struktur infrastruktur opt. logik Views übersetzt werden. Das Ergebnis der SQL-Select-Anweisungen wird in entsprechende Entity Sets des OData-Service übersetzt und als Antwort auf die Leseanfrage zurückgegeben. SQL Update Sonderfälle, bei denen z.B. für die Implementierung einzelner Felder eine SAP HANA spezielle Logik notwendig ist, können optional in bereitgestellten Exits aus- programmiert werden. Abbildung 6.3 Neue Architektur im Überblick Metadaten Metadaten der CDS-Views steuern, wie der OData-Service zu den CDS-Views gebildet wird, aber auch, wie eine OData-Anfrage in eine SQL-Anfrage um- Den Hauptteil der generischen Anwendungsinfrastruktur bildet die ABAP- Infrastrukturkom- gesetzt wird. Manche CDS-Metadaten werden in entsprechende Metadaten Anwendungsinfrastruktur, eine mit SAP NetWeaver 7.5 neu eingeführte ponenten des OData-Service übersetzt und stehen den Verwendern des Service zur Komponente des AS ABAP. Ergänzt wird diese Komponente für analytische Verfügung. Anwendungen durch die Analytic Engine, eine SAP-Business-Warehouse- SAP Fiori Elements Hierdurch ergibt sich weiteres Potenzial für die Vereinfachung der Entwick- Komponente (BW), die auch in SAP S/4HANA verfügbar ist. Die Serviceinfra- lung von SAP-Fiori-Apps mit den SAP Fiori Elements. Dabei kann eine SAP- struktur besteht im Wesentlichen aus SAP Gateway, enthält aber auch Kom- Fiori-App aus wiederverwendbaren Smart Templates und Smart Controls ponenten für andere Kommunikationsprotokolle, z.B. für analytische An- aufgebaut werden, deren konkretes Layout durch den verwendeten OData- wendungen. Service und dessen Annotationen gesteuert wird. Da die hierzu notwendi- Die CDS-basierte Anwendungsarchitektur von SAP S/4HANA bietet folgen- Vorteile der neuen gen UI-Annotationen schon in den verwendeten CDS-Views definiert wer- de Vorteile: Architektur den können, lassen sich die wesentlichen Teile einer SAP-Fiori-App kom- (cid:2) Geschwindigkeit bei der Selektion und Aufbereitung großer Datenmen- plett in CDS definieren. Ein Beispiel dazu finden Sie in Abschnitt 9.4.4, »SAP- gen für die Benutzeroberfläche, da CDS-Views diese Schritte direkt in Fiori-Anwendung definieren«. SAP HANA ausführen. Neue Architektur In der Darstellung in Abbildung 6.3 haben wir Schreibzugriffe auf Daten so- (cid:2) Vereinfachte Entwicklung und hohe Konsistenz der angebotenen ODa- wie die Möglichkeit ergänzt, andere Kommunikationskanäle zu verwen- ta-Services durch die modellgetriebene Entwicklung, die auf einem ein- den. Dies rundet das konzeptionelle Modell der Anwendungsarchitektur in heitlichen Datenmodell, dem virtuellen Datenmodell, basiert (siehe Ka- SAP S/4HANA ab. pitel 7, »Das virtuelle Datenmodell in SAP S/4HANA«). Für Datenänderungen wird meist eine bestehende Anwendungslogik zur (cid:2) Flexibilität durch die Nutzung implementierter ABAP-Logik bei Bedarf. Prüfung, Prozessierung und für das Datenbank-Update angeschlossen. Die Dazu kommen generelle Vorteile der ABAP-Plattform, wie die integrierte Entwicklungsarbeit in diesem Programmiermodell liegt zu einem großen Entwicklungs- und Transportumgebung, sowie allgemeine Anwendungs- Teil in der Definition von CDS-Views mit geeigneten Metadaten – also ge- services, wie die Benutzerverwaltung und integrierte Berechtigungsprü- nau das zentrale Thema dieses Buches. fungen. 176 177 5902.book Seite 178 Montag, 4. Dezember 2017 3:38 15 5902.book Seite 179 Montag, 4. Dezember 2017 3:38 15 6 CDS-Modelle für Anwendungsdaten 6.2 Feldbezeichner 6.2 Feldbezeichner wird ein Stack von Views aufgebaut, um diese Regeln zu demonstrieren (siehe Tabelle 6.1). In diesem und in den folgenden Abschnitten stellen wir Ihnen einige in CDS-Modellen verwendete Metadaten vor. Wir starten mit den Feldbe- View Annotation Cast auf Datenelement Feldbezeichner zeichnern. Jedes Datenfeld in einer Tabelle oder in einem CDS-View be- V5 – D2 »C« nötigt nicht nur einen Feldnamen, sondern auch eine Beschreibung in der Sprache des Endbenutzers, einen Feldbezeichner, engl. Label. Feldnamen in V4 – D2 D2 »C« CDS-Views sollen zwar auch verständlich sein, sind aber nur in einer Spra- 6 V3 (propagiert) – D1 »B« che formuliert: in Englisch. Feldbezeichner sollen hingegen in viele Spra- chen übersetzt werden. V2 @EndUserText. – D1 »B« label: 'B' Herkunft von Feldbezeichner sind eine wichtige semantische Information zu einem Da- Feldbezeichnern tenfeld. In SAP-Applikationen gab es schon immer die Möglichkeit, Feldbe- V1 – – D1 »A« zeichner aus dem Datentyp des Felds, sie also aus dem Datenelement zu Tabelle 6.1 Ermittlung eines Feldbezeichners übernehmen oder sie individuell für eine Benutzeroberfläche festzulegen. Auch im SAP S/4HANA-Programmiermodell können Feldbezeichner aus 1. Ausgangspunkt ist ein View V1 mit einem Feld mit einem Datenelement Datenelementen stammen oder direkt im UI festgelegt werden. Zudem ist D1. Das Datenelement legt den Feldbezeichner »A« fest. es möglich, einen Feldbezeichner durch eine Feldannotation in einem CDS- 2. Nun wird ein View V2 definiert, der von V1 selektiert. Auch in V2 hat das View zu definieren: @EndUserText.label: '<Feldbezeichner>'. Ein annotier- Feld F das Datenelement D1. Gibt es im View V2 aber auch eine Annota- ter Feldbezeichner kann wie andere Kurztexte übersetzt werden. tion @EndUserText.label: 'B' am Feld, erhält der Feldbezeichner den Der Feldbezeichner aus dem Datenelement garantiert identische Feldbe- neuen Wert »B«, denn diese Annotation hat Vorrang vor dem Datenele- zeichner an allen Verwendungsstellen des Datenfelds. Dies erspart eine ment. mehrfache Übersetzung und sorgt für eine konsistente Terminologie auf 3. Ein View V3, der von V2 selektiert, hat weiterhin den Feldbezeichner »B«, allen Benutzeroberflächen und Apps, in denen das Datenfeld verwendet da die Annotation propagiert wird. wird. 4. In einem weiteren View V4, der von V3 selektiert, erfolgt nun ein Cast des Manchmal muss eine Benutzeroberfläche einen eigenen individuellen Datentyps des Felds auf ein Datenelement D2. Dann erhält das Feld den Feldbezeichner verwenden. Dieser hat immer Vorrang vor Feldbezeichnern Bezeichner »C« aus dem Datenelement D2. Denn der Cast hat Vorrang aus dem Datenelement oder einer Annotation. Die Logik, wann das Daten- vor einer propagierten Annotation @EndUserText.label. element und wann eine Annotation genutzt wird, ist komplexer und wird Eine explizite Annotation im View V4 hätte dagegen Vorrang vor dem in Abschnitt 6.2.1, »Ermittlung eines Feldbezeichners«, vorgestellt. Der da- Datenelement. rauf folgende Abschnitt 6.2.2, »Welche Feldbezeichnerlänge?«, behandelt Textvarianten mit unterschiedlichen Längen für einen Feldbezeichner. 5. Im View V5, der von View V4 selektiert, bleibt es beim Feldbezeichner des Datenelements. 6.2.1 Ermittlung eines Feldbezeichners Die technische Realisierung dieser Logik behandelt den Feldbezeichner des Datenelements wie eine propagierte @EndUserText.label Annotation. Da- In einem CDS-View kann der Feldbezeichner durch ein Datenelement oder her zeigt die Entwicklungsumgebung bei allen diesen Views eine aktive An- eine Annotation festgelegt werden. notation @EndUserText.label mit den jeweiligen Feldbezeichnern an. Sie Datenelement In einfachen Fällen hat eine Annotation Vorrang vor einem Datenelement. können dies mit der Funktion Active Annotations aus dem Kontextmenü oder Annotation? Die Situation ist komplexer, wenn das Datenelement durch einen Cast ge- des CDS-Views in den Eclipse-basierten ABAP Development Tools über- ändert wird oder eine Annotationspropagation stattfindet. Im Folgenden prüfen. 178 179 5902.book Seite 180 Montag, 4. Dezember 2017 3:38 15 5902.book Seite 181 Montag, 4. Dezember 2017 3:38 15 6 CDS-Modelle für Anwendungsdaten 6.2 Feldbezeichner 6.2.2 Welche Feldbezeichnerlänge? Andererseits sollen die Feldbezeichner auch nicht zu lang sein. Daher wur- de für SAP S/4HANA die Logik angepasst und selektiert nun den längsten Textvarianten eines Ein Datenelement kann viele Situationen abdecken, da es Feldbezeichner in Feldbezeichner, aber maximal einen Feldbezeichner der Länge »20«. Damit Feldbezeichners drei Längen sowie einen Feldbezeichner für eine Spaltenüberschrift und kann die Mehrzahl der Fälle behandelt werden. In einigen Anwendungsfäl- einen Text mit einer Kurzbeschreibung anbietet. len sind Bezeichner der Länge »20« aber immer noch zu kurz, um die Se- In einem CDS-View können nur zwei Bezeichnertexte durch Annotationen mantik des Felds klar auszudrücken. Eine Alternative bieten CDS-Annota- definiert werden: tionen, bei denen deutlich längere Bezeichnertexte möglich sind. (cid:2) der Feldbezeichner (Label) durch @EndUserText.label 6 Es ist aber auch möglich, ein Datenelement ohne kurzen und mittleren (cid:2) eine Kurzbeschreibung (QuickInfo) durch @EndUserText.quickInfo Text zu definieren, wie im Beispiel von Abbildung 6.5. Dann wird der einzi- ge verbliebene Text als Feldbezeichner verwendet. Bei dieser Vorgehens- Welche dieser Textvarianten in einer Benutzeroberfläche genutzt werden weise stehen 40 Zeichen zur Festlegung des Feldbezeichners zur Verfü- können, hängt von der UI-Technologie und vom Kommunikationskanal gung. Ein solcher langer Bezeichner ist oft bei berechneten Kennzahlen zum UI ab. Die meisten SAP-Fiori-Apps nutzen OData zur Kommunikation. notwendig, um deren vollständige Bedeutung auszudrücken. Im OData-Standard gibt es drei Varianten von Feldbezeichnern: label, quickInfo und heading. Die beiden ersten Feldbezeichner entsprechen direkt den CDS-Annotationen. Dies ist kein Zufall; eine Reihe von CDS-An- notationen wurde passend zu den OData-Annotationen eingeführt. Die heading-Variante steht allerdings nicht zur Verfügung. Die Auswahl der Feldbezeichner eines Datenelements ist komplexer. Es gibt einfache Zuordnungen zwischen der Kurzbeschreibung des Datenele- ments und der quickInfo, sowie zwischen der Spaltenüberschrift und dem heading. Schwierig ist hingegen die Wahl des kurzen, mittleren, oder langen Textes für das label. Abbildung 6.4 zeigt das Beispiel eines typischen Daten- elements. Abbildung 6.5 Datenelement mit einem langen Feldbezeichner Alle drei Feldbezeichnervarianten werden durch die Anwendungsinfra- Feldbezeichner in struktur in den Metadaten des OData-Service zur Verfügung gestellt. Analy- OData und in Analysen tische Anwendungen unterstützen in der Praxis nur einen einzigen Feldbe- zeichner. Dieser wird wie der label-Text von OData ermittelt und entweder aus der Annotation @EndUserText.label genommen, oder mit der oben skiz- zierten Logik aus den kurzen/mittleren/langen Texten des Datenelements gewählt. Auch für Parameter eines CDS-Views gibt es Bezeichnertexte. Diese können Bezeichner für analog den Feldbezeichnern aus einem Datenelement des Parameters ge- Parameter Abbildung 6.4 Feldbezeichnertexte eines Datenelements nommen oder durch die @EndUserText-Annotationen definiert werden. Eine Propagationslogik für Annotationen von Parametern gibt es allerdings Feldbezeichner aus In früheren Releases hatte die SAP-Gateway-Komponente in dieser Situa- nicht. Datenelementen tion standardmäßig den mittleren Text des Datenelements als Feldbezeich- ner (Label) im OData-Service ausgewählt, auch wenn dessen Länge einge- Neben diesen Bezeichnern können Sie in Annotationen von CDS-Views schränkt war. Das führt in vielen Fällen zu kryptischen Abkürzungen. weitere sprachabhängige Texte definieren, z.B. einen Bezeichner für den 180 181 5902.book Seite 182 Montag, 4. Dezember 2017 3:38 15 5902.book Seite 183 Montag, 4. Dezember 2017 3:38 15 6 CDS-Modelle für Anwendungsdaten 6.3 Semantik von Feldern CDS-View selbst oder bei den UI-Annotationen, die das Layout einer SAP- (cid:2) Ein Währungsfeld wird durch @Semantics.currencyCode: Fiori-Elements-App steuern. Für diese Texte gibt es jedoch keine alternative true charakterisiert. Herkunft aus Datenelementen, sodass sie ausschließlich aus den View-An- (cid:2) Und bei Betragsfeldern wird wiederum das zugehörige Währungsfeld an- notationen stammen. gegeben: @Semantics.amount.currencyCode: '<Währungsfeld>' 6.3 Semantik von Feldern Durch die Angabe des Referenzfelds beim Mengen- bzw. Betragsfeld kön- nen sich mehrere Felder auf das gleiche Einheiten- bzw. Währungsfeld be- 6 Für ein Datenfeld ist für gewöhnlich der technische Datentyp bekannt. Die- ziehen. se Information reicht aber bei Weitem nicht aus, um die betriebswirtschaft- Listing 6.1 zeigt einige Beispiele hierfür aus dem SAP-Standard-View I_ Beispiele liche Semantik des Felds auszudrücken und semantikabhängige Funktio- SalesOrderItem. nen auszuführen. Auch die Felddokumentation liefert keine automatisiert verwertbaren Informationen. @Semantics.unitOfMeasure: true OrderQuantityUnit, Formalisierte Daher führte schon das ABAP Data Dictionary (ABAP DDIC) zusätzlich zum @Semantics.quantity.unitOfMeasure: 'OrderQuantityUnit' Semantik Datentyp eine formalisierte Beschreibung einiger semantischer Aspekte OrderQuantity, des Felds ein, z.B. für Währungs- und Mengenfelder. Diese ermöglichen @Semantics.amount.currencyCode: 'TransactionCurrency' eine automatisierte Verarbeitung durch die ABAP-Infrastruktur. Core Data NetAmount, Services gehen einen Schritt weiter. Mit Annotationen an Feldern eines @Semantics.currencyCode: true CDS-Views können beliebige semantische Aspekte des Datenfelds forma- TransactionCurrency, lisiert beschrieben werden. Diese Technik wird auf vielfältige Weisen einge- setzt, wie Sie an vielen Stellen dieses Buches sehen werden. Im Folgenden Listing 6.1 Menge und Einheit, Betrag und Währung stellen wir einige häufig verwendete Feldannotationen vor. Die CDS-Annotationen für Mengen, Einheiten, Beträge und Währungen OData-Metadaten werden durch die Anwendungsinfrastruktur in analoge Annotationen in Parameter annotieren den Metadaten des OData-Service umgewandelt und stehen Verwendern Ganz analog zu Feldern können auch Parameter von CDS-Views annotiert des OData-Service zur Verfügung. Auch analytische Anwendungen können werden. Ein Beispiel haben Sie schon in Kapitel 3, »CDS-Annotationen«, diese CDS-Annotationen nutzen. gesehen, und weitere Beispiele werden Sie in Kapitel 8, »Modellierung analytischer Anwendungen«, kennenlernen. 6.3.2 Aggregationsverhalten In SQL-Anfragen kann für Datenfelder eine Aggregation angefordert werden: 6.3.1 Mengen und Beträge (cid:2) für zahlenartige Felder eine Summation oder eine Durchschnittsbildung Einheit und Zu einem Mengenfeld gehört ein Einheitenfeld, und zu einem Betragsfeld (cid:2) für sortierbare Felder eine Maximum- oder Minimumbildung Währung gehört ein Währungsfeld. Im ABAP DDIC können diese semantischen Ei- (cid:2) für beliebige Felder das Zählen von unterschiedlichen Werten genschaften und Beziehungen für Tabellen und Strukturen formal abgelegt werden. Für CDS-Views ist dies durch CDS-Annotationen möglich: Meist gibt es für ein Datenfeld in einem CDS-View eine bevorzugte Art der Standard- (cid:2) Ein Einheitenfeld wird durch @Semantics.unitOfMeasure: Aggregation. Die Nettobeträge von Kundenauftragspositionen werden z.B. aggregation true charakterisiert. für gewöhnlich summiert, die Nettopreise aber nicht. Für die Nettopreise (cid:2) Bei der Kennzeichnung eines Mengenfelds wird gleichzeitig das ist manchmal eine Minimum- oder Maximumbildung interessant, aber zugehörige Einheitenfeld angegeben: meist dienen sie nur als zusätzliche Information. Durch eine CDS-Anno- tation ist es möglich, bei einem Feld eine Standardaggregation zu hinter- @Semantics.quantity.unitOfMeasure: '<Einheitenfeld>' 182 183 5902.book Seite 184 Montag, 4. Dezember 2017 3:38 15 5902.book Seite 185 Montag, 4. Dezember 2017 3:38 15 6 CDS-Modelle für Anwendungsdaten 6.3 Semantik von Feldern legen, die zu seiner Semantik passt. Dies ermöglicht es der Infrastruktur, Felder, für die keine Standardaggregation annotiert ist, werden nicht aggre- Keine Aggregation aggregierte Daten anzufordern. Dabei werden Felder entsprechend der an- giert. Das entspricht dem Verhalten der Standardaggregation #NONE. Die An- notierten Standardaggregation behandelt. notation am Nettopreis NetPriceAmount im View I_SalesOrderItem der Kun- denauftragspositionen (siehe Listing 6.2) ist daher nicht notwendig. Die Aggregierende Wenn, z.B. das Feld NetAmount im View der Kundenauftragspositionen für Entwickler haben das Feld dennoch annotiert um zu betonen, dass hier kei- Selektion die Standardaggregation »Summation« annotiert ist, liefert eine aggregie- ne Aggregation stattfinden soll. rende Selektion der Sparte und des Nettobetrags als Ergebnis eine Liste der Sparten, jeweils mit der Summe der Nettobeträge aller Positionen mit die- Die Annotation einer Standardaggregation (außer #NONE) hat einen großen Kennzahlen und 6 ser Sparte. Ein solches Resultat stellt schon eine einfache Analyse der be- Einfluss auf die Verwender des Views. Bei analytischen Views führt dies zur Aggregation triebswirtschaftlichen Daten dar. Interpretation des annotierten Felds als analytische Kennzahl. Mehr Details dazu finden Sie in Kapitel 8, »Modellierung analytischer Anwendungen«. Zwei Annotations- Aufgrund einer Änderung an der Systematik von CDS-Annotationen gibt es versionen zwei verschiedene Möglichkeiten, um eine Standardaggregation zu definie- In den Metadaten eines OData-Service zum CDS-View wird ein annotiertes ren: die ältere Version @DefaultAggregation und die neuere Version @Aggre- Feld als Kennzahl (Measure) markiert. Eine Leseanfrage an diesen OData- gation.default. Mögliche Typen für die Standardaggregation sind in Tabel- Service (genauer: an die Entity, die dem CDS-View entspricht) wird als ag- le 6.2 angegeben. gregierende Selektion ausgeführt. Die Art der Aggregation richtet sich nach der annotierten Standardaggregation. Für die Ausführung der Anfrage er- Aggregationstyp Beschreibung zeugt die Anwendungsinfrastruktur eine SQL-Anfrage mit der Standard- aggregation für die annotierten Felder. Die Berechnung der Aggregation er- #AVG Durchschnittsbildung: Summe über alle Werte, geteilt durch die Anzahl der Werte folgt schließlich mit SAP HANA. Mit diesem Mechanismus können einfache Analysen mit OData-Services ausgeführt werden. #COUNT_DISTINCT Anzahl unterschiedlicher Werte #FORMULA Sonderform für analytische Queries (siehe Kapitel 8, 6.3.3 Systemzeiten »Modellierung analytischer Anwendungen«) Meist speichern Datenbanktabellen zusammen mit den Anwendungsdaten Zeitpunkt der #MAX Maximum aller Werte auch Informationen, wann ein Datensatz angelegt oder das letzte Mal geän- Anlage und letzten #MIN Minimum aller Werte dert wurde. Dies ist eine wichtige semantische Information. Zum Beispiel Änderung kann der Zeitpunkt der letzten Änderung bei der Datenreplikation oder bei #NONE Das Feld soll nicht aggregiert werden. optimistischen Sperrverfahren genutzt werden. Voraussetzung ist natür- #SUM Summe aller Werte lich, dass diese Information beim Anlegen und jeder Änderung zuverlässig bestimmt wird. Durch CDS-Annotationen können die Felder als Systemzei- Tabelle 6.2 Unterstützte Aggregationstypen ten gekennzeichnet werden (siehe Tabelle 6.3). Listing 6.2 zeigt einige Beispiele dieser Annotation aus dem SAP-Standard- Annotation Semantik des Felds View I_SalesOrderItem. @Semantics.systemDateTime. Zeitpunkt der Datenanlage (ABAP-Typ @DefaultAggregation: #SUM createdAt TIMESTAMP) OrderQuantity, @Semantics.systemDateTime. Zeitpunkt der letzten Datenänderung @DefaultAggregation: #SUM lastChangedAt (ABAP-Typ TIMESTAMP) NetAmount, @DefaultAggregation: #NONE @Semantics.systemDate.createdAt Datum der Datenanlage (ABAP-Typ NetPriceAmount, DATS) Listing 6.2 Standardaggregation Tabelle 6.3 CDS-Annotationen für Systemzeiten 184 185 5902.book Seite 186 Montag, 4. Dezember 2017 3:38 15 5902.book Seite 187 Montag, 4. Dezember 2017 3:38 15 6 CDS-Modelle für Anwendungsdaten 6.3 Semantik von Feldern werden; sie spielen für die technische Prozessierung aber kaum eine Rolle. Annotation Semantik des Felds Für diesen Zweck steht die CDS-Annotation @Semantics.text zur Verfügung. @Semantics.systemDate. Datum der letzten Datenänderung Texte in natürlicher Sprache sind meist in einer bestimmten Sprache abge- lastChangedAt (ABAP-Typ DATS) fasst; es gibt nur wenige Ausnahmen, wie z.B. Namen von Menschen oder @Semantics.systemTime.createdAt Uhrzeit der Datenanlage (ABAP-Typ Organisationen. Wenn diese Sprache in einem anderen Feld des Views TIMS); nur sinnvoll in Kombination mit angegeben ist, annotiert man dieses Feld mit @Semantics.language. Eine ex- einem Anlagedatum plizite Verbindung zwischen den Feldern, wie bei Mengen oder Beträgen, 6 @Semantics.systemTime. Uhrzeit der letzten Datenänderung ist allerdings nicht vorgesehen. Für gewöhnlich verwenden alle Textfelder lastChangedAt (ABAP-Typ TIMS); nur sinnvoll in Kom- eines Views die gleiche Sprache. bination mit einem Änderungsdatum Listing 6.4 zeigt Beispiele hierfür aus dem SAP-Standard-View I_Country- Tabelle 6.3 CDS-Annotationen für Systemzeiten (Forts.) Text. Bei dem View handelt es sich um einen sprachabhängigen Text-View, den Sie in Abschnitt 6.5, »Textbeziehungen«, genauer kennenlernen werden. Systemzeiten in Felder mit Systemzeiten gibt es natürlich nicht nur in Tabellen, sondern CDS-Views auch in CDS-Views. Bei Views, die Daten aus mehreren Tabellen zusam- @Semantics.language menführen, ist genau zu prüfen, welche Felder als Systemzeiten annotiert key spras as Language, werden: @Semantics.text: true (cid:2) Nur ein einziger Anlagezeitpunkt ist sinnvoll; er sollte sich auf die Haupt- cast(landx50 as fis_landx50 preserving type ) as CountryName, entität des Views beziehen. Listing 6.4 Annotationen für Text und Sprache (cid:2) Der Zeitpunkt der letzten Änderung muss mögliche Änderungen an al- len Datenfeldern des CDS-Views berücksichtigen, unabhängig von ihrer 6.3.5 Informationen zum Geschäftsjahr Herkunft. CDS-Annotationen können auch eine anwendungsspezifische Semantik Geschäftsjahr Listing 6.3 zeigt Beispiele von Systemzeiten aus dem SAP-Standard-View ausdrücken. Ein Beispiel dafür sind Informationen zum Geschäftsjahr des I_SalesOrder. Rechnungswesens und dessen Perioden. Ein Geschäftsjahr kann vom Ka- @Semantics.systemDate.createdAt: true lenderjahr abweichen und flexibel definierte Perioden enthalten. Bei Ana- CreationDate, lysen von Daten des Rechnungswesens erlaubt die Kennzeichnung von Ge- @Semantics.systemTime.createdAt: true schäftsjahresinformationen eine dazu passende Aufbereitung der Daten. CreationTime, Die Annotationen hierfür sind in Tabelle 6.4 angegeben. @Semantics.systemDate.lastChangedAt: true LastChangeDate, Annotation Semantik des Felds @Semantics.systemDateTime.lastChangedAt: true @Semantics.fiscal.yearVariant Geschäftsjahresvariante; legt die LastChangeDateTime, Eigenschaften des Geschäftsjahres fest. Listing 6.3 Systemzeiten @Semantics.fiscal.period Geschäftsperiode 6.3.4 Texte und Sprachen @Semantics.fiscal.year Geschäftsjahr Texte in natürlicher Felder, die einen Text in natürlicher Sprache und keinen Code oder sonstige @Semantics.fiscal.yearPeriod Geschäftsjahresperiode; die Kombina- Sprache technische Information enthalten, möchte man besonders auszeichnen. tion aus Geschäftsjahr und Periode Diese Felder sollen bevorzugt einem menschlichen Benutzer angezeigt Tabelle 6.4 Informationen zum Geschäftsjahr 186 187 5902.book Seite 188 Montag, 4. Dezember 2017 3:38 15 5902.book Seite 189 Montag, 4. Dezember 2017 3:38 15 6 CDS-Modelle für Anwendungsdaten 6.4 Fremdschlüsselbeziehungen Listing 6.5 zeigt Beispiele aus dem SAP-Standard-View I_JournalEntryItem. und den jeweiligen Feldern kann als Fremdschlüssel im ABAP DDIC hinter- legt werden. @Semantics.fiscal.year: true ryear as LedgerFiscalYear, Auch zwischen CDS-Views kann es eine Fremdschlüsselbeziehung geben. Fremdschlüssel @Semantics.fiscal.period: true Mit einer Assoziation kann die Beziehung zwischen dem Fremdschlüssel- in CDS poper as FiscalPeriod, View und dem Werte- oder Entitäten-View elegant definiert werden. In CDS @Semantics.fiscal.yearVariant: true sprechen wir ungern von einem »Prüf-View«, da die reine Fremdschlüssel- periv as FiscalYearVariant, beziehung keine Prüfung festlegt, sondern nur eine Aussage über die se- 6 @Semantics.fiscal.yearPeriod: true mantische Beziehung der persistierten Daten macht. Der Werte- oder En- fiscyearper as FiscalYearPeriod, titäten-View stellt die möglichen Feldwerte zur Verfügung, oder genauer: Er repräsentiert die Liste der Entitäten, auf die das Fremdschlüsselfeld verwei- Listing 6.5 Informationen zum Geschäftsjahr sen kann (siehe Abbildung 6.7). Entitäten-View 6.4 Fremdschlüsselbeziehungen Country … Das Konzept von Fremdschlüsseln kennen Sie wahrscheinlich aus dem Fremdschlüsselassoziation … DK ABAP DDIC. Im Grunde hat es zum Ziel, die möglichen Werte für ein Daten- DD feld einer »Fremdschlüsseltabelle« auf die in der »Prüftabelle« vorhande- DE nen Werte eines zugeordneten Schlüsselfelds der Prüftabelle einzuschrän- Fremdschlüsselfeld DG ken. Das klingt kompliziert, wird anhand eines Beispiels aber schnell klar (siehe Abbildung 6.6). Fremdschlüssel-View Prüftabelle Name City Country … Country … Schmidt Hamburg DE Fremdschlüsselbeziehung … Miller Boston US DK … DD Fremdschlüsselfeld DE Abbildung 6.7 Fremdschlüssel in CDS DG Listing 6.6 zeigt ein Beispiel für eine solche Assoziationsdefinition von Fremdschlüsseltabelle View I_ProfitCenter zu View I_Country. Name City Country … define view I_Country as select from t005 Schmidt Hamburg DE { key cast(land1 as land1_gp preserving type ) as Country, Miller Boston US … … define view I_ProfitCenter as select distinct from cepc Abbildung 6.6 Fremdschlüssel im ABAP DDIC association[0..1] to I_Country as _Country on $projection.Country = _Country.Country In einer Adresse gibt es ein Feld Country für einen Staat. Als mögliche Werte { … für den Staat sollen nur Staaten aus der Staatentabelle zugelassen werden. land1 as Country, Also ist die Tabelle der Adresse die Fremdschlüsseltabelle; diese hat ein … Fremdschlüsselfeld für den Staat. Die Tabelle der Staaten ist die Prüftabelle mit dem Staat als Schlüsselfeld. Diese Beziehung zwischen den Tabellen Listing 6.6 Assoziation für eine Fremdschlüsselbeziehung 188 189

Description:
Mit den Core Data Services (CDS) für ABAP verbessern Sie den profitieren von den SAP-HANA-Fähigkeiten zur Verarbeitung großer Da-.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.