Hoy vamos a empezar con una de mis favoritas, las vistas ABAP CDS, una tecnología básica en el uso de BD HANA, y un imprescindible que debe conocer todos aquellos perfiles que quieren mantenerse actualizados.
¿Qué son las vistas ABAP CDS?
ABAP CDS es una infraestructura creada por SAP para definir y consumir modelos de datos en SAP HANA. Utilizan un lenguaje de definición (DLL), un lenguaje de consulta (QL) y un lenguaje de control de datos (DCL). Para enriquecer estos desarrollos, se pueden utilizar otras tecnologías como AMDP y BOPF para permitir ampliar la funcionalidad de nuestras aplicaciones Fiori.
A partir de la versión NetWeaver 7.4 SP05, se introduce el concepto CDS en ABAP, permitiendo desarrollar este tipo de vistas (en el diccionario ABAP) mediante el uso de los ABAP Developtment Tools (ADT) que utilizamos con los IDES de desarrollo Eclipse, VS Code, o BAS.

Las vistas ABAP CDS permiten trasladar el desarrollo a la capa de base de datos, optimizando el comportamiento y rendimiento de nuestras aplicaciones. Esta optimización se debe a que en los desarrollos ABAP clásicos, el código se sitúa en la capa del servidor de aplicaciones y cada sentencia que tiene que recuperar información de la base de datos requiere de una conexión contra esta; mientras que en una metodología en la que el desarrollo se ejecuta en la capa de base de datos, ahorramos estos tiempos de latencia de conexiones entre servidor de aplicaciones y base de datos.
¿Cómo generamos las vistas ABAP CDS?
Para generar una vista CDS, vamos a nuestro entorno Eclipse y, sobre un paquete previamente creado, pulsamos en botón derecho, New → Other Abap Repository Object. Buscamos la sección Core Data Services y seleccionamos Data Definition.

Indicamos una nombre a la vista CDS y una descripción.

Por último, seleccionamos una orden de transporte y finalizamos el proceso.
Ahora, tendremos una nuevo directorio en nuestro paquete llamado Core Data Services->Data Definitions y, dentro, podremos encontrar la vista que acabamos de crear.

En el código autogenerado, podemos ver diferentes colores según la sintaxis o donde se encuentran. Al comienzo del código, siempre encontraremos las anotaciones que aplican sobre la vista en general. Existen muchas anotaciones para diferentes usos, en este caso, podemos ver entre otras, anotaciones para indicar un nombre descriptivo a nuestra vista o la primera anotación (siempre irá la primera) para indicar un nombre a nuestra vista SQL. Existen muchos tipos de anotaciones que iremos viendo a lo largo de los artículos
@AbapCatalog.sqlViewName: 'ZVEJEMBLOG' '--> Nombre SQL de la vista'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Vista cds ejemplo blog' '--> Descriptivo de la vista CDS'
define view ZCDS_EJEMPLO_BLOG
as select from data_source_name {
}
Por otro lado, tenemos la definición propia de la vista, donde se realiza un select a una tabla o a otra vista CDS. Para empezar con algo sencillo, haremos una consulta a la tabla de vuelos predefinida en SAP.
@AbapCatalog.sqlViewName: 'ZVEJEMBLOG'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Vista cds ejemplo blog'
define view ZCDS_EJEMPLO_BLOG
as select from sflight {
key carrid,
key connid,
key fldate,
price,
currency
}
Como vemos, la sintaxis es la siguiente: indicamos que tabla o vista ABAP CDS queremos consultar y , a continuación, entre las llaves, indicamos aquellos campos que van a ser expuestos, es decir, que campos vamos a recuperar o qué campos nos interesan proyectar. El select, al igual que realizamos en ABAP, puede tener cualquier tipo de join, de union, etc con otras tablas, los cuales iremos viendo más adelante.
Es importante que nos quedemos con la idea de que los campos expuestos serán aquellos que recuperamos, y que es importante definir bien las claves de la tabla a la que estamos accediendo mediante la palabra reservada ‘key’, y que expongamos solamente aquello que necesitamos. Se puede asignar un alias a cada campo, de esta forma, cuando ejecutemos la vista CDS las columnas aparecerán renombradas con el texto que le hayamos asignado.
@AbapCatalog.sqlViewName: 'ZVEJEMBLOG'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Vista cds ejemplo blog'
define view ZCDS_EJEMPLO_BLOG
as select from sflight
{
key carrid as IdVuelo,
key connid,
key fldate as Fecha,
price as Precio,
currency as Moneda
}
Por último, podemos ejecutar el resultado de nuestra primera vista CDS pulsando en botón derecho → Open With → Data Preview. Esto nos mostrará todos los datos que obtiene la CDS.

Algo importante que debemos tener en cuenta, es que esta herramienta de ejecución es interesante para medir cuanto tarda nuestra vista CDS en obtener los datos. Como vemos, arriba justo de los resultados, nos indica el tiempo que ha tardado en recuperar los datos. Además, en la parte superior derecha, podemos indicar el número de filas máximo que queremos mostrar por pantalla, asi como añadir cualquier filtro que queramos con la opción ‘Add Filter’.
En próximos artículos, veremos consultas más complejas donde aprenderemos la sintaxis de los join y las asociaciones en vistas CDS.