ABAP CDS Projection Views

ABAP CDS Projection Views

ABAP CDS Projection Views – En el dinámico mundo de SAP, Core Data Services (CDS) se ha convertido en una tecnología esencial para definir modelos de datos robustos y escalables. En particular, las Projection Views son una herramienta poderosa para adaptar y optimizar estos modelos para casos de uso específicos. En este artículo, exploraremos en detalle qué son las CDS Projection Views, cómo se diferencian de las CDS Entity Views, y cuáles son sus ventajas. Además, proporcionaremos un ejemplo práctico de una CDS transactional query.

¿Qué son las CDS Projection Views?

Una projection view en ABAP CDS es una vista definida a partir de otra entidad CDS, que expone solo un subconjunto de sus elementos, adaptándola a necesidades específicas sin duplicar la lógica de la entidad base. Es una forma de proyectar partes de datos según el contexto, simplificando el acceso a la información.

Una CDS Projection View se define en el código fuente DDL (Data Definition Language) de una definición de datos CDS en ABAP. Con la sentencia:

DEFINE [ROOT] VIEW ENTITY projection_view
   [ PROVIDER CONTRACT TRANSACTIONAL_QUERY]
    AS PROJECTION ON cds_entity [AS alias_name]

se crea una vista que se basa en otra entidad CDS, denominada projected entity. En otras palabras, la Projection View adapta un modelo de datos CDS existente para satisfacer requerimientos específicos de un servicio o una aplicación.

El contrato del proveedor define el escenario en el que se utiliza una vista de proyección CDS. Dicho escenario determina en qué entorno de ejecución se procesa la vista y qué funcionalidades están disponibles. Se recomienda siempre incluir el contrato del proveedor para garantizar que se apliquen las comprobaciones de sintaxis específicas del entorno de ejecución.

También es posible, aunque no aconsejable, omitir el contrato del proveedor. Las vistas de proyección sin contrato se gestionan de manera similar a las vistas de proyección transaccionales, pero presentan algunas diferencias menores en las comprobaciones de sintaxis aplicadas.

Diferencias con una CDS Entity View

Aunque ambas, las CDS Entity Views y las Projection Views, forman parte del modelo de datos CDS, presentan diferencias importantes:

  • CDS Entity Views: Son vistas base que se definen para representar tablas o conjuntos de datos y se pueden utilizar para operaciones CRUD (Create, Read, Update, Delete). Generalmente, estas vistas están diseñadas para mapear directamente la estructura de la base de datos.
  • CDS Projection Views: Se crean sobre una CDS Entity View existente. Su principal objetivo es adaptar la información de manera específica para ciertos escenarios, por ejemplo, para exponer datos a través de interfaces de servicio. De hecho, la client handling (manejo de clientes) se realiza de forma implícita y automática en las Projection Views, siguiendo las mismas reglas que para las CDS Entity Views. Sin embargo, a diferencia de estas últimas, el table buffering no es aplicable a las Projection Views, ya que el buffering en general no funciona con otra vista CDS como fuente de datos.

Ventajas de Utilizar CDS Projection Views

Existen varias ventajas al utilizar Projection Views en ABAP CDS:

  1. Adaptabilidad del Modelo de Datos: Las Projection Views permiten transformar y adaptar la información de una CDS Entity para casos de uso específicos, lo que resulta especialmente útil cuando se deben cumplir requisitos particulares en aplicaciones de negocio.
  2. Reutilización de Componentes: Al basarse en CDS Entity Views, se facilita la reutilización de un modelo de datos existente, evitando la duplicación de lógica y promoviendo un diseño modular.
  3. Integración con RAP: Las CDS Projection Views son fundamentales en el contexto del ABAP RESTful Application Programming Model (RAP), ya que permiten definir capas de consulta transaccionales e interfaces estables para objetos de negocio (Business Objects). Esto es esencial para la construcción de aplicaciones modernas y escalables.
  4. Gestión Implícita del Cliente: Gracias a que el manejo de clientes se realiza automáticamente, los desarrolladores pueden enfocarse en la lógica de negocio sin preocuparse por detalles de implementación complejos.

Tipos de Projection Views

Según el propósito y el caso de uso, se pueden crear diferentes tipos de Projection Views. Entre ellos destacan:

  • CDS Transactional Queries: Estas definen la capa de proyección de un objeto de negocio RAP y son vistas SQL, lo que significa que pueden ser consultadas y modificadas mediante ABAP SQL.
  • CDS Transactional Interfaces: Funcionan como una capa de interfaz pública estable en el modelo de datos CDS. Se utilizan principalmente en el contexto del RAP para exponer interfaces de objetos de negocio.
  • CDS Analytical Queries: Diseñadas para modelar consultas analíticas dentro del CDS, se evalúan mediante un motor analítico y no son vistas SQL.

Aunque la opción “no provider contract specified” está obsoleta, se recomienda siempre especificar un provider contract para aprovechar todas las funcionalidades disponibles y evitar advertencias en la sintaxis.

Ejemplo Práctico: CDS Transactional Query

Entidad base:

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Base entity'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType:{
    serviceQuality: #X,
    sizeCategory: #S,
    dataClass: #MIXED
}
define root view entity ZCDS_BASE_SALES
  as select from zcustomers
{
  key customerid as id,
      name       as name,
      location   as location,
      phone      as phone
}

Projection View

@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Projection view'
@Metadata.ignorePropagatedAnnotations: true
define root view entity ZCDS_PV__SALES_ORDERS
  provider contract transactional_query
  as projection on ZCDS_BASE_SALES
{
  key id   as client_id,
      name as client_name
}

Conclusión

En conclusión, las CDS Projection Views en ABAP CDS son una técnica poderosa para optimizar y adaptar modelos de datos en SAP. Al separar la lógica de consulta de la entidad base, estas vistas permiten construir aplicaciones más flexibles y eficientes. Además, su integración con el ABAP RESTful Application Programming Model (RAP) facilita la exposición de interfaces estables y la reutilización de componentes en el sistema.

Documentación Oficial sobre las CDS Projection Views en SAP ABAP

Visita la documentación oficial de este tema en el siguiente enlace.