CDS Function Definitions
Las CDS Function Definitions en ABAP CDS permiten crear funciones personalizadas para encapsular algoritmos reutilizables dentro de las entidades de datos de SAP. Estas funciones mejoran la eficiencia al permitir que los cálculos complejos se realicen directamente en la base de datos, optimizando el rendimiento del sistema. Gracias a esta funcionalidad, los desarrolladores pueden definir funciones escalares que pueden ser utilizadas en posiciones de operandos dentro de consultas CDS, reduciendo la redundancia y mejorando la legibilidad del código.
CDS Function Definitions FDL: Lenguaje de Definición de Funciones
Las CDS Function Definitions se escriben en el CDS Function Definition Language (CDS FDL), un lenguaje específico dentro del ecosistema ABAP CDS que permite definir funciones personalizadas con lógica predefinida. A diferencia del código DDL utilizado para definir estructuras de datos, el FDL está diseñado exclusivamente para la creación de funciones, y su edición se realiza en un entorno diferente dentro de las ABAP Development Tools (ADT). Este enfoque garantiza que las funciones sean modulares, reutilizables y optimizadas para su ejecución en la base de datos subyacente.
Diferencias entre CDS Function Definitions y CDS Table Functions
Es importante no confundir las CDS Function Definitions con las CDS Table Functions. Las CDS Function Definitions permiten definir funciones escalares reutilizables dentro de consultas. Por otro lado, las CDS Table Functions encapsulan AMDP (ABAP Managed Database Procedures) y se utilizan como fuentes de datos dentro de CDS. Aunque su nombre sugiere lo contrario, una CDS Table Function no es realmente una función tradicional. En realidad, es una definición de datos en DDL (Data Definition Language). En contraste, las CDS Function Definitions pertenecen al dominio del CDS FDL. Su propósito exclusivo es la manipulación de datos a nivel de funciones escalares.
CDS Function Definitions – CDS Scalar Functions
Las CDS Scalar Functions en ABAP CDS son funciones definidas en el CDS FDL mediante la instrucción DEFINE SCALAR FUNCTION
. Estas funciones personalizadas devuelven un valor escalar, es decir, un resultado único y elemental. Se crean en ABAP Development Tools (ADT) for Eclipse, lo que permite una integración eficiente con otras entidades CDS. Gracias a su diseño, optimizan el rendimiento al ejecutar cálculos directamente en la base de datos. Además, mejoran la reutilización del código al evitar redundancias en consultas complejas. Por esta razón, las CDS Scalar Functions son clave para el desarrollo eficiente en SAP HANA.
Ejemplo Scalar Function
Crear una Scalar Function

Definición de una Scalar Function
define scalar function ZDEMO_CDS_SCALAR_AM
returns abap.char(12)
Definimos una función que regresará un tipo caracter de 12 posiciones.
Creamos un AMDP
Creamos un AMDP que retorne un parámetro tipo caracter de 12 posiciones.
"! <p class="shorttext synchronized" lang="en">AMDP Scalar reference</p>
CLASS zcl_demo_cds_scalar_am_cs DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_amdp_marker_hdb .
CLASS-METHODS :
execute
FOR SCALAR FUNCTION
zdemo_cds_scalar_am.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_demo_cds_scalar_am_cs IMPLEMENTATION.
METHOD execute BY DATABASE FUNCTION
FOR HDB
LANGUAGE SQLSCRIPT
OPTIONS READ-ONLY .
result = 'Hello World!';
ENDMETHOD.
ENDCLASS.
Implementación Scalar Function


Además, es obligatorio agregar uno de los siguientes sufijos al nombre:
- _ANA para funciones escalares analíticas.
- _SQL para funciones escalares basadas en SQL.
Por otro lado, como cliente de SAP, solo tienes la posibilidad de crear funciones escalares basadas en SQL.
Restricción
Actualmente, solo SAP tiene permiso para crear, modificar o ampliar funciones escalares analíticas en CDS. Como cliente de SAP, puedes utilizarlas únicamente en vistas de proyección CDS que cuenten con un contrato de proveedor con una consulta analítica.
Agrega la referencia al AMDP

Creamos la CDS que utilizará la función
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'DEMO_CDS_SCALAR_USE'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType:{
serviceQuality: #X,
sizeCategory: #S,
dataClass: #MIXED
}
define view entity ZDEMO_CDS_SCALAR_USE as select from ZCDS_BASE_SALES
{
key id as id,
ZDEMO_CDS_SCALAR_AM() as text
}
Documentación OficialCDS Function Definitions SAP
Para más información sobre las Scalar Function sigue el siguiente enlace.