
Desde la versión 7.83 del kernel, en las vistas de proyección CDS existen mejoras disponibles en diferentes formas personalizadas especificadas mediante la declaración de sintaxis . Cada forma tiene un conjunto de características diferentes y diferentes controles de sintaxis. Esta publicación describe los tipos disponibles de vistas de proyección CDS y dónde encontrar más detalles.

CDS projection view: Definición y propósito
CDS projection view, es la capa superior de un modelo de datos CDS. Exponen datos de un modelo de datos CDS subyacente para un caso de uso dedicado. Corresponden a las vistas de consumo que componen la capa C en el modelo de datos virtual (VDM) que se usa dentro de S/4HANA.
Están disponibles diferentes tipos de CDS projection view. Cada uno viene con su propio conjunto de funciones y sus propias verificaciones de sintaxis, diseñadas para un propósito específico. El tipo de vista de proyección se especifica utilizando la declaración de sintaxis PROVIDER CONTRACT
Actualmente están disponibles los siguientes tipos de CDS projection view.:
CDS transactional query
Kernel release 7.76
SAP BTP ABAP Environment 1905
ABAP release 7.54
CDS analytical query
Kernel release 7.86
SAP BTP ABAP Environment 2111
Proxima actualizacion ON-PREMISE ABAP release 7.57
CDS transactional interface
Kernel release 7.86
SAP BTP ABAP Environment 2111
Próxima actualización ON-PREMISE ABAP release 7.57
No contract
Kernel release 7.76
En desuso desde kernel release 7.83 | SAP BTP ABAP Environment 2102 | ABAP release 7.56 cuando se introdujeron por primera vez los PROVIDER CONTRACT.
CDS transactional query
Las consultas transaccionales de un CDS están destinadas a modelar la capa de proyección de un objeto comercial RAP en el contexto del Modelo de programación de aplicaciones RESTful (RAP) ABAP.
Rol de una vista de proyección CDS de tipo consulta transaccional en un servicio empresarial RAP:

Ejemplo
@EndUserText.label: 'CDS projection view, REDEFINICION'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define root view entity DEMO_CDS_DATOS
provider contract transactional_query
as projection on DEMO_CDS_VIEW_DATOS
redefine association _child
redirected to composition child DEMO_CDS_PV_HIJO
{key Id,
Int1,
/* Associations */
_child.Int1 as field_exposure
}
CDS analytical query
Las consultas analíticas de un CDS están diseñadas para modelar consultas analíticas dentro de un modelo de datos CDS. Anteriormente, las consultas analíticas se realizaban utilizando vistas CDS “normales” (DEFINE VIEW). Esto tenía algunas desventajas. Ahora, las vistas de proyección CDS de tipo consulta analítica mejoran la versión anterior .
Ejemplo
@AccessControl.authorizationCheck: #NOT_ALLOWED
define transient view entity DEMO_CDS_ANALYTIC
provider contract analytical_query
as projection on DEMO_CDS_CUBE_VIEW
{
so_key,
currency_sum,
//selection-related case expression
@Semantics.amount.currencyCode: 'currency_sum'case when lifecycle_status between 'A' and 'B'then amount_sum else null end as QuantityAB,
//formula-related case expression
@Aggregation.default: #FORMULA
casewhen created_on = $session.system_date
then abap.int8'200'else abap.int8'700'end as formula_demo
}where created_on = $session.system_date
CDS transactional interface
Las interfaces transaccionales de un CDS están destinadas a servir como interfaz pública estable. Deben publicarse para la extensibilidad del desarrollador bajo un release contract (C0 o C1) y proporcionan la base para una interfaz RAP BO en el contexto del Modelo de programación de aplicaciones RESTful (RAP) ABAP. El conjunto de características está restringido a elementos de proyección de la entidad proyectada subyacente. No se pueden definir nuevas asociaciones, elementos virtuales o campos.
Posición de una interfaz transaccional CDS en un modelo de datos CDS:

Ejemplo
@EndUserText.label: 'CDS transactional interface'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define root view entity DEMO_CDS_TRANS_INTERFACE_ROOT
provider contract transactional_interface
as projection on DEMO_CDS_PURCH_DOC_M
{key PurchaseDocument,
Description,
Status,Priority,
/* Associations */
_PurchaseDocumentItem:
redirected to DEMO_CDS_TRANS_INTERFACE_CHILD
}
Mas detalle
No Contract
Si no se especifica ningún provider contract ...
Las vistas de proyección CDS se lanzaron por primera vez con la versión 7.76 del kernel. La sintaxis PROVIDER CONTRACT se introdujo por primera vez con la versión 7.83 del kernel.
Las vistas de proyección que se crearon antes de la versión 7.83 no tienen ningún PROVIDER CONTRACT especificado. Estas vistas de proyección se tratan como consultas transaccionales de forma predeterminada. Están disponibles las mismas sentencias y se aplican las mismas comprobaciones de sintaxis que para las consultas transaccionales de UN CDS.
Dado que los provider contract están disponibles, es obligatorio especificar siempre un PROVIDER CONTRACT.
Comentarii