Core Data Services (CDS) ABAP

CDS Scalar Functions

(C) Brandeis Consulting

Motivation: Warum Scalar Functions?

CDS Views und TableFunctions sind für tabellarische Ergebnisse gedacht.
Aber was, wenn man einzelne Werte berechnen möchte?

✅ Wiederverwendbare Berechnungen
✅ Nutzt SQLScript-Logik im CDS-Kontext
✅ Kann in CDS Views, AMDP oder ABAP SQL eingebettet werden

(C) Brandeis Consulting

Was ist eine Scalar Function?

  • Eine CDS Scalar Function ist eine Funktion, die:
    • einen Eingabewert entgegennimmt (oder mehrere)
    • einen einzelnen Wert zurückliefert
  • Wird im DDLS deklariert
  • Wird mit SQLScript implementiert
  • Rückgabewert ist ein Skalar (z. B. abap.int4, abap.string, abap.bool)

➡️ Wird wie ein Funktionsaufruf verwendet, z. B. get_priority_cat( t.priority )

(C) Brandeis Consulting

Definition einer Scalar Function

define scalar function ZUDF_NAME
  with parameters
    Firstname: abap.char( 50 ),
    Lastname: abap.char( 50 )
  returns abap.char( 53 ); //Jörg Brandeis ==> J. Brandeis

➡️ Parameter können mehrere sein
➡️ Der Rückgabewert ist genau ein Feld

(C) Brandeis Consulting

Scalar Function Implementation Reference

Die Verbindung von der Function zur Implementierung ist ein eigenes Entwicklungsobjekt.

Der Name muss mit _SQL enden.

(C) Brandeis Consulting

Implementierung mit AMDP

CLASS zcl_amdp_udf DEFINITION
  PUBLIC FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_amdp_marker_hdb.

    CLASS-METHODS name FOR SCALAR FUNCTION zudf_name.
ENDCLASS.


CLASS zcl_amdp_udf IMPLEMENTATION.
  METHOD name BY DATABASE FUNCTION FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY.

    result = left( upper( Firstname ), 1 )|| '- ' || initcap( Lastname );
  ENDMETHOD.
ENDCLASS.
(C) Brandeis Consulting

Nutzung in CDS Views

define view entity ZI_00_USERS
  as select from zbc_users
{
  key user_id       as UserId,

      zudf_Name( Firstname => firstname, 
                 Lastname => lastname)     as Name
}

➡️ So einfach wie jede andere SQL-Funktion verwendbar!

(C) Brandeis Consulting

Nutzung in ABAP SQL

➡️ Laut Doku in Cloud Systemen (Public/Steampunk) möglich, aber auf 2023 lieft das noch Fehler!

    SELECT FROM zbc_users
      FIELDS user_id,

             zudf_Name( Firstname = firstname,
                        Lastname  = lastname ) AS NAME

      INTO TABLE @DATA(Result).
(C) Brandeis Consulting

Typische Einsatzszenarien

✅ Kategorisierung (z. B. Prio, Alter, Umsatzgruppen)
✅ Validierung & Transformation von Eingabewerten
✅ Kürzel, Formatierungen, kurze Berechnungen
✅ Reusable Business Logic auf SQLScript-Basis

(C) Brandeis Consulting

Einschränkungen & Hinweise

  • Performance muss man gründlich testen
  • Keine Seiteneffekte erlaubt (nur lesend)
  • Eingabeparameter müssen skalar sein
(C) Brandeis Consulting

Zusammenfassung

✅ CDS Scalar Functions = kleine, wiederverwendbare Recheneinheiten
✅ Rückgabe ist genau ein Wert
✅ Einsetzbar in CDS, Open SQL, AMDP
✅ Implementierung erfolgt in SQLScript

(C) Brandeis Consulting