Skip to Content
Technical Articles

HXE – Servicio Odata v4 – NodeJs en español

Feliz 2019, espero que su año este empezando bien. El mio empieza un poco lento pero siento que sera muy Bueno. Tengo varias metas y este blog es una de ellas. Les comparto este blog al mismo tiempo que preparo una presentación para el SIT Guadalajara – gracias hermano Jhon por continuar la promoción del evento. Pueden leer la version ingles del mismo blog.

SIT Guadalajara – gracias hermano Jhon por continuar la promocion del evento. Pueden la version del mismo blog aqui.

 

Antes de dar los detallas, quiero agradecer a Thomas/Rich por el curso de openSAP Update Q1/2019. Actualmente me encuentro tomando este curso y cuando escuche de Rich/Thomas acerca de odata v4 en un modulo de node, me llamo mucho la antención, asi que decidí investigar mas el tema.

Empezé por descargar el HANA express edition (https://developers.sap.com/topics/sap-hana-express.html) – en mi series de blog anteriories (https://blogs.sap.com/2018/09/19/my-experience-with-hana2-xe-sp3-series/), utilize H2SP3 rev 31… ahora tengo el rev 35. Y si, hay varios enhancements que no estaban en el rev 31 – gracias gracias gracias!. Aun en un ejercicio pequeño como el que voy a compartir aqui. Puedo ver mejorias al construir los modulos mas rápidos que anteriormente en el rev31. (Todavia tengo la misma configuración que en mi vm anterior – 24GB RAM, 4 Core, etc)

 

El template del modulo  Business Application : Este wizard es nuevo y facil de usar. Ve los pasos siguientes donde maestro como crear un servicio de odata v4 desde el punto de nodejs

 

Luego, da el nombre de tu Proyecto.

(selecciona “enable uaa  service”)

Nota que hay varios archivos llamados package.json … pero en diferentes folders

A Nivel de proyecto : package.json

 

En el modulo Svc :  package.json : nota las dependencias, especialmente la de express porque es este modulo el que hace possible servir la informacion via odata

 

 

En el modulo db : package.json

 

 

Dentro del modulo de la base de datos, db,  el punto de entrada es el de los modelos de cds. En mi ejemplo, uso el modelo de default y después añado una nueva entity y un view. En el curso opensap, Thomas ensena como importer las definiciones de otros modelos usando el import.

Mediante esta forma, es fácil de integrar otros modelos y separar nuestro código en forma modular asi no temenos todo nuestro código en el mismo archivo.

 

 

El modulo db también tiene un folder llamado gen el cual contiene archivos generados cuando los modelos son construidos mediante el proceso (metadata)

 

Ahora, si queremos ver lo que hay en el modulo svc – lógicamente, la entrada al servicio desde un punto de un enlace (http/https).

El modulo svc también tiene un archivo cds que define nuestro servicio – ver abajo.

Cosas que hay que ver aqui:

  • La palabra using en cao de que necesitemos exponer otros modelos CDS – desde nuestro modulo db.
  • La entidad adicional que yo crie en este servicio functiona también como una entidad de la base de datos y sigue las mismas reglas y syntax.

 

Desde el punto de configuracion, queria correr mi servicio y ver que era todo ese ruido acerca de odata v4 via nodejs

 

Pero me toco un error debido a que el servicio wave-uaa no existia (nombre default).

Asi que regrese al archive mta.yaml donde se que estan las dependencias y vi que el nombre del servicio estaba listado wave-uaa.

 

Luego fui al admin cockpit usando la cuenta default admin account:

xsa_admin –> service market place –> create instance of service y lo llamé igual que el nombre del servicio en el mta.yaml

 

Regresé al app con la cuenta de xsa_Dev

Corrí el servicio otra vez y vi el mensaje que todo funciono bien. Le dí click al enlace se abrió la definición del servicio como se muestra abajo

 

 

 

Si le das click en el $metadata (navega a https://hxehost:51045/catalog/$metadata) y puedes ver la versión de odata – muy contento que finalmente veo v4 y las posibles ventajas de ver v2 que cuando usaba en XS classic.

 

Igualmente, si le damos click en el BookInfo, regresrá los datos en ese end point.

 

 

Si le damos click podemos ver lo siguiente

 

Y el número de records ahi, (debe de ser 0) porque solo temenos la definición de la tabla y no hemos creado ningun dato. Vamos al explorador de la base de datos y agreguemos algo

 

Selecciona un hdi container – – ok

 

 

Y seleciona la opción Tables del container

 

Selecciona una table para ver su definicion

.

 

 

Una vez que se abra el view de datos, podemos agregar records con el icono de “más”.. y entrar datos en el punto 2 y asi finalmente guardar con el icono de guardar.

 

 

Y en la entidad bookinfo del servicio

 

Al fin de todo esto, regresemos al navegador y corramos unos queries.. la primera es para ver el número de records en ese end point

 

 

Y los datos

 

Otros queries solo para testear el servicio … y dejenme decirles que el tamaño del response es mas pequeño que como era en la version 2 de odata y por default viene en formato JSON (en lugar de xml)

 

Ahora, extendamos nuestro servicio y agreguemos una entidad y un view.. después podemos reconstruir ( * asegurate de hacer el “build CDS” desde el nivel del Proyecto para generar la metadata que se instalen en el folder gen)

 

También, nota la asociación en mi entidad.

 

Ahora, populemos datos… (e introduscamos un error para ver como reacciona la herramienta)

 

*mouse over y lee el error que dice “illegal date value” porque use mes 13 (typo). Luego lo corregí y lo volví a guardar. De regreso en mi servicio lo corrí de nuevo.

 

SPM.., pensé que las entidades de CDS y el view iban a mostrarse, pero dónde fue mal? Regresé una ves mas a los videos de la segunda semana del curso y parece que necesito importer el view usando el keyword using y proyectarlo en mi servicio como lo maestro aqui

 

Re-construí mi servicio, lo corrí y ahora si me muestra lo que esperaba. Ahora puedo ver la table y el view.

 

Desde el browser, aqui muestra los dos end points

 

Y si queremos ver datos en el otro end point. (el output de mi view incluye la asociación definida en mi archivo)

 

Muy bien no? en mi siguiente blog voy a mostrar como consumir estos modelos desde una aplicacion. Si a caso les interesa ver el codigo, aqui esta el repository en mi cuenta de github.

 

Compartan cualquier sugerencia o comentario asi puedo seguir compartiendo conocimiento en este u otro tema de CDS / OData v4 o UI dev en HANA XSA. Happy dev!

 

 

 

 

 

Be the first to leave a comment
You must be Logged on to comment or reply to a post.