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 (Morgen)

107

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.

Werbung


In diesem Artikel werfen wir einen Blick auf die Zukunft und schauen uns Artefakte an, die wir in Zukunft für die Modellierung von Daten und Tabellen verwenden.

 

Einleitung

Schauen wir auf das Morgen, dann werden wir vor allem in einer Welt leben, die "CDS-only" heißt. Hierbei geht es darum, dass wir nur noch CDS-Artefakte nutzen und damit all die Vorteile, wie zum Beispiel die Groß- und Kleinschreibung oder längere Namen, aber auch ein integriertes Datenmodell, welches wir verwenden können, mitnehmen. Dabei werden die verschiedenen CDS-Objekte und auch neue Artefakte die bestehenden Artefakte ablösen und Alternativen bieten. Dabei ist die Alternative vor allem auf die Modernisierung und die neuen Anwendungen ausgelegt, die wir verwenden können. Dort werden andere Eigenschaften benötigt, als sie noch für die SAP-GUI vonnöten waren. 

Gleichzeitig besteht nun eine große Chance, alte Fehler in der Datenmodellierung auszugleichen und neue Features einzuführen. Was in der Vergangenheit nicht möglich war und die Objekte nicht hergegeben haben, kann in der Zukunft durch neue Objekte möglich werden.

 

Übersicht

Werfen wir dazu einen ersten Blick auf die veränderte Landschaft der Objekte, die hier eine Rolle spielen. Grundsätzlich kann man sagen, dass alle Objekttypen einmal ausgetauscht und durch neue Typen ersetzt wurden. Im Bereich der Datenelemente und Domänen gibt es nun die Simple Types. Die Simple Types lösen damit zwei Elemente ab. Sie können ebenfalls gestapelt werden, das heißt, du kannst von den einzelnen Elementen Eigenschaften erben und diese weitergeben. Gleichzeitig bildet der Simple Type die unterste und die oberste Ebene ab. Statt Tabellen verwenden wir sogenannte Table Entities, die gleichzeitig die Struktur bieten, aber auch die Datenmodellierung und Persistenz für die Datenbank sicherstellen.

Auf der obersten Ebene verwenden wir Core Data Services, um Views abzubilden. Diese sind auch schon in der klassischen Welt mit Tabellen möglich, zur Vereinfachung hatten wir diese aber in dieses Modell übernommen. Darunter befindet sich ein neues Objekt, der sogenannte Aspect, ein Objekt, was wir uns in der Vergangenheit schon einmal angeschaut haben, um Wiederverwendbarkeit und Includes zu schaffen. Dafür gibt es jetzt kein Element, was genau eine Struktur abbildet, dafür kann man Abstract Entities verwenden. Diese werden vor allem im Bereich von Pop-ups und Strukturdefinitionen verwendet. Einzig der Tabellentyp hat aktuell noch kein Nachfolger. Hier ist auch die Frage, ob man unbedingt einen benötigt, vor allem, wenn man auf die Nutzung von Funktionsbausteinen schaut, die in der Zukunft immer weniger werden und durch OData-Services und HTTP-Schnittstellen abgelöst werden.

 

Elemente

Schauen wir uns die verschiedenen Objekte im Model einmal im Detail an und wie diese aufgebaut sind. Den Aspect im Zusammenspiel mit Table Entities haben wir uns in einem anderen Artikel bereits angeschaut.

 

Simple Type

Das Simple Type ist der eigentliche Datentyp, der als Element verwendet werden kann, um eine Spalte zu repräsentieren. Wir können darin verschiedene Texte definieren, den Namen des Objektes, aber auch den Datentyp. In diesem Fall verwenden wir einen eingebauten Datentyp. Hier können wir aber auch verschiedene andere Simple Types oder sogar Datenelemente verwenden, die wir zur Definition angeben. Damit ist die Definition relativ klein und schmal gehalten. Ein wichtiger Aspekt hierbei ist, dass wir Groß- und Kleinschreibung verwenden können, die auch später bei der Modellierung der Table Entity verwendet wird.

 

Möchtest du dazu noch Werte definieren, sogenannte konstante Werte? Dann steht dir auch die Ausprägung des Enums zur Verfügung. Hier definieren wir nach dem eigentlichen Typen noch verschiedene Werte, die für das Objekt zur Verfügung stehen, weisen den Konstanten Werte zu und können hier auch die Texte definieren, die vielleicht später für das UI von Relevanz sind. Weitere Eigenschaften können wir dann über Annotationen abbilden.

 

Table Entity

Die Table Entity ist die neue Form der Tabelle. Dabei haben wir wie in jedem CDS-Artefakt einen viel längeren Namen, den wir für die Tabelle vergeben können, ebenso können wir Groß- und Kleinschreibung verwenden. Auf den ersten Blick wird dir auffallen, dass das Client-Feld fehlt. Dies wird über eine Annotation im oberen Bereich abgebildet, ebenso wie die verschiedenen Eigenschaften der Tabelle. Auf Ebene der Tabelle können wir Felder definieren, die wiederum Simple Types als Basis haben, und wir können entsprechend die finalen Feldnamen vormodellieren, wie wir sie auch später im Modell verwenden. Wir können auch Annotationen für End-User-Labels verwenden oder Basistypen nutzen, wenn wir die Tabelle modellieren. Ein weiterer Vorteil ist, dass wir direkte Verbindungen über Assoziationen in der Table Entity aufbauen können. Damit bilden wir direkt auf Tabellenebene die Funktion ab und können die Beziehungen darstellen.

 

Auf Ebene der Tabelle können wir auch direkt ein Access Control anlegen, um unsere Tabelle und die Daten darin zu schützen. Damit wird Out-of-the-Box bei jedem Zugriff eine Berechtigungsabfrage durchgeführt, die dann validiert, ob der User überhaupt die Berechtigung hat, die Daten zu sehen.

 

Neben den Assoziationen können wir auch Kompositionen und To-Parent-Beziehungen abbilden. Ebenso können wir eine Root Table Entity definieren. Das bedeutet, wir können auch mit diesen Artefakten direkt ein RAP-Objekt obendrauf modellieren und sparen uns die Zwischenschicht über Core Data Services, ebenso ein Mapping in der Verhaltensdefinition.

 

Abstract Entity

Ein weiterer Typ ist die Abstract Entity. Diese verhält sich ähnlich wie eine Struktur, das heißt, wir haben keine Daten, die dahinter gespeichert werden, und wir können auch keinen SELECT durchführen. Damit definieren wir einen Typen im System, der Felder bereitstellt. Hier können wir Datenelemente verwenden, wir können aber auch Simple Types oder eingebaute Datentypen verwenden, wenn wir die Struktur anlegen. Über eine Annotation haben wir die Möglichkeit, weitere Semantik zu ergänzen oder Texte, die wir später für das UI zur Verfügung stellen wollen.

 

Verwendung

Für die Verwendung schauen wir uns die beiden gleichen Beispiele an, wie wir sie bereits für das Datenmodell von heute machen, und schauen auf die Unterschiede.

 

Selektion

Der SELECT gegen die Table Entity sieht genauso aus wie der SELECT gegen eine Tabelle. Hier ändert sich erst einmal nichts für uns, wenn wir Daten lesen wollen. Der Vorteil der Table Entity ist hierbei, dass automatisch eine Berechtigungsprüfung durchgeführt wird. Das heißt, der ganze Boilerplate-Code, den wir beim Zugriff auf die klassische Tabelle benötigt haben, entfällt hier. Das spart dem Entwickler viel Implementierungsaufwand, und das Thema Security kann so auch nicht mehr vergessen werden.

SELECT FROM ZBS_CDSTable
  FIELDS *
  INTO TABLE @DATA(found_ddics).

 

Konstante

Auch der Zugriff auf Konstanten wird viel einfacher werden. In einem Beispiel definieren wir uns eine lokale Struktur über die abstrakte Entität, die wir vorher definiert haben. In der IF-Abfrage können wir dann direkt das Simple Enum verwenden und haben hier die Möglichkeit, auf den einzelnen Wert des Simple Enums zuzugreifen. Damit entfällt die Definition einer lokalen Klassenstruktur. Wir erhalten immer die aktuellen Werte, die im Enum definiert sind, und müssen nichts doppelt oder redundant pflegen.

DATA local_structure TYPE ZBS_S_CDSInformation.

IF local_structure-ActionItem = ZBS_SE_CDSActionItem-enhancement.
  " TODO
ENDIF.

 

Vollständiges Beispiel

Alle erstellten Elemente und Beziehungen findest du in einem neuen GitHub Repository. Im Unterpaket ZBS_DEMO_DDIC_NEW findest du alle klassischen DDIC Elemente. Im Oberpaket haben wir übergreifende Elemente definiert, die wir verwenden.

 

Fazit

Das Modell von Morgen besteht nur noch aus "CDS-only"-Artefakten und bringt alle Vorteile mit die auch Core Data Services haben. Wir bekommen endlich längere Namen für die verschiedenen Objekte und können damit nativ Daten modellieren, die wir so an das Frontend weitergeben. Damit sparen wir uns verschiedene Schichten, die wir bisher definieren mussten,wie das Mappings von Feldern, und verschlanken somit auch die Modellierung in unseren Anwendungen.


Enthaltene Themen:
TippDDICCDSMorgen
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 (Vergleich)

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 vergleichen wir die Welt von Heute mit der von Morgen und wo du alle Features findest.

03.07.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