Core Data Services (CDS) ABAP

CDS Table Functions

(C) Brandeis Consulting

Motivation: Warum Table Functions?

CDS Views reichen oft aus – aber manchmal braucht man mehr Features:

  • Wenn komplexe Logik nötig ist
  • Zugriff auf HANA-spezifische SQL-Funktionen oder SQLScript
  • Dynamische Datenzugriffe
  • Daten aus anderen DB-Schema

➡️ CDS Table Functions sind AMDP Funktionen, die in SQLScript implementiert werden und für den Verwender/Aufrufer aussehen wie ein CDS Objekt.

(C) Brandeis Consulting

Was ist eine CDS Table Function?

(C) Brandeis Consulting

Was ist eine CDS Table Function?

  • Kombination aus CDS-Definition & SQLScript-Logik
  • Kein klassischer View – sondern:
    • CDS DDL-Quelltext
    • ABAP-Methode in einer AMDP-Klasse
  • Rückgabe: Tabellarische Ergebnismenge wie bei CDS Views
(C) Brandeis Consulting

D Definition einer CDS Table Function

In einer CDS Data Definition wird die Struktur der CDS Table Funktions definiert:

  • Die Parameter (Optional)
  • Die Feldliste der Rückgabetabelle

Am Ende wird mit IMPLEMENTED BY METHOD <Klassenname>=><Methodenname> die Implementierungsmethode addressiert:

@EndUserText.label: 'Table Function'

define table function zi_table_function

returns

{
  mandt : abap.clnt;
  Country : land1;
  CountryText: landx50;
}

implemented by method zcl_amdp_table_function=>CountryText;
(C) Brandeis Consulting

C Implementierung in AMDP

Die Implementierung als ABAP Managed Database Procedure (AMDP) erfolgt in einer ABAP Klasse . Voraussetzungen hierfür sind:

  • Das Interface IF_AMDP_MARKER_HDB ist implementiert
  • Die Methode ist statisch als CLASS-METHODS definiert
  • Statt einer Parameterdefinition steht hier: FOR TABLE FUNCTION <tf-Name>
CLASS zcl_amdp_table_function DEFINITION 
  PUBLIC FINAL CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_amdp_marker_hdb.
    CLASS-METHODS CountryText FOR TABLE FUNCTION zi_table_function.

ENDCLASS.

CLASS zcl_amdp_table_function IMPLEMENTATION.
  METHOD countrytext 
        BY DATABASE FUNCTION 
        FOR HDB LANGUAGE SQLSCRIPT 
        OPTIONS READ-ONLY 
        USING t005t.

    TMP = select distinct mandt,
                          land1 as Country,
                          landx as CountryText
                   from t005t
                   where mandt = session_context( 'CLIENT' );

    return select mandt,
                  Country,
                  string_agg( CountryText, '/' ) as CountryText
                  from :TMP
                  group by Country, mandt;
  ENDMETHOD.
ENDCLASS.
(C) Brandeis Consulting

Nutzung im ABAP

SELECT * FROM ztf_kunden_umsatz( p_kunnr = '123456' )
  INTO TABLE @DATA(result).

➡️ Direkte Verwendung im Open SQL
➡️ Auch in CDS konsumierbar

(C) Brandeis Consulting

Typische Use Cases

✅ Komplexe Berechnungen
✅ Viele aufeinander aufbauende Schritte
✅ Verwendung von HANA-spezifischen Funktionen und Features, die im CDS nicht möglich sind. z.B. Window Functions
✅ Zugriff auf andere Datenbankschema, z.B. _SYS_BIC

(C) Brandeis Consulting

Best Practices

✔️ Nur aus gutem Grund nutzen
✔️ Keine Imperative Logik
✔️ Clean SQLScript!

(C) Brandeis Consulting

Zusammenfassung

  • Table Functions = CDS mit SQLScript-Logik im Hintergrund
  • Ermöglichen HANA-spezifische Features und komplexe Berechnungen
  • Kein Ersatz für CDS Views – sondern Ergänzung
  • Immer auf Performance & Lesbarkeit achten

(C) Brandeis Consulting