Está en la página 1de 62

PRACTICAL

CORE DATA
SERVICES

Experiencia. Flexibilidad. Compromiso.


Contenido

1 2 3 4 5 6 7
Introducción CDS Diccionario de CDS en ODATA CDS en Fiori CDS en Fiori AMDP
Creación y uso datos + BOPF
Introducción

1 2 3 4 5 6 7
Introducción CDS Diccionario de CDS en ODATA CDS en Fiori CDS en Fiori AMDP
Creación y uso datos + BOPF
Introducción
Situación inicial

¿Qué es un CDS?

Las CDS view se basa en el


principio “code push-down” se
resume en hacer todo lo que puedas
en base de datos para no cargar
innecesariamente la capa aplicación.
CDS ofrece una capa basada en
SQL con funciones que unen y Utiliza un lenguaje de definición de datos (DDL),
unifican los modelos OLTP y OLAP un lenguaje de consulta (QL) y un lenguaje de
tradicionales de definición de datos, control de datos (DCL) . CDS es independiente de
consulta y manipulación de datos la BD utilizada, aunque actualmente solamente lo
soporta SAP HANA.
Algunas de las mejoras:
1. Expresiones para cálculos
2. Asociaciones entre tablas (mas eficientes que las vistas
SAP se11)
3. Amplía el estándar SQL-92
Introducción
Mejoras con respecto a una vista SAP se11
Introducción
Capas

Capa base de datos: Se recomienda SAP HANA por


rendimiento, al mover la mayor cantidad de lógica y
cálculos a esta capa se optimiza el tiempo de
respuesta del resto.

Capa de aplicación: contiene backend AS ABAP y SAP


Gateway integrados mediante llamadas RFC.

Capa de presentación: Interfaz de usuario SAP Fiori

Teniendo en cuenta esta división en capas, la idea de


gestionar los datos en la capa de base de datos
mejorará los tiempos de ejecución de los reports y
aplicaciones.
CDS: Creación y uso

1 2 3 4 5 6 7
Introducción CDS: Diccionario de CDS en ODATA CDS en Fiori CDS en Fiori AMDP
Creación y uso datos + BOPF
CDS: Creación y uso
Crear una vista CDS

Necesario:
-SAP_BASIS es 7.40 SP05 o superior
-IDE Eclipse y el plugin ABAP Development Tools

1) Una vez creado un nuevo proyecto de ABAP, daremos de alta un


paquete y dentro un objeto data definición del repositorio ABAP
CDS: Creación y uso
Crear una vista CDS
2) Guardamos la vista, y seleccionamos la orden de transporte en mi caso deshabilitada ya que es de prueba y
elegimos la plantilla define view para que genere parte del código en la vista.
CDS: Creación y uso
Crear una vista CDS
3) Se genera el siguiente código, y lo modificamos para que sea una vista de la SFLIGHTS con una condición.
YV_TEST nombre de la vista, se pueden realizar consultas select de varias tablas, se mapea con “.” en vez de “~”, las
clausulas where al final del mapeado.
CDS: Creación y uso
Crear una vista CDS

4) Al terminar verificamos y activamos.


CDS: Creación y uso
Desde un report SAP

4) Usar nuestra vista como una tabla interna en SAP, en este caso metemos el resultado de la vista en la tabla interna que son
los vuelos de donde el carrid = “AA”
CDS: Creación y uso
Desde un report SAP

5) Si comprobamos, vemos que ha introducido los datos del Core Data Service creado.
CDS: Creación y uso
Ejemplo 1
Vamos a realizar algunos ejemplos de CDS view:

YHAV_CDS_EXAMPLE_0901.txt yhav_cds_consume_0901.txt
CDS: Creación y uso
Ejemplo 2

Como hemos visto, la limitación principal es que las vistas solo devuelven un conjunto de datos, en este ejemplo usaremos la
salida de la vista anterior para generar una nueva, (un ejemplo seria pedidos y línea de pedidos, sacas los pedidos en la primera
vista y completas con los items donde el numero de pedido sea el mismo).

En este caso recuperamos los datos en la


primera vista, asociamos con la tabla
snwd_bpa y sacamos datos.
Hacemos un sumatorio total y un count de
pedidos, hay que ponerle distinct ya que un
pedido puede tener mas de una tupla pero
sigue siendo 1 unidad de pedido.

YHAV_CDS_EX2_0901.txt
CDS: Creación y uso
Ejemplo 3
Ejemplo 3 CDS view con parametros

Usamos la vista 1 para recuperar los datos en myview, la vista 3 necesita 2 parámetros que se le pasaran en el programa de
consumo de la vista indicada.

YHAV_CDS_PARAMETERS.txt
YHAV_CONSUME_PARAMETERS.txt
CDS: Creación y uso
Ejemplo 4
Ejemplo 4 CDS view que extiende una vista ya creada en el ejemplo 1

YHAV_CDS_EXTND.txt

Una vez activada la extensión, en la vista principal aparecerá dicha extensión de ls CDS view.
Diccionario de
datos

1 2 3 4 5 6 7
Introducción CDS Diccionario de CDS en ODATA CDS en Fiori CDS en Fiori AMDP
Creación y uso datos + BOPF
Diccionario de datos
Busqueda de CDS view en SAP

Podemos buscar nuestras vistas directamente en SAP con la transacción se11


Diccionario de datos
Busqueda de CDS view en SAP

Buscando en la tabla TADIR, podemos encontrar las vistas CDS existentes en SAP, su nombre en el diccionario y el paquete al que
pertenece.

Parametros:

PGMID = ‘R3TR’ y OBJECT = ‘DDLS’


Diccionario de datos
Busqueda de CDS view en SAP

Si accedemos a la tabla DLLDEPENDENCY obtendremos los nombres de la vista en el diccionario de datos y en SAP HANA, el
objectname es la denominación de la vista en el diccionario y DDLname es el nombre de la vista en eclipse.

Parametro:

OBJECTTYPE = ‘VIEW’
Diccionario de datos
Busqueda de CDS view en SAP

Podemos buscar todas las vistas para una tabla determinada: Elegimos fuentes DDL

Y ya tendríamos las vistas que trabajan sobre la tala snwd_so


CDS en ODATA

1 2 3 4 5 6 7
Introducción CDS Diccionario de CDS en ODATA CDS en Fiori CDS en Fiori AMDP
Creación y uso datos + BOPF
CDS en ODATA
Consumir una vista CDS en un servicio ODATA
En la definición de la vista debemos indicar @Odata.publish : true, asi se creará automáticamente un servicio Odata y solo
habría que añadirlo, activarlo y ejecutarlo.

cds_view_sflight.txt
CDS en ODATA
Consumir una vista CDS en un servicio ODATA

Tenemos el CDS para poder consumirlo en el Odata primero debemos activar el servicio y comprobar que devuelve los
datos.
Vamos a la transacción /n/IWFND/MAINT_SERVICE y añadimos el servicio creado

Ahora ya tenemos nuestro servicio en el catálogo de servicios de la transacción anterior.


CDS en ODATA
Consumir una vista CDS en un servicio ODATA

En la transacción // buscamos el servicio


recién añadido y pulsamos cliente SAP
Gateway

Ejecutamos después de modificar el final por $metadata y si es correcto finalizará con status code 200 en mi caso la URL es:
/sap/opu/odata/sap/YCDSV_SFLIGHT_CDS/$metadata
CDS en ODATA
Consumir una vista CDS en un servicio ODATA

Vamos a comprobar si en Eclipse ya nos indica que el servicio ODATA esta online.
CDS en Fiori

1 2 3 4 5 6 7
Introducción CDS Diccionario de CDS en ODATA CDS en Fiori CDS en Fiori AMDP
Creación y uso datos + BOPF
CDS en Fiori
App Fiori

Creamos una app Fiori desde Web IDE


CDS en Fiori
App Fiori

Completamos los nombres y elegimos el servicio Odata que creamos en el apartado anterior:
CDS en Fiori
App Fiori

Marcamos el check de anotaciones que se generó cuando creamos nuestra vista CDS en Eclipse.

Elegimos la colección de datos en este caso de la CDS, en este caso no hay navegación (tabla items por ejemplo)
CDS en Fiori
App Fiori

Esta aplicación se ha creado automáticamente solo con el servicio OData que tiene una CDS View, es decir solo con el
servicio hemos generado
CDS en Fiori + BOPF

1 2 3 4 5 6 7
Introducción CDS Diccionario de CDS en ODATA CDS en Fiori CDS en Fiori AMDP
Creación y uso datos + BOPF
CDS en Fiori + BOPF
Requisitos

1) Hana Studio o Eclipse con la herramienta ADT de desarrollo ABAP

2) Para alojar la aplicación usaremos Web IDE después de configurar el Cloud Connector*

3) El sistema S4 HANA ON PREMISE 1.0 con ABAP 7.50

Herramienta Dirección

ABAP Development Tools for SAP NetWeaver https://tools.hana.ondemand.com/#abap

Cloud Connector https://tools.hana.ondemand.com/#cloud

SAP Cloud Platform (Web IDE) https://cloudplatform.sap.com/index.html

* Puedes crear una cuenta gratuita en Sap Cloud Platform


CDS en Fiori + BOPF
Ejemplo 1.0 creación de tablas
Queremos mostrar los pedidos y los items de dichos pedidos, primero crearemos las tablas tanto para header como para item.
(en este apartado se mostrará todo el desarrollo desde las estructuras hasta la utilización de BOPF + HANA +CDS view)

Ya tenemos el header, usando la tabla SNWD_PO como referencia.


CDS en Fiori + BOPF
Ejemplo 1.0 creación de tablas
Ahora procedemos a crear y activar la tabla para las posiciones.

Ya tenemos la tabla items, usando la tabla SNWD_PO_I como referencia.


CDS en Fiori + BOPF
Ejemplo 1.1 creación de CDS view para ITEMS
Creamos el paquete, y el data definition, igual que en el apartado 2 de este manual.

En este caso le hemos llamada: YDEMO_I_SALESORDER_ITEM


CDS en Fiori + BOPF
Ejemplo 1.1 creación de CDS view para ITEMS
En este caso le
Empezamos a programar la vista CDS, añadimos la configuración del
BOPF (tabla a usar, PKs de la tabla, y un CRUD simple de operaciones
básicas)

En este caso le hemos llamado:


YDEMO_I_SALESORDER_ITEM
YDEMO_I_SALESORDER_ITEM.txt
CDS en Fiori + BOPF
Ejemplo 1.1 creación de CDS view para ITEMS
Creamos otra vista CDS que será la “consumición” de la anterior para poder llamarla desde la APP, las asociaciones están
comentadas ya que falta por crear la cabecera.

En este caso le hemos llamado:


YDEMO_C_SALESORDER_ITEM

YDEMO_C_SALESORDER_ITEM.txt
CDS en Fiori + BOPF
Ejemplo 1.1 creación de CDS view para header
Creamos la vista básica para el header y después una de consumo como hicimos para Items.

En este caso le hemos llamado:


YDEMO_I_SALESORDER

YDEMO_I_SALESORDER.txt
CDS en Fiori + BOPF
Ejemplo 1.1 creación de CDS view para header
Programamos la vista de consumo para luego probar el servicio desde SAP

En este caso le hemos llamado:


YDEMO_C_SALESORDER

YDEMO_C_SALESORDER.txt
CDS en Fiori + BOPF
Ejemplo 1.1 creación de CDS view para ITEMS
Añadimos el servicio como hicimos en el apartado 2 de este manual y ejecutamos:

Da status code 200 OK y vemos que


llama a header y tiene collecion items
CDS en Fiori + BOPF
Ejemplo 1.1 creación de CDS view para ITEMS
Antes de empezar con la app debemos programar la acción BOPF y mostraremos la orden de venta en la app.
Con la transacción /nBOBX veremos las configuraciones BOBF y buscamos la nuestra para crear la acción de modificar el
estado a pagado.
CDS en Fiori + BOPF
Ejemplo 1.1 creación de CDS view para ITEMS

Nos desplazamos al class builder y creamos la clase que definimos en la diapositiva anterior,
YCL_A_DEMO_SALESORDER podemos hacer doble click y modificar herencia
CDS en Fiori + BOPF
Ejemplo 1.1 creación de CDS view para ITEMS
Antes de empezar con la app debemos programar la acción BOPF y mostraremos la orden de venta en la app.
Con la transacción /nBOBX veremos las configuraciones BOBF y buscamos la nuestra para crear la acción de modificar el
estado a pagado.

Vamos al apartado métodos para implementar la acción Ejecutar.


Fiori app usando CDS con BOPF
Ejemplo 1.1 creación de CDS view para ITEMS
Programamos execute, que básicamente lee el pedido de venta seleccionado y luego cambia la instancia del nodo BOPF para
el nuevo valor del ciclo de vida (cambia el estado del pedido)

method ejecutar set status.txt


CDS en Fiori + BOPF
Ejemplo 1.2 programando la APP Fiori

Ahora que tenemos todo el backend programado, entramos en Web IDE service y creamos un nuevo proyecto.
CDS en Fiori + BOPF
Ejemplo 1.2 programando la APP Fiori

Elijo la plantilla de detalles ya que quiero mostrar pedido, líneas y detalle del mismo:
CDS en Fiori + BOPF
Ejemplo 1.2 programando la APP Fiori

Al pulsar siguiente, elegimos nuestro Service Catalog y la CDS VIEW que hemos creado en los pasos anteriores, ahora
estamos creando una app por template que muestre los datos que capturamos con la CDS view con CRUD y acción BOPF
CDS en Fiori + BOPF
Ejemplo 1.2 programando la APP Fiori

Marcamos nuestro servicio, metadata, y pulsamos next.


CDS en Fiori + BOPF
Ejemplo 1.2 programando la APP Fiori

La collecion serian los pedidos, y la navegación detalle y de lo que se compone en este caso los items.
CDS en Fiori + BOPF
Ejemplo 1.2 programando la APP Fiori

Una vez creado el proyecto, lo ejecutamos.


CDS en Fiori + BOPF
Ejemplo 1.2 programando la APP Fiori
Elegimos flpSandbox.html

Al ejecutar vemos los datos de la CDS view.


CDS en Fiori + BOPF
Ejemplo 1.2 programando la APP Fiori
Si clickeamos en + , podemos crear una nueva entrada y Vemos que se ha creado una nueva entrada
guardamos:

Comprobamos en SAP que en la tabla se genera la nueva


tupla, esto es debido al CRUD que indicamos en la vista.
ABAP MANAGED
DATABASE PROCEDURES

1 2 3 4 5 6 7
Introducción CDS Diccionario de CDS en ODATA CDS en Fiori CDS en Fiori AMDP
Creación y uso datos + BOPF
AMDP
Introducción

ABAP MANAGED DATABASE PROCEDURES, como las vistas CDS se utiliza para optimizar la captura y calculo de datos
en tiempo de ejecución. La premisa es la misma, realizar los cálculos en base de datos ya que en las consultas SQL estamos
limitados a un solo paso.
La idea general es la implementación de un método que dentro realice la consulta y/o operaciones, es importante saber que
cada clase que contenga un AMDP debe contener la interfaz IF_AMDP_MARKER_HDB

Parámetros:

•Exportar, importar y cambiar parámetros


están permitidos

•Los métodos con parámetros de retorno no


pueden implementarse como AMDP

•Los parámetros del método deben ser


tablas o tipos escalares

•Los parámetros del método deben pasarse


como valores
AMDP
Cuando usar CDS y cuando AMDP

CDS VIEW:
CDS view solo puede devolver un conjunto de datos por vista, pero es reutilizable por lo que es útil si se va a usar dicha vista
en distintos proyectos. (ejemplo albarán 1 vista customer, 1 vista Factory 1 vista delivery …)
Utiliza la clase de IDA de la GUI de SAP por lo tanto es mucho más rápido (paginación)
AMDP:
-Por otro lado AMDP no se puede reutilizar en diferentes bases de datos, sino que habrá que programarlo según sea necesario.
-Se pueden aprovechar las potentes funciones de
SQL nativo, como la conversión de moneda.
- Se necesitan conjuntos de resultados múltiplos.
- Podemos usar SQLscript/AMDP y realizar consultas
sql sobre tablas internas
AMDP
Ejemplo AMDP

Primero creamos la clase donde definiremos el método para nuestro AMDP


AMDP
Ejemplo AMDP

Implementamos la clase, primero la estructura y método data_ret, pulsado control+1 se abre la ayuda y seleccionamos add
implementation for data_ret

YTEST_PRO.txt
AMDP
Ejemplo AMDP
Una vez implementada la clase, podeos definir varias implementaciones que nos recuperen a nivel de base de datos lo que
necesitemos mostrar en la aplicación, creamos un programa de ejemplo para probarlo (activar antes)

Ejecutamos el programa eligiendo carrid = ‘AA’ muestra los datos


filtrados del AMDP
Referencias
Saber más

CONCEPTO Referencia

BOPF https://archive.sap.com/documents/docs/DOC-45425

CDS Views https://help.sap.com/viewer/f2e545608079437ab165c105649b89d


b/7.51.3/en-US

https://blogs.sap.com/2016/09/26/core-data-services-cds-in-sap-s4-
hana/
AMDP https://help.sap.com/saphelp_nw74/helpdata/en/3e/7ce62892d243e
ca44499d3f5a54bff/frameset.htm
SQL Script https://help.sap.com/viewer/de2486ee947e43e684d39702027f8a94
/2.0.02/en-US
Estamos a su lado para ayudarle
a mejorar su negocio

+34 902 995 374 informacion@seidor.es www.seidor.es /company/seidor /seidor /seidor

También podría gustarte