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

CDS - Grundlagen

417

Core Data Services sind in einem S/4 System gar nicht mehr weg zu denken, sie bilden logische Zugriffe auf Daten und bieten neue Wege bekannte Tabellen zu übersetzen.

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.



Core Data Services, kurz CDS, gibt es bereits seit einem 7.40 (SP05) Release. Mit noch nicht besonders großem Umfang, aber schon für den ersten Einsatz bereit. CDS Views haben sich die letzten Jahre stark weiterentwickelt und bilden mittlerweile die Grundlage für das ABAP RESTful Programing Model.

 

Was sind CDS Views?

Core Data Services bilden eine neue Art von Views im System ab und können über die klassische Workbench nicht angelegt und erst in neuen Releases auch über die SAP GUI angeschaut werden. Sie werden vor allem für die folgenden Dinge eingesetzt:

  • Abstrakte Schicht über der Datenbank
  • Modellierung von Entitäten und Geschäftsobjekten
  • Normalisierung von Daten

 

Die Views werden auf der Datenbank generiert und können dann zum Beispiel über die SE11 eingesehen werden. Dazu ist dann auch die DDL Source verfügbar, der eigentliche "Code" um die View zu erstellen.

 

Datenmodell

Schauen wir uns einmal eine Tabelle an, dann kann diese Tabelle im System frei gelesen werden und auch geändert werden. Im schlechtesten Fall gibt es keinen zentralen Zugriff (Single Point of Access) um die Daten zu lesen und zu ändern, sondern jedes Programm hat seine eigene Logik.

Mit CDS Views hast du nun die Möglichkeit diesen View oder Unterviews überall in deinen Programmen zu verwenden, ohne Sorgen zu machen das sich Felder in der Tabelle ändern. Sollte dies der Fall sein, muss nur der unterste View (Interface) angepasst werden und das gesamte Modell arbeitet weiterhin Fehlerfrei und bekommt von der Änderung nichts mit.

Wie bei der Verwendung von Interfaces ist die eigentliche Implementierung nicht relevant, solange die Schnittstelle stabil bleibt. Daher kommt auch der Name dieser Schicht.

 

Beispiel

Legen wir dazu einen einfachen CDS View für die Tabelle T001 an und geben den Feldern entsprechende englische Langnamen, um Bedeutung und Hintergrund besser verständlich zu machen. Der View könnte nun wie folgt aussehen:

@AbapCatalog.sqlViewName: 'ZBSICOMPCODE'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Example for T001'
define view ZBS_I_CompanyCode
  as select from t001
{
  key bukrs as CompanyCode,
      butxt as CompanyCodeDescription,
      land1 as Country,
      waers as Currency,
      spras as Language,
      xprod as ProductiveFlag
}

 

Wir verwenden vor dem View sogenannte Annotationen die  mit @ anfangen, hierbei handelt es sich nicht um Kommentare im View, sondern steuernde Eigenschaften. Die Annotation "sqlViewName" definiert den View auf der Datenbank und das "label" Feld definiert die Beschreibung des Views. Der Name des CDS Views kann nun länger sein als der Tabellenname und CamelCase funktioniert hier genau so.

Wenn du dir nun den View in der SE11 zum Beispiel anschaust, dann siehst du alle definierten Elemente wie wir sie auch in der Definition angelegt haben.

 

Vom SQL View kommen wir auf die Definition und anders herum. Ebenso sehen wir die übersetzten Feldnamen. Wie greifen wir nun auf diese Daten zu? Dazu kannst du einfach einen normalen SELECT verwenden, dieser funktioniert genau so wie mit Tabellen.

CLASS zcl_test_easy_cds DEFINITION PUBLIC FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.


CLASS zcl_test_easy_cds IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    SELECT *
      FROM ZBS_I_CompanyCode
      INTO TABLE @DATA(lt_all_companies).

    out->write( lt_all_companies ).

    SELECT CompanyCode, CompanyCodeDescription
      FROM ZBS_I_CompanyCode
      INTO TABLE @DATA(lt_company_names).

    out->write( lt_company_names ).
  ENDMETHOD.
ENDCLASS.

 

Suche

Wie findest du Core Data Services in Eclipse? Dazu kannst du den "Type" Filter nutzen. Dazu musst den Typ DDLS angeben und kannst dann nach den entsprechenden Objekten suchen. Hier haben wir einmal eine Beispielsuche, in der wir als CDS Views mit Company und einem gewissen Pattern suchen wollen.

 

Code-Pushdown

Ein zentraler Bestandteil der neuen View ist der Code-Pushdown, wobei es vor allem um die Verlagerung von Rechenleistung auf die Datenbank geht. Operationen wie Aggregation, JOIN, UNION oder Berechnungen sollen durch die Datenbank durchgeführt werden. Das finale Ergebnis wird dann Richtung ABAP Stack transferiert und kann weiter verarbeitet werden. Damit kann ein Großteil der Aktionen auf dem Applikationsserver entfallen, um weitere Daten zu lesen und zusammenzuführen.

Im Artikel letzte Woche hatten wir den Unterschied von R/3 zu S/4 vorgestellt und das die Datenbank sehr schnell ist. Diese Funktion wollen wir an dieser Stelle auch nutzen.

 

Fazit

Core Data Services werden die nächsten Jahre immer wichtiger werden und Entwickler werden in einigen Jahren nur noch über die Views, anstatt Tabellen, reden. Im nächsten Artikel schauen wir uns das virtuelle Datenmodell etwas näher an.


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


ABAP - CDS Extraktor

Kategorie - ABAP

Wie funktioniert der CDS Extraktor in ABAP und welche Herausforderungen gibt es bei der Entwicklung damit. In diesem Artikel schauen wir uns ein paar Details an.

20.09.2024

ABAP Tools - Arbeiten mit Eclipse (CDS Templates)

Kategorie - ABAP

Wieder das falsche CDS Template bei der Erstellung ausgewählt? Hier ein kleiner Tipp um nachträglich noch den View in ABAP zu korrigieren.

02.07.2024

ABAP Tools - Arbeiten mit Eclipse (CDS Analyse)

Kategorie - ABAP

In der komplexen Welt der CDS Views ist es wichtig, das richtige Tool zur Hand zu haben, um eine Analyse der Strukturen und Datenquellen sicherzustellen.

25.08.2023

CDS - View Entity

Kategorie - ABAP

In diesem Artikel erfährst du mehr über die neuen Core Data Service Entitäten, was sie bringen und was sie von den alten Views unterscheidet.

29.07.2022

CDS - Learnings

Kategorie - ABAP

In diesem Artikel fassen wir noch einmal die gelernte Inhalte zusammen und weisen dir den Weg, für was du in Zukunft die CDS Views brauchst.

10.06.2022