top of page
Buscar

CDS PROJECTION VIEW EN ABAP CDS

Foto del escritor: Sergio CannelliSergio Cannelli


 

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


bottom of page