Con la aparición de las vistas ABAP CDS y las anotaciones, podemos crear aplicaciones SAP Fiori de manera mucho más rápida que en el pasado. En el desarrollo de una aplicación Fiori, de tipo informe List Report, tendremos que cubrir 3 pasos esenciales:
- Creación de nuestras vistas ABAP CDS que obtengan los datos de nuestro sistema SAP S/4 HANA (o anterior con base de datos HANA) y contengan las diferentes anotaciones para que la información obtenida pueda ser representada gráficamente en nuestra aplicación de forma automática a través de los Fiori Elements.
- Creación de nuestro servicio oData, el cual expondra la CDS como servicio que consumirá nuestra aplicación SAP Fiori para obtener la información, y escribir/modificar datos en los tipos de aplicación que se requiera.
- Construcción de nuestra aplicación SAP Fiori a partir de nuestro servicio oData anotado a través de nuestra vista CDS.
En este artículo, nos centraremos en el segundo paso. Una vez finalizada la primera versión de nuestra vista ABAP CDS, publicaremos esta como un servicio oData para posteriormente crear la aplicación SAP Fiori.
Existen dos opciones para publicar una vista ABAP CDS como un servicio oData. Se puede publicar a través de una anotación, que vimos en el primer artículo sobre anotaciones CDS, la cual de manera automática genera un servicio oData en nuestro SAP Gateway a partir de los datos expuestos y las anotaciones CDS. Por otro lado, se puede crear el servicio oData de manera manual a través de la transacción SEGW.
¿Qué método utilizar para crear el servicio oData de nuestra vista ABAP CDS?
El servicio oData se creará de una forma u otra en función de la complejidad de nuestra aplicación SAP Fiori. En el caso de que simplemente vayamos a construir un informe que muestre datos a través de una aplicación Fiori, podemos crear el servicio a través de la anotación CDS, ya que nos ahorrará mucho tiempo de mapeo de campos y posible desarrollo adicional si lo hacemos de manera manual. En el caso de que necesitemos publicar un servicio más complejo, donde se van a invocar diferentes acciones desde nuestra aplicación o se requiera subir archivos de tipo imagen o documentos a nuestro servidor, deberemos crear el servicio de manera manual.
Creando servicio oData a través de anotación CDS
En este artículo, comenzaremos con la primera opción: crear un servicio oData a través de la anotación CDS. Y como vais a comprobar, es algo muy sencillo. Para ello, debemos incluir en la cabecera de nuestra vista ABAP CDS la siguiente anotación:
@OData.publish: true
Con esta anotación CDS, de manera automática se creará un servicio oData a partir de nuestra vista CDS. Para que esto suceda, simplemente añadimos la anotación a nuestra vista ABAP CDS y activamos.
@AbapCatalog.sqlViewName: 'ZVEJEMBLOG'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Vista cds ejemplo blog'
@Search.searchable: true
@OData.publish: true
define view ZCDS_EJEMPLO_BLOG
as select from sflight as Flight
association [0..1] to spfli as Schedule on Flight.carrid = Schedule.carrid
and Flight.connid = Schedule.connid
{
@UI.lineItem: [ { position: 10 } ]
@UI.selectionField: [{position: 10}]
@Search: { defaultSearchElement: true, fuzzinessThreshold: 1 }
key Flight.carrid as IdEmpresa,
@UI.lineItem: [ { position: 20 } ]
@UI.selectionField: [{position: 20}]
@Search: { defaultSearchElement: true, fuzzinessThreshold: 1 }
key Flight.connid as CodVuelo,
@UI.selectionField: [{position: 30}]
@UI.lineItem: [ { position: 30 } ]
key Flight.fldate as Fecha,
@Semantics.amount.currencyCode: 'Moneda'
@UI.lineItem: [ { position: 40 } ]
Flight.price as Precio,
@Semantics.currencyCode: true
Flight.currency as Moneda,
Schedule.cityfrom as CiudadOrigen,
Schedule.cityto as CiudadDestino,
@Semantics.quantity.unitOfMeasure: 'UnidadDistancia'
@UI.lineItem: [ { position: 50 } ]
Schedule.distance as Distancia,
@Semantics.unitOfMeasure: true
Schedule.distid as UnidadDistancia
}
Tras activar, se creará un servicio oData con el nombre_de_la_vista+’_CDS’. En nuestro ejemplo, como la vista ABAP CDS se llama ZCDS_EJEMPLO_BLOG, el servicio que se publica de forma automática se llamará ZCDS_EJEMPLO_BLOG_CDS. Esto será así siempre que creemos un servicio a partir de la anotación.
Una vez creado el servicio, simplemente tenemos que añadirlo al listado de servicios oData publicados en nuestro SAP Gateway. Para ello, debemos acceder a la transacción /n/IWFND/MAINT_SERVICE.

En esta transacción, tenemos todos los servicios publicados en nuestro SAP Gateway. Para añadir nuestro servicio oData auto publicado, pulsamos en el botón → Añadir Servicio en la cabecera de la transacción.

Seleccionamos el alias del sistema y buscamos por nombre de servicio técnico. Como veis, he puesto el nombre de nuestra vista ABAP CDS seguido de asterisco, y como hemos comentado, el sistema encuentra un servicio con el nombre ZCDS_EJEMPLO_BLOG_CDS. Pulsamos sobre el servicio que aparece en el listado.

Indicamos un paquete donde queremos que se genere este servicio y pulsamos en el botón de confirmar. De esta forma, el servicio habrá sido añadido a nuestro listado de servicios oData publicados.

Si volvemos al listado y buscamos el servicio, veremos que ya aparece. Seleccionamos nuestro servicio y pulsamos en el botón → Cliente SAP Gateway. Desde este herramienta, podremos verificar que el servicio responde correctamente pulsando en el botón → Execute.

De esta forma tan sencilla, hemos generado un servicio oData a partir de nuestra vista ABAP CDS de manera casi automática. Simplemente creando la vista ABAP CDS y anotándola de manera correcta, podemos construir aplicaciones SAP Fiori de manera muy sencilla. Con este servicio, ya podríamos ir a nuestro SAP Web IDe y generar una aplicación de tipo Fiori List Report a partir de este servicio, lo cual haremos en el próximo artículo.
Ahora mismo quizás os preguntéis: ¿Cómo va a generar automáticamente la aplicación a partir de un servicio?. Aquí está la magia de las anotaciones CDS y de los componentes SAP Fiori Elements, que puedes ir consultando en el blog de mi compañero Antonio de Ancos si no quieres esperar a próximos artículos.
Enhorabuena por la iniciativa, Borja.
Creo que es importante empezar por la base para que la gente entienda de qué va esto de los CDS y cómo podemos crear una aplicación Fiori sencilla en pocos pasos.
Saludos.
Muchas gracias Antonio.
Trato de hacer el contenido lo más didáctico posible para que se entienda. Gracias por tus palabras!