Während View Entities oder Table Functions in der Regel auf reale Datenquellen wie Tabellen oder Datenbankprozeduren zugreifen, gibt es mit den Custom Entities eine Möglichkeit, vollkommen eigene Entitäten zu modellieren, die nicht direkt auf einer Datenbankstruktur basieren.
Eine Custom Entity wird mit der Syntax define custom entity with parameters angelegt. Sie definiert ein Datenmodell, das im Gegensatz zu einer normalen View nicht durch einen automatischen SQL-Select befüllt wird. Stattdessen ist die Logik frei gestaltbar und wird über ein ABAP-Handler-Interface implementiert. Damit lassen sich zum Beispiel Daten aus Fremdsystemen einbinden, komplexe Berechnungen durchführen oder Ergebnisse aus Funktionsbausteinen und Klassen in die CDS-Welt integrieren.
Custom Entities sind also eine Art Schnittstellenobjekt innerhalb von CDS. Sie haben eine definierte Struktur mit Feldern und Parametern, doch die Datenquelle ist frei. Das System ruft bei Verwendung automatisch den zugehörigen Implementierungshandler auf, der die Daten liefert. Dadurch sind Custom Entities hochflexibel und ermöglichen Szenarien, die über die reine Datenbankmodellierung hinausgehen.
Wie bei anderen CDS-Artefakten lassen sich auch Custom Entities erweitern. Mit extend custom entity können zusätzliche Felder, Annotationen oder Assoziationen ergänzt werden, ohne die ursprüngliche Definition zu ändern. Damit bleibt das Modell erweiterbar und kann an projektspezifische Anforderungen angepasst werden.
Der besondere Nutzen von Custom Entities liegt darin, dass sie eine Brücke schlagen zwischen der standardisierten CDS-Modellierung und individuellen Logikbausteinen in ABAP. Wer Daten bereitstellen möchte, die nicht direkt aus einer Datenbanktabelle stammen, hat hier das passende Werkzeug.
ABAP Core Data Services (CDS) sind eine moderne Möglichkeit in SAP ABAP, Datenbankabfragen und Datenmodelle zu definieren.
Sie sind ein semantisches Schichtmodell auf der Datenbank, mit dem man Daten deklarativ beschreibt, statt rein prozedural in ABAP zu programmieren.