This is a test message to test the length of the message box.
Login
|

022: Core Data Service [Basics] - Semantics and Associations

180

Weiter geht es mit den Grundlagen für Core Data Services. Dabei erstellen wir weitere Basisviews und modellieren im Interface die ersten Assoziationen im Datenmodell. Nebenbei schauen wir uns weitere Annotationen an, um unser Datenmodell anzureichern.

Werbung


Einleitung

Willkommen zur nächsten Folge beim Thema Grundlagen für Core Data Services. Beim letzten Mal hatten wir den ersten View angelegt und die Grundlagen erklärt. Heute steigen wir tiefer in das Datenmodell ein, legen weitere Entitäten an und verknüpfen diese mit Assoziationen, um das Datenmodell auszuprägen. 

 

Datenmodell

Dabei haben wir in Vorarbeit bereits neue Tabellen angelegt und mit Daten befüllt. Neben dem Header gibt es nun auch einen Partner mit seinen Adressdaten. Zu einem Beleg haben wir nun weitere Positionen, die über eine laufende Nummer abgegrenzt werden. Auf den Positionen gibt es bestimmte Produkte, wofür wir eine eigene Tabelle haben, wo die Einheit und die Währung des Produktes definiert ist. Zum Produkt gibt es auch zusätzlich noch eine Beschreibung, die übersetzbar sein soll. Für alle neuen Tabellen findest du in der ausführbaren Klasse entsprechende Daten, um die Tabellen mit Inhalten zu befüllen.

 

Base Layer

Beim letzten Mal hatten wir den ViewType auf "BASIC" gesetzt. Da unser Base-View nicht für die Nutzung gedacht ist, ergänzen wir noch die Annotation "Private". Diese hat keine Auswirkungen auf die eigentliche Nutzung, wir geben aber anderen Entwicklern den Hinweis, dass dieser View nicht genutzt werden sollte. Im nächsten Schritt erzeugen wir die entsprechenden Base Views für Produkt und Produkttexte, hier gibt es so weit keine Besonderheiten. Wir räumen nur die entsprechenden Annotationen im Kopf auf und übernehmen die Vorschläge zu den Feldern für unser Datenmodell.

 

Assoziation

Bei der Position haben wir eine kleine Besonderheit. Normalerweise nutzen wir den Basis View für die Normalisierung der Feldnamen für unser Datenmodell und bauen noch keine Verbindungen zu den verschiedenen Daten auf. Allerdings kann es auch vorkommen, dass wir auf dieser Ebene nicht alle Informationen für das Datenmodell zur Verfügung haben. In diesem Fall kommen die Einheit und die Währung von den Produkten und wird in diesem View hinterlegt. Daher legen wir eine Assoziation an, was nichts anderes ist als ein optionaler Join über die Daten ist. Die Assoziation erhält einen Alias mit Unterstrich, wobei der Unterstrich nicht Pflicht ist, aber Best Practice in der Verwendung. Dann führen wir eine entsprechende JOIN Bedingung aus. Über die Variable $projection, können wir auf die Felder des aktuellen Views zugreifen, um die Verbindung herzustellen.

Im Anschluss können wir die Felder in die Feldliste aufnehmen, hier müssen wir nicht zwingend einen Alias verwenden, es bleibt daher der gleiche Feldname, wie er aus der Assoziation kommt. Über die Annotation "Semantics" können wir dann die Felder den Werten zuordnen, damit verschwinden die Fehlermeldungen aus dem View.

Grundsätzlich geben wir direkt nach dem Schlüsselwort ASSOCIATION die Beziehung der Daten untereinander an. In diesem Fall ist die 1 zu n Beziehung falsch, was wir auch in dem angezeigten Hinweis vom Compiler sehen. Grundsätzlich solltest du allerdings in modernen Systemen nicht mehr diese Schreibweise verwenden. Daher stellen wir auf die sprechende Schreibweise um.

Zum Abschluss übernehmen wir noch die VDM Annotationen in die drei Views und aktivieren diese. Damit sind wir mit der CDS Grundlage fertig und können im nächsten Schritt unser Interface für die Wiederverwendbarkeit erstellen.

 

Interface Layer

Dazu sind die entsprechenden Views mit einem "I", wie Interface, gekennzeichnet. Hier möchten wir unser Datenmodell nach Außen wiederverwendbar freigeben und alle nötigen Beziehungen im Datenmodell zur Verfügung stellen. Innerhalb des virtuellen Datenmodells müssen wir uns nicht mehr die verschiedenen Tabellen und Abhängigkeiten merken, da sie im Modell definiert sind. Auch der Standard stellt viele Basisviews zur Verfügung, die wir in ABAP Cloud wiederverwenden können. Definieren wir uns dazu im ersten Schritt die Sprache über eine Assoziation. "Exact One" verwenden wir, da wir genau einen Eintrag erwarten. Die Assoziation verwenden wir ebenfalls in der Feldliste, damit bei Verwendung des Views optional auf die Assoziationen zugegriffen werden kann. Ohne eine direkte Verwendung des Feldes, wird der Join auch nicht aufgebaut und damit geht keine Performance verloren.

Zusätzlich verwenden wir noch drei neue Assoziationen. Über "foreignKey" geben wir die Fremdschlüsselbeziehung zu einer anderen Entität an. Mit "Semantics.Language" definieren wir das Sprachfeld und mit "Text", dass es sich bei diesem Feld um einen beschreibenden Text handelt.

Legen wir nun den View für das eigentliche Produkt an. Nachdem wir die Annotationen bereinigt haben, können wir auch hier die verschiedenen Beziehungen zu den Daten aufbauen. In diesem View haben wir die verschiedenen Texte zugeordnet, die dieses Mal in einer "One to Many" Beziehung stehen, also im klassischen Sinne 1 zu n. Dazu kommen noch weitere Assoziationen zu den Einheiten und Währungen aus dem Standard. Für alle drei Annotationen definieren wir wieder entsprechende Fremdschlüsselbeziehungen und geben die Annotation in der Feldliste an.

Für die Stammdaten legen wir im letzten Schritt das Interface für den Partner an. Hier gibt es nur eine einzige Assoziation zum Standard für die Länder.

 

Abhängige Views

Als nächsten Schritt definieren wir die Views für Kopf und Position. Da die beiden Views voneinander abhängig sind, müssen wir diese Beide anlegen und aktivieren. Dazu beginnen wir zuerst mit dem Header und definieren die Beziehung zum Partner. Bevor wir nun die Assoziation zur Position definieren, legen wir den View für die Positionen an und aktivieren diese, ohne Beziehungen zu weiteren Daten zu definieren. Damit können wir nun die Assoziation im Header finalisieren und den Views zum Abschluss aktivieren.

Auf Positionsebene definieren wir nun die Verbindung zum Produkt und auch zum Header, dem eigentlichen Beleg. Sind wir damit fertig, können wir alle Objekte im System aktivieren. Zum Abschluss erstellen wir noch im Header eine Verbindung zum User, da wir entsprechende Informationen in unseren Views über den Sachbearbeiter haben.

 

Data Preview

Damit ist das Datenmodell komplett und wir können uns im Data Preview die Daten ansehen und die verschiedenen Verbindungen testen. Im Project Explorer findest du im Kontextmenü unter "Open With" eine Option direkt den Data Preview zu starten. Über Rechtsklick auf einen Datensatz können wir die Option "Follow Association" wählen, um nun über die Verbindung zu navigieren. Hier werden uns alle definierten Assoziationen angeboten, worüber wir nun navigieren können. Hier wählen wir die Positionen und es werden uns nun für den Beleg alle Positionen angezeigt. Im Kopf siehst du den aktuellen Zugriffspfad, wir sind im Header gestartet und nun bei den Positionen. Von hier aus können wir nun weiter navigieren und gelangen zu unserem Produkt, welches im gewählten Datensatz hinterlegt war. Über die Texte können wir nun auch die verschiedenen Übersetzungen des Produkts anschauen.

Im oberen Teil hat sich nun eine entsprechend lange Navigationsstruktur aufgebaut. Mit einem Klick auf einen beliebigen Knoten, springen wir zurück zu den entsprechenden Daten. Mit einem sauberen Datenmodell können wir daher über die verknüpften Daten navigieren und müssen nicht mehr alle Tabellen und Beziehungen im Kopf haben.

 

Zusammenfassung

In diesem Video haben wir die Daten finalisiert und neben dem Base Layer auch den wiederverwendbaren Interface Layer erstellt. Durch die Definition von Assoziationen, können wir die Daten im Datenmodell miteinander verbinden, ohne Performanceprobleme zu bekommen, da die Verknüpfung nur verwendet wird, wenn wir Felder aus der Assoziation aufrufen und verwenden. Über zusätzliche Annotationen haben wir das Datenmodell angereichert und mit Informationen zu Fremdschlüsseln, Texten und Sprachen.

Danke fürs Zuschauen un bis zum nächsten Mal.

 

YouTube
Video


Enthaltene Themen:
YouTubeSkriptCore Data ServiceAssoziationAnnotation
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


029: ABAP and SAP Material (Software-Heroes)

Kategorie - YouTube

Wie findest du eigentlich die passenden ABAP und SAP Tutorials auf der Plattform Software-Heroes? In dieser Folge wollen wir dir einige Tools und Übersichten vorstellen, wie du in Zukunft weiter effizient die Themen und Informationen findest.

15.12.2025

028: Recycling-Heroes - Configuration API (Settings)

Kategorie - YouTube

Damit wir einfach auf die Daten der Business Configuration zugreifen können, definieren wir eine API, die wir im System dann wiederverwenden können. Hier werden auch die verschiedenen ABAP Artefakte näher erklärt.

08.12.2025

027: Recycling-Heroes - Business Configuration (Settings)

Kategorie - YouTube

Wir benötigen im nächsten Schritt eine Business Configuration, um unsere Einstellungen in den verschiedenen Anwendungen dynamisch steuern zu können. Dazu passen wir den View an und kümmern uns um die Berechtigungen.

01.12.2025

025: Recycling-Heroes - New Data (Contact)

Kategorie - YouTube

In dieser Folge finalisieren wir die Kontakt App, erstellen einen großen Satz Testdaten, Setzen die Nummernkreise zurück und machen noch die letzten Anpassungen am UI.

17.11.2025

024: Recycling-Heroes - Restriction Types (Contact)

Kategorie - YouTube

Wie können wir nun dafür sorgen, dass Berechtigungen in der Kontakt App dynamisch vergeben werden können? Dafür schauen wir in dieser Folge auf die Restriction Types.

10.11.2025