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

CDS - Grundlagen

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

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)

CDS - Berechtigungsprüfung

Kategorie - ABAP

Wie und wo werden die Berechtigungen für ein Core Data Service abgegrenzt? In diesem Artikel erfährst du die Einzelheiten dazu.

20.05.2022

CDS - Erweiterung von Views

Kategorie - ABAP

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

13.05.2022

CDS - Performance

Kategorie - ABAP

Wie sieht es eigentlich bei der Nutzung von Core Data Services mit der Performance bei den Zugriffen aus, kann man Fehler dabei machen?

29.04.2022

CDS - Konvertierungsroutine

Kategorie - ABAP

In diesem Artikel geht es um die einfache Konvertierung von Währungen und Mengen direkt in Core Data Services.

22.04.2022

CDS - Parameter

Kategorie - ABAP

In diesem Artikel schauen wir uns Parameter in Core Data Services an und wie sie dein Leben erleichtern können oder auch erschweren.

15.04.2022