lunes, 11 de septiembre de 2017

ABAP CDS: Introducción

“ Las aplicaciones van y vienen, pero los datos viven para siempre “
Cameron O’Rourke –ORACLE

El modelo entidad/relación es y a sido una de las mejores forma de de representar la estructura de la base de datos, las tablas implicadas en cada consulta SQL y sus relaciones. Un buen programador, antes de empezar a escribir código, dedica un tiempo en modelar el programa y a analizar a que datos va ha acceder y como hacerlo de la manera más optima.

Diagrama entidad/relación de varias tablas de SAP

Yo personalmente, utilizo los diagramas de entidad/relación para planificar y optimizar mis consultas SQL. Una vez tengo terminado los diagramas, implemento el diagrama en el código de dos formas  diferentes:

  • Utilizando la transacción SE11 para crear las tablas, vistas, estructuras, elementos de datos, etc… 
  • Directamente combinando sentencias SQL simples o mas complejas con los operadores INNER JOIN o LEFT OUTER JOIN.


Si utilizamos la transacción SE11, los objetos que creamos en el diccionario podemos reutilizarlos en diferentes aplicaciones. Si utilizamos consultas SQL directamente en el código, pues solamente se podrán usar locamente en el programa que las implementemos. Todo dependerá de si queremos reutilizar las consulta SQL o no.

Modelo de datos y sus posibles implementaciones

En los siguientes artículos nos centraremos en como podemos implementar nuestros modelos de datos en SAP con la ayuda de las CDS para después consumirlos desde  nuestro código ABAP o Fiori.

¿QUE ES ‘CORE DATA SERVICES’?


Es una infraestructura creada por SAP para definir y consumir modelos de datos persistentes en SAP HANA. Utiliza un lenguaje de definición de datos (DDL), un lenguaje de consulta (QL) y un lenguaje de control de datos (DCL) . CDS es independiente de la BD utilizada, aunque actualmente solamente lo soporta SAP HANA.

especificación Core Data Services

El objetivo de las vistas CDS es facilitar la implementación de los modelos de datos desarrollados en la fase de diseño. Las vistas CDS nos permiten implementar los modelos de entidad-relación de una forma mucho más eficiente que las tradicionales vistas de la transacción SE11.

Modelo de datos, implementación y consumo con CDS

Originalmente, solamente era posible crear vistas CDS para SAP HANA y requería una conexión directa al servidor de HANA. Pero a partir de SAP NW ABAP 7.4 SP05, podemos crear vistas CDS desde el servidor de aplicación ABAP utilizando el IDE  Eclipse + plugin ADT.


'CODE TO DATA'  vs  'DATA TO CODE'

Las vista CDS son parte del nuevo paradigma de programación 'Code Push-Down' o 'Code To Data' que nos ha traído HANA . Este nuevo paradigma es completamente opuesto al tradicional paradigma 'Data to Code'. Tradicionalmente, en el paradigma 'Data to Code', como los accesos a la base de datos son lentos, se cargan todos los datos en las tablas internas, estructuras, variables, etc.... que se almacenan en la memoria del servidor de aplicación , mucho más rápida,  para después realizamos las operaciones o cálculos requeridos antes de mostrar los datos por pantalla.

Data to core  vs Code to data

En el nuevo paradigma 'Code Push-Down', podemos realizar operaciones y cálculos directamente en la capa de la base de datos, quedando la capa del servidor de aplicación libre para el tratamiento de los datos procesados. Esto es posible gracias a que la base de datos SAP HANA tiene un soporte para lenguajes procedurales directamente incluido en el kernel de la base de datos. 

Por ejemplo, gracias al paradigma 'Code Push-Down' con la nueva implementación de OPEN SQL para ABAP podemos incluir operaciones aritméticas dentro de la instrucción SELECT que se ejecutaran al nivel de la base de datos y liberando los recursos del servidor de aplicación. En posteriores veremos cómo aprovecharnos de estas nuevas funcionalidades.

Operaciones aritméticas directamente en la sentencia SQL que se ejecutan a nivel de base de dato


HANA CDS y ABAP CDS


Existen dos implementaciones diferentes de la misma especificación CDS: 

HANA CDS
  • Se crean directamente en la base de datos de SAP HANA 
  • Pueden consumirse externamente con servicios ODATA 
  • Para consumirlas desde una aplicación ABAP: 
  • Crear una vista externa en el DICC ABAP 
  • Enlazar la vista externa con la vista HANA CDS 
  • Consumir la vista externa utilizando sentencias OPEN SQL 
  • DOS órdenes de trasporte diferentes: 
  • La vista HANA CDS que se trasporta como una unidad de trasporte de HANA 
  • La vista externa que se trasporta con una orden de SAP (transacción STMS) 
HANA CDS, dos ordenes de trasporte para ABAP

ABAP CDS
  • Disponible desde SAP NW ABAP 7.4 SP05 
  • Se pueden definir y crear desde el servidor de aplicaciones ABAP con ECLIPSE + ADT 
  • Necesitamos de un servidor de aplicaciones ABAP para crearla 
  • Pueden consumirse externamente con servicios ODATA 
  • Son independientes de la base de datos 
  • Pueden utilizar tablas, vistas, elementos, etc…. definidos en el diccionario ABAP 
  • No requieren crear vistas externas 
  • Una única orden de trasporte estándar de SAP ( transacción STMS
ABAP CDS, una única orden de transporte

En esta serie de entradas sobre CDS nos centramos exclusivamente en vistas ABAP CDS.

ABAP CDS vs VISTAS SE11

¿Que ventajas tiene las vistas ABAP CDS sobre las vistas tradicionales del dicccinario que creamos desde la transacción SE11? Para empezar,  Las vistas creadas desde la transacción SE11 tienen limitaciones como que solamente podemos crear asociaciones de tipo INNER JOIN y que únicamente las vistas de mantenimiento son asociaciones de tipo LEFT OUTER JOIN.

En la siguiente tabla se muestran algunas de las características disponibles en las vistas ABAP CDS y que no se encuentran disponibles en las vistas de bases de datos tradicionales de la transacción SE11.

Algunas diferencias entre ABAP CDS y vistas de la transacción SE11
En el siguiente enlace podéis leer un listado completo de las características de ABAP CDS.


PASOS PARA CREAR Y CONSUMIR UNA VISTA ABAP CDS


Para comprobar si vuestro servidor de aplicación soporta las vistas ABAP CDS,  conectaros con el cliente SAPGUI y comprobar el nivel del módulo SAP_BASIS:
  • En el menú superior Sistemas -> STATUS -> Info Componentes
  • Comprobar que el nivel del módulo SAP_BASIS es 7.40 SP05 o superior.
Nivel módulo SAP_BASIS

Para crear vistas ABAP CDS necesitais tener instalado el IDE Eclipse y el plugin ABAP Development Tools y como hemos dicho conexión a un servidor de aplicación con SAP NW ABAP 7.4 SP05 o superior.

Pasos para crear la vista ABAP CDS:

1. Seleccionar el proyecto ABAP donde queremos crear la vista ABAP CDS
2. Seleccionar el paquete donde queremos crear la vista CDS.
    Botón derecho del ratón -> New -> Other ABAP Repository Object

3. Seleccionar el objeto"Data Definition" dentro de la carpeta "Core Data Services". 


Nota: Si estáis trabajando con un componente SAP_BASIS inferior a la versión 7.5 tenéis que seleccionar el objeto "Data Definition" o "DLL Source" dentro de la carpeta  "Diccionary".

4. Rellenar el nombre de la vista ABAP CDS y la descripción


5. Seleccionar o crear la orden de trasporte.

6. Por defecto tenemos varias plantillas disponibles para crear las vistas ABAP CDS.
    Seleccionamos la plantilla "Define view" y pulsamos finalizar.


7. Se abrirá una nueva ventana con el siguiente código.

vista ABAP CDS

8. Para implementar la vista ABAP CDS:
  1. Cambiar el texto "sql_view_name" por el nombre que tendrá la vista en el diccionario ABAP. IMPORTANTE: El nombre de la vista en el diccionario ABAP no puede ser el mismo que el nombre que hemos dado a la vista ABAP CDS en el paso 4.
  2. Reemplazar "data_source_name" por el nombre de la tabla de la base de datos 
  3. Para referenciar los campos se utiliza el punto (‘.’) en vez de ('~')
  4. Las columnas que recuperamos en la consulta se definen dentro de las llaves {}.
  5. Después de las llaves {} podemos incluir la cláusula WHERE.
  6. Los comentarios empiezan por // para una línea o /*   */ para un bloque

9. Grabar y activar.


En el diccionario ABAP las vistas ABAP CDS se denominan Vistas SQL DDL. Una vez activada la vista en Eclipse ya podemos ver nuestra vista desde la transacción SE11 y ejecutarla y acceder a su definición en SQL desde el menú Detalles -> ABAP Create, pero no se puede modificar la vista ABAP CDS desde el diccionario ABAP, solamente desde ECLIPSE.

Vista ABAP CDS desde la transacción SE11

Desde nuestras aplicaciones ABAP, las vistas ABAP CDS pueden consumirse con sentencias OPEN SQL como cualquier vista o tabla del diccionario ABAP. También pueden utilizarse como tipos para la definición de tablas internas, estructuras y variables de los programas ABAP. Debemos utilizar el nombre que hemos especificado en el atributo sqlViewName y no el nombre de la vista ABAP CDS.

Consumición de la vista ABAP CDS 

COMO ENCONTRAR LAS VISTAS ABAP CDS CREADAS EN EL SISTEMA SAP

Consultando tabla TADIR, con los siguientes parámetros de selección, podemos encontrar todas las vistas CDS existentes en SAP, su nombre en el diccionario ABAP y el paquete al que pertenecen.

Acceder a la tabla TADIR con los siguientes parámetros:
  • PGMID = ‘R3TR’ 
  • OBJECT =’DDLS’ 
Accediendo la tabla DDLDEPENDENCY podemos obtener los nombres de la vista en el diccionario ABAP y en SAP HANA. Acceder a la tabla DDLDEPENDENCY con el parámetro:

  • OBJECTTYPE = 'VIEW'



Entradas de la tabla TADIR correspondientes a vistas CDS

Nombre de la vista ABAP CDS en HANA y en el diccionario ABAP


Fuente:

2 comentarios:

  1. Muy útil la explicacion de CDS view, seria interesante conocer los CDS table function.

    ResponderEliminar
  2. I have read your information and your suggestions that you have shared with us. You made a good site and giving us such a great information. Thanks for sharing the best and useful tips they very nice and vsap fico sap training in hyderabad with placement ery help us.

    ResponderEliminar