Con el concepto de exponer vista CDS como un servicio OData, se ha introducido una forma nueva y sencilla de crear servicios OData. Aquí, la definición del modelo OData y el tiempo de ejecución del servicio OData se proporcionan genéricamente, según SADL (Service Adaptation Description Language).
El requisito aquí es que la anotación @OData.publish: true se especifique en el nivel de vista.
@AbapCatalog.sqlViewName: ‘SQL_VIEW_NAME’
…
@OData.publisher: true
define view CDS_VIEW_NAME as select from …
Como ejemplo práctico modificamos el CDS creado en la lección CDS – Vista de consumo.
Procedimiento:
- Añadimos la anotación @OData.publish: true. Después de haber agregado la anotación OData a la vista CDS, podemos activar la fuente DDL completa. Las herramientas de desarrollo ADT delegan la solicitud de activación al framework SADL que genera varios artefactos del SAP Gateway que se almacenan en la parte backend del servidor de aplicaciones AS ABAP y son necesarios para la activación del servicio OData en el sistema SAP Gateway hub.
Los siguientes artefactos son generados por el framework SADL:El servicio con el nombre técnico <CDS_VIEW>_CDS que lo podemos encontrar como SAP Gateway Business Suite Enablement-Objeto de servicio (tipo de objeto: R3TR IWSV).Un modelo de SAP Gateway (tipo de objeto: R3TR IWMO) con el nombre <CDS_VIEW>_CDS.Una clase ABAP ZCL_<CDS_VIEW> que se utiliza para proporcionar metadatos del modelo al servicio SAP Gateway.Todos los artefactos de servicio generados se agregan automáticamente al mismo paquete ABAP (y también a la misma orden de transporte) que la vista de CDS. - Después de haber generado los artefactos de SAP Gateway podemos continuar con el siguiente paso hacia el consumo del servicio OData. Para esto, debemos activar el servicio OData en el Hub de SAP Gateway. En otras palabras: el servicio OData debe estar habilitado en SAP Gateway, que establece una correspondencia entre el nombre técnico del servicio OData y el servicio back-end correspondiente.Dentro del código CDS posicionando el cursor sobre el mensaje de advertencia, una pantalla de información le informa que el servicio debe estar activado en el SAP Gateway. Esto se hará en un paso separado utilizando la transacción /IWFND/MAINT_SERVICE.
- En la pantalla de selección de la transacción asignamos el nombre del servicio, que es <CDS_VIEW>_CDS. El mismo nombre ha sido mostrado también en la pantalla de información del mensaje de advertencia. Indicamos el sistema alias y continuamos con la opción Get Services.
- En el listado visualizamos el servicio. La opción Add Selected Service nos permite añadir y activar el servicio
- Asignamos el paquete de desarrollo.
- Como resultado del procedimiento exitoso, el servicio OData se activó en el hub de Gateway. Durante el curso de esta activación, se han creado nuevos objetos adicionales:
- SAP Gateway: objeto de metadatos (tipo de objeto: R3TR IWSG) con el nombre Z<CDS_VIEW>_CDS_<VERSIÓN>.
- Un objeto SAP Gateway Metadata (tipo de objeto: R3TR IWOM) con el nombre Z<CDS_VIEW_CDS_<VERSIÓN>_BE que representa la estructura del servicio OData.
- El servicio se puede testear en un navegador o en el sistema SAP en la transacción SAP GW Client. Para obtener la URL del servicio publicado volvemos a la vista CDS y mantenemos el ratón sobre el icono de la anotación @OData.publisher: true donde el sistema muestra una ventana de información que permite navegar directamente a la URL pulsando sobre el texto OData-Service.
En el navegador visualizamos la respuesta. Modificamos la URL y realizamos una petición solicitando los primeros cinco registros con ?top = 5.
Como puede ver, con la anotación y la activación del servicio en unos pasos sencillos hemos expuesto la vista CDS como un servicio OData.
Al apretar el botón de añadir servicio seleccionado me arroja el siguiente mensaje:
“Metadatos no cargados: Ver /IWBEP/ERROR_LOG en
backend ‘LOCAL’ – Query 2CZOVDMMMV ist
unbekannt…”
Seguí los pasos en orden, no sé si me faltó algo.
El objeto está activado en una orden de transporte y en un paquete en ambiente de desarrollo.
De antemano, muchas gracias! Saludos.
Andoni,
Le recomendamos realizar una petición de test al servicio OData desde la transacción /n/IWFND/MAINT_SERVICE para comprobar si el servicio se había registrado correctamente.
Según el mensaje de error, se entiende que 2CZOVDMMMV no existe. Revisa si el nombre asignado a la anotación @AbapCatalog.viewName es 2CZOVDMMMV.
Un saludo.