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

CDS - Aufbau eines Views

347

In diesem Artikel wollen wir dir den Aufbau und die Funktionsweise eines CDS Views näher bringen. Wie sieht ein View aus und wie funktioniert er.

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.



Die Grundlagen haben wir in den ersten drei Artikeln der Serie gelegt, heute geht es darum wie du mit Eclipse deinen ersten View erzeugst. Weiterhin wollen wir dir zeigen was in so einem View schon einmal funktioniert und wie du die entsprechenden Element ansteuerst und verwendest.

 

Datenmodell

Am aktuellen Datenmodell für unsere Demos arbeiten wir noch, wir werden es dir aber noch zeitnah in einem Aritkel vorstellen und wie wir dabei vorgegangen sind. Für die heutigen Beispiele verwenden wir aber schon einmal die erste Tabelle aus dem Modell. Die Tabelle sieht wie folgt aus:

 

Sie enthält Daten für unsere Geschäftspartner mit denen wir handeln. Dabei haben wir in die Tabelle bereits erste Datensätze eingefügt um Stammdaten zur Verfügung zu haben:

 

Eclipse

Die Anlage von Core Data Services kann nur mit Eclipse und den ABAP Development Tools (ADT) durchgeführt werden. In SAP ist lediglich eine Anzeige des Views möglich, aber keine Anlage oder Änderung, dies ist aber abhängig vom Release des Systems.

Der einfachste Weg einen CDS View für eine Tabelle anzulegen ist dabei das Kontext-Menü der Tabelle im Project Explorer. An Hand des Kontextes leitet das Tool ab, welche Aktionen wir mit dem Objekt oder in diesem Bereich durchführen können.

 

Nach Auswahl der Aktion "New Data Definition" hast du nun die Möglichkeit weitere Informationen zum Objekt zu befüllen, das System hat bereits das Referenzobjekt an Hand des Kontextes vorbefüllt. Den Namen des CDS Views kannst du in CamelCase hinterlegen. Wie du bereits im virtuellen Datenmodell gelernt hast, wollen wir erst einmal einen klassichen Interface oder Basic View definieren.

 

Nach Auswahl des Transportauftrags können nun verschiedene Templates gewählt werden, je nachdem was für einen View du definieren möchtest. In diesem Fall reicht ein einfacher View für die Tabelle.

 

Interface View

Das Ergebnis der Generierung ist ein fast vollständiger Core Data Service der nun das folgende Format hat. Wobei wir mit der Arbeit noch nicht ganz fertig sind, sondern es sich um ein erstes Template handelt.

@AbapCatalog.sqlViewName: ''
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Interface for Partner'
define view ZBS_I_DmoPartner as select from ZBS_DMO_PARTNER {
  key partner,
  name,
  street,
  city,
  country,
  payment_currency
}

 

Um den View zu aktivieren müssen wir noch ein paar Informationen hinterlegen. Die Annotation "@AbapCatalog.sqlViewName" muss noch befüllt werden, hier verlangt das System einen Namen für den DDIC View, der am Ende im System generiert wird. Im Gegensatz zum CDS Namen, ist dieser Name nur 16-stellig, wie alle Views und Datenbanktabellen. Weiterhin legen wir noch für die Felder Aliase an und entfernen die Unterstriche aus den Namen. Im Ergebnis sieht dann der View wie folgt aus.

@AbapCatalog.sqlViewName: 'ZBSIDMOPARTNER'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Interface for Partner'
define view ZBS_I_DmoPartner
  as select from zbs_dmo_partner
{
  key partner          as PartnerNumber,
      name             as PartnerName,
      street           as Street,
      city             as City,
      country          as Country,
      payment_currency as PaymentCurrency
}

 

Die ersten 5 Zeilen sind steuernde Annotationen die Grundeinstellungen des Views definieren. Mit "define view" definieren wir den Namen des neuen CDS Views und der SELECT zeigt die Herkunft der Daten. In diesem Fall machen wir einen SELECT von der Tabelle ZBS_DMO_PARTNER. Zwischen den geschweiften Klammern wird die Feldliste definiert. Ein Core Data Service sollte aber ebenso einen Schlüssel haben, hier spielt es aber keine Rolle, ob es sich um den Schlüssel der Datenbank handelt. Mit dem Schlüssel definieren wir die eindeutigen Datensätze, die der View zurückgibt. In der Feldlist haben wir die Möglichkeit noch entsprechende Aliase zu hinterlegen.

Hinweis: Das es sich um den Interface bzw. Basic View handelt, haben wir auch noch die Möglichkeit die Felder in englische Langnamen umzuwandeln und so unser Datenmodell noch sprechender zu machen.

 

Consumption View

Im zweiten Schritt können wir für unseren Interface View einen Consumption View definieren. Dazu kannst du wieder über das Kontext-Menü auf dem View eine neue Data Definition anlegen. Als Template kannst du das gleiche wie für den Interface View verwenden. Anforderung an den View sind alle Partner aus Europe. Der View könnte nun wie folgt aussehen:

@AbapCatalog.sqlViewName: 'ZBSCDMOPAREUROPE'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Partner in Europe'
define view ZBS_C_DmoPartnerEurope
  as select from ZBS_I_DmoPartner
{
  key PartnerName,
      City,
      Country
}
where
     Country = 'DE'
  or Country = 'CH'

 

Im Gegensatz zum Interface View hat dieser View als Datenquelle einen anderen Core Data Service. Wir verwenden nur eine eingeschränkte Menge von Feldern und definieren auch einen komplett anderen Schlüssel. Nach den geschweiften Klammern arbeiten wir mit einer WHERE Bedingung um die Daten einzuschränken. Das gleiche Ergebnis können wir aber auch mit einem einfachen SELECT auf den Interface View erreichen:

SELECT FROM zbs_i_dmopartner
  FIELDS partnername, city, country
  WHERE country = 'DE' OR country = 'CH'
  INTO TABLE @DATA(lt_view_data).

 

Der Unterschied ist aber, dass wir unseren Consumption View auch an verschiedenen Stellen wiederverwenden können und im Anpassungsfall nur diesen View ändern müssen.

 

Fazit

Die Anlage eines ersten CDS Views ist nicht besonders schwer und Eclipse mit den ADTs unterstützt dich dabei. Die Views sind auf Wiederverwendbarkeit ausgelegt, sodass auch Eingrenzungen der Datenmenge mit in den View übernommen werden können und diese nur an einer Stelle gepflegt werden müssen.


Enthaltene Themen:
CDSCore Data ServiceAufbauStruktur
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