This is a test message to test the length of the message box.
Login
|
ABAP DDIC der Zukunft
Erstellt von Software-Heroes

DDIC der Zukunft (Vergleich)

64

Wie geht es eigentlich mit dem DDIC in Zukunft weiter und können wir schon Heute die neuen Features für uns nutzen? In diesem Teil vergleichen wir die Welt von Heute mit der von Morgen und wo du alle Features findest.

Werbung


In diesem Artikel vergleichen wir die Features aus der Welt von Heute und aus der Welt von Morgen und zeigen dir, wo du alle wichtigen Punkte findest.

 

Einleitung

In den letzten beiden Artikeln hatten wir vor allem darüber geschrieben, wie die Welt heute aussieht und wie wir Datenmodelle über Tabellen erstellen. Im zweiten Artikel hatten wir uns dann angeschaut, wie die Welt von morgen aussieht, wenn wir nur noch mit "CDS-only" arbeiten und dort entsprechende neue Artefakte verwenden. Damit solltest du beide Welten einmal näher kennengelernt haben und die verschiedenen Details kennen. Deshalb wollen wir uns in diesem Artikel noch einmal anschauen, wo du die verschiedenen Features in den beiden Welten findest und wie du diese besser nutzen kannst, ohne dabei komplett verloren zu gehen.

 

Vergleich

In diesem Kapitel schauen wir uns die unterschiedlichen Features an und wo du sie im neuen Modell findest. Dabei gehen wir auch auf kleine Unterschiede ein.

 

Mandant

In der alten Welt wurde das Mandantenfeld als separates Feld in der Tabelle definiert. Hierbei handelt es sich um eine redundante Arbeit, die in jeder Tabelle durchgeführt werden musste und vor allem bei Anfängern öfters mal vergessen wurde. In der neuen Welt wird dies über eine Annotation abgebildet und diese automatisch auf CLIENT_DEPENDENT gesetzt. Das heißt, das Mandantenfeld wird mit erzeugt und kann damit nicht vergessen werden. Daher müssen in Zukunft mandantenunabhängige Tabellen separat und wirklich explizit dafür gekennzeichnet werden.

 

Beziehung

Beziehungen können auf Ebene der Tabellen-Entities endlich direkt modelliert werden. In der Vergangenheit konnte man zwar einen Foreign Key definieren, dieser war aber nicht wirklich eine Beziehung, über die wir auch auf Daten zugreifen konnten. Die Vorteile von Core Data Services und den definierten Assoziationen sind, dass wir diese hier direkt auf Tabellenebene vordefinieren können und auf den ersten Blick sehen, wie das Datenmodell der verschiedenen Tabellen zusammenhängt.

 

Datentyp

Der Datentyp wird beim Simple Type direkt hinter der Definition des Simple Typs angegeben. In der Domäne wird dazu ein Formular angeboten. Dort kann der Datentyp über eine Liste ausgewählt und die Länge über das Feld eingestellt werden. Die Einstellung hier wird typischerweise in einem Editor durchgeführt, so wie eigentlich alle CDS Artefakte.

 

Fixwerte

Schauen wir dann auf das Thema Fixwerte oder Konstanten, dann können wir in der Domäne die Fixwerte in einer Liste definieren. Hier steht der Wert gegenüber dem Text, den wir ausgeben möchten. Im Simple Type handelt es sich um ein Enum. Dort können wir ebenfalls Werte definieren, müssen aber auch immer eine Konstante haben, die einen initialen Wert hat. Grundsätzlich können wir hier auch die Texte über das End User Label definieren, die wir später in der Ausgabe erhalten.

 

Ausgabe

Die Ausgabe wird ebenfalls auf Domänenbene definiert. Hier stehen verschiedene Ausgabekriterien zur Verfügung, wie zum Beispiel die Ausgabelänge und eine Konvertierungsroutine, mit der erweiterte Formatierungen möglich sind. Im Simple Type wird das als Annotation definiert. Hier gibt es über den ABAP Catalog entsprechende Typspezifikationen, die wir angeben können.

 

Änderungsbelege

Wollen wir für ein Feld die Änderungsbelege aktivieren, müssen wir dies im Datenelement tun. Dort gibt es unter den zusätzlichen Einstellungen eine Checkbox, die wir aktivieren können. Auf Ebene des Simple Typs machen wir das ebenfalls über eine Annotation und können dort das Flag aktivieren. Damit brauchen wir keine Unterscheidung zwischen Datenelement und Domäne, wenn wir dieses Attribut haben wollen.

 

Texte

Die Ausgabetexte für das UI werden ebenfalls über eine Annotation gepflegt, wenn wir auf den Simple Type schauen. Dabei gibt es ein Mapping gegenüber den Texten aus dem Datenelement, wobei es aktuell kein Element für den Langtext gibt. Was wir in einer Fiori-Anwendung nicht unbedingt benötigen, hier reichen meistens drei Texte völlig aus. Auch wenn die Werte hardcodiert aussehen, kann später über die Translation-App die Übersetzung gemacht werden.

 

Case Sensitive

Die Groß- und Kleinschreibung ist ein wichtiger Bestandteil, wenn es darum geht, Texte und Langtexte zu erfassen. In der klassischen Welt hatte dies oft zu Fehlern und Problemen geführt, wenn vergessen wurde, auf Domänenbene das Flag zu setzen, dass das Element Groß- und Kleinschreibung beherrscht. In der neuen Welt ist das etwas anders: Hier ist jedes angelegte Element, welches textartige Inhalte zur Verfügung stellt, mit aktivierter Groß- und Kleinschreibung versehen. Grundsätzlich müsste hier die Großkonvertierung aktiviert werden, allerdings ist die Annotation leider nicht für ABAP Cloud freigegeben. Hier müsste über entsprechende Determinations im RAP sichergestellt werden, dass eine Großkonvertierung erfolgt, beziehungsweise mit Funktionen auf der Core Data Services-Ebene.

 

Berechtigung

Tabellen werden standardmäßig nicht mit einer Berechtigungsprüfung ausgeliefert, sodass wir nur Inhalte sehen, für die wir auch berechtigt sind. Daher müssen wir für eine klassische Tabelle immer nach dem Lesen die Berechtigungsprüfung durchführen und entsprechende Einträge herausfiltern. Das führt zu Problemen, wenn wir die Berechtigungsprüfung vergessen. In Table Entities können wir deshalb auch direkt ein Access Control definieren und dort die Berechtigungsprüfung hinterlegen. Wollen wir keine Berechtigungsprüfung, müssen wir diese aktiv beim Lesen deaktivieren. Daher ist automatisch erst einmal beim Lesen auch die Berechtigungsprüfung aktiv.

 

Konstanten

Haben wir Fixwerte in einer Domäne hinterlegt, wollen wir diese meistens auch in unserem Programm verwenden oder validieren. Dabei mussten wir häufig Konstantenstrukturen anlegen, die dann die Werte der Domäne wiederum abbilden und auf die wir dann in unserem Code zugreifen können. Haben wir ein Simple Type Enum definiert, können wir dieses direkt verwenden, um auf die Konstanten zuzugreifen, die im Enum definiert sind. Das erspart uns erstens den Aufwand, die Konstantenstruktur anzulegen, und zweitens ist der verwendete Typ immer aktuell.

 

Benefits

Was bekommst du eigentlich heute, wenn du bereits auf Core Data Services umsteigst? Grundsätzlich ist das Datenmodell, also die Objekte, die dir heute angeboten werden, schon in einem sehr guten Zustand, solange du auf einem aktuellen System arbeitest.

  • Wenn du mit Table Entities arbeitest, kannst du direkt Datenbeziehungen abbilden, erhältst automatisch Security und das Thema Typsicherheit. Denn in Table Entities sind nur aktuelle Felder wie das Datum, die Uhrzeit und der Timestamp möglich, hier also nur die aktuellsten Typen, die auch typsicher sind. Du kannst Annotationen verwenden, die gleichzeitig Constraints auf der Datenbank sind und damit auch Fehler produzieren, wenn Werte ungleich der definierten Werte eingegeben werden.
  • Du kannst dein gesamtes Datenmodell direkt so bauen, wie es später auch in den Core Data Services verwendet werden soll. Das heißt, Groß- und Kleinschreibung für die Feldnamen und Entity-Namen ist bereits aktiv. Heute kannst du viel längere Namen für die Entitäten verwenden, was das Ganze etwas sprechender macht und diese kryptischen, kurzen Tabellennamen obsolet macht.

 

Offene Punkte

Schauen wir auf die noch offenen Punkte, die aktuell nicht unterstützt werden.

  • Es wird zum Beispiel in der RAP-Entwicklung die Enumeration noch nicht wirklich fürs UI unterstützt. Hier muss man in Datentypen konvertieren und dann auch im UI entsprechende Wertehilfen bauen. Das wünschen wir uns natürlich Out of the Box, wenn wir eine Annotation auf Datenbankebene definieren.
  • Aktuell gibt es auch noch keine Tabellentypen auf CDS-Ebene. Das heißt, wenn du die Strukturen und Definitionen später dann zum Beispiel auch in klassischen Objekten wie Funktionsbausteinen oder der Dynpro-Entwicklung verwenden willst, wird dies nicht funktionieren.
  • Ebenso können die Tabellen noch nicht an jeder Stelle verwendet werden, wo du auch eine Tabelle eintragen kannst. Nehmen wir zum Beispiel bestimmtes Customizing, wo du eine Art Exit-Tabelle hinterlegen kannst: Hier würde die Wertehilfe wahrscheinlich deine Table Entity nicht finden.

 

Fazit

Grundsätzlich können wir sagen: Das Datenmodell wird sich in Zukunft ändern und mehr auf Core Data Services basieren. Bist du bereits auf einem 2025er-Release unterwegs, kannst du eigentlich sehr viele Objekte schon sehr gut nutzen, um damit Datenmodelle und RAP-Anwendungen zu bauen. Bist du auf einem älteren Release unterwegs, kannst du zwar die Core Data Services verwenden, aber eine Modellierung auf Table-Entity-Basis funktioniert hier noch nicht. Daher sollte es auch erst einmal ein Blick in die Zukunft sein.


Enthaltene Themen:
TippDDICCDSVergleich
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.


DDIC der Zukunft (Morgen)

Kategorie - ABAP

Wie geht es eigentlich mit dem DDIC in Zukunft weiter und können wir schon Heute die neuen Features für uns nutzen? In diesem Teil werfen wir ein Blick auf Morgen und wie uns CDS Artefakte bei der Modellierung helfen.

30.06.2026

DDIC der Zukunft (Heute)

Kategorie - ABAP

Wie geht es eigentlich mit dem DDIC in Zukunft weiter und können wir schon Heute die neuen Features für uns nutzen? In diesem Teil schauen wir auf den aktuellen Zustand des Dictionary in ABAP.

26.06.2026

ABAP in der Praxis - News App verwenden

Kategorie - ABAP

In diesem Praxisbeispiel schauen wir uns an, wie wir die neue News App im ABAP Environment mit Informationen bestücken können. Dabei analysieren wir die aktuelle ABAP Auslieferung der Anwendung und des Services, um das korrekte Format zu finden.

31.03.2026

ABAP in der Praxis - Objekt Generator

Kategorie - ABAP

In diesem Beispiel schauen wir uns an, wie wir mit der XCO Bibliothek einen wiederverwendbaren Generator erstellen, um uns für unsere Tutorials etwas Arbeit zu sparen und automatisiert DDIC Objekte zu generieren.

09.01.2026

ABAP Tipp - Logging Performance

Kategorie - ABAP

Wie sieht es eigentlich mit der Performance des BAL Logs in der ABAP Cloud Welt aus? Schauen wir uns dazu drei Lösungen an und messen die Performance in verschiedenen Szenarien.

19.12.2025