This is a test message to test the length of the message box.
Login
ABAP CDS Erweiterung
Erstellt von Software-Heroes

CDS - Erweiterung von Views

1330

In diesem Artikel geht es um die Erweiterung von Views, um kundeneigene Felder aufzunehmen oder fehlende Informationen nachzuliefern.

Werbung


Artikel-Update: Seit Release 7.57 (S/4 HANA 2022) ist DEFINE VIEW als obsolet gekennzeichnet, stattdessen solltest du DEFINE VIEW ENTITY verwenden. Diese können an einigen Stellen zu den Beispielen abweichen. Mehr Informationen zu den neuen Views findest du in diesem Artikel.



In diesem Artikel schauen wir uns die Erweiterung von Core Data Services an und wie wir zusätzliche Felder Apps zur Verfügung stellen können. Dabei werden wir grob auf die zwei Erweiterungsmethodiken eingehen, die aktuell genutzt werden.

 

Vorbereitung

Im ersten Schritt schauen wir uns die Erweiterung von CDS Views an und wie wir Zusatzinformationen hinzufügen können. Definieren wir dazu erst einmal einen View, den wir erweitern wollen. Dieser basiert auf dem Basic View für Rabatte:

@AbapCatalog.sqlViewName: 'ZBSCDMODISEXT'
@EndUserText.label: 'CDS Extension'
define view ZBS_C_DmoDiscountExtension
  as select from ZBS_I_DmoDiscount
{
  key PartnerNumber,
  key MaterialNumber,
      DiscountValue,
      _Material.MaterialName,
      _Material.MaterialDescription
}

 

Wie du siehst handelt es sich um einen einfachen View, wir übernehmen die Schlüssel und prägen einige Zusatzinformationen an Texten für das Material aus.

 

EXTEND VIEW

Im zweiten Schritt wollen wir den View "ZBS_C_DmoDiscountExtension" nun erweitern da wir zusätzliche Informationen benötigen, die aktuell in der App fehlen die über diesem View liegt. Gehen wir davon aus, dass wir die View nicht erweitern können, da es sich um eine Standard-View handelt. Dazu legen wir einen neuen Core Data Services an, aber mit dem Muster "Extend View" und wir übernehmen das neue Feld:

@AbapCatalog.sqlViewAppendName: 'ZBSEDMODISEXT'
@EndUserText.label: 'Extension for ZBS_C_DmoDiscountExtension'
extend view ZBS_C_DmoDiscountExtension with ZBS_E_DmoDiscountExtension
{
  _Partner.PartnerName
}

 

Die Annotation "@AbapCatalog.sqlViewAppendName" unterscheidet sich zu den bisher angelegten Views. Hier definieren wir eine Erweiterung des Core Data Service und fürgen den PartnerNamen hinzu. In der SE11 würde das wie folgt aussehen:

 

Das neue Feld wird als Append angelegt und der View damit sauber erweitert. In Eclipse würde man nun am Original-View noch eine entsprechende Markierung erhalten:

 

Im CDS Navigator des Views taucht ebenfalls der entsprechende Eintrag auf und weist auf die Erweiterung hin:

 

Schauen wir uns nun den "Data Preview" für den Core Data Service an, wird automatisch das neue Feld übernommen und steht uns zur Verfügung. Der View wurde entsprechend erweitert, ohne den Original-View ändern zu müssen:

 

Hinweis: Die Erweiterung erhält ebenfalls eine eigene Namenskonvention mit E wie Extension, damit der Extension View vom Datenmodell abgrenzbar bleibt.

 

Assoziation

Die zweite Möglichkeit der Erweiterung ist die Einbindung einer Extension per Assoziation in die verschiedenen Entitäten des Datenmodells, vor allem dann, wenn auch die Datenbanktabelle das neue Feld benötigt. In diesem Erweiterungsszenario sollen zusätzliche Daten in der Applikation gespeichert werden, aber auch gleichzeitig die App die Daten in der UI anzeigen.

Die Erweiterungen werden in den meisten Fällen als "_Extension" eingebaut und zur Verfügung gestellt. Als eigen View bindet es direkt die Datenbanktabelle ein und wird per Assoziation in die entsprechenden Views implementiert: 

 

Die Felder können dann wieder mit einem Extend an die Extension-View gehangen werden. Diese Views haben meist dann auch die entsprechende Annotation "@VDM.viewType: #EXTENSION". Diese Erweiterungsmöglichkeit wird vor allem im SAP Standard eingesetzt, wenn man mit den Key-User-Apps arbeitet.

 

Fazit

Die Erweiterung von CDS Views ist mittlerweile auch Modifikationsfrei möglich und die Ressourcen bleiben sauber im System getrennt. Wenn du weitere Inhalte in einem View brauchst, solltest du vor dem Kopieren an das erweitern denken.


Enthaltene Themen:
CDSCore Data ServiceErweiterungExtend
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden 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.


CDS - Writable View Entity

Kategorie - ABAP

Kannst du einen UPDATE auf einen Core Data Service in ABAP machen? Lass uns dazu die neuen CDS View Entitäten anschauen.

01.04.2025

CDS - Berechtigungsprüfung (Teil 2)

Kategorie - ABAP

Wie gehst du mit dem Thema Zugriffskontrolle bei Core Data Services in ABAP um und wie kannst du Fehler analysieren? Mehr dazu im Artikel.

14.03.2025

CDS - Hierarchie

Kategorie - ABAP

Was machen eigentlich Hierarchien und wie kannst du sie mit Core Data Services in ABAP aufbauen? In diesem Artikel schauen wir uns die Definition an.

07.02.2025

CDS - Migration der Views

Kategorie - ABAP

Du hast noch viele alte Core Data Services in deinem ABAP System? Zeit für die Migration zur neuen Entität.

15.11.2024

CDS - Typen und Enums

Kategorie - ABAP

Was wird im ABAP Dictionary die Datenelemente ablösen und wie kannst du schon heute die Typen für die Core Data Services verwenden? Mehr hier.

05.11.2024