Resumen
Este webinar, presentado por Jorge Briseño de Logali Group, demuestra cómo integrar la API de Google Drive para la gestión de archivos multimedia dentro de una aplicación desarrollada con SAP Cloud Application Programming Model (CAP). Se detalla el proceso de configuración en Google Cloud Platform (GCP), incluyendo la creación de un proyecto, habilitación de la API de Google Drive, y la configuración de credenciales OAuth 2.0 (Client ID, Client Secret). Se utiliza el Google Developer Playground para obtener tokens de acceso y refresh. A nivel técnico, se muestra cómo usar Node.js y la librería googleapis para crear funciones auxiliares que interactúan con la API de Drive (crear, eliminar, generar URL pública). Estas funciones se integran luego en un manejador de servicio (Service Handler) de CAP. Finalmente, se construye una interfaz SAP Fiori Elements (List Report Page) usando CDS Annotations sobre el modelo CAP, permitiendo al usuario subir archivos que se almacenan en Google Drive y visualizar enlaces a ellos, manteniendo el Clean Core al externalizar el almacenamiento de archivos.
Puedes ver la clase gratuita sobre este tema en nuestro canal de YouTube, donde podrás escuchar al docente hablar sobre este tema y las explicaciones que tiene para darte. Ver video aquí
Índice
- Introducción y Contexto General
- Configuración de Google Cloud Platform (GCP) y Autenticación OAuth 2.0
- Módulo Node.js para Interacción con Google Drive API
- Desarrollo del Backend con SAP CAP
4.1. Configuración del Proyecto CAP
4.2. Definición del Modelo de Datos CDS (Entidades y Anotaciones Media Stream)
4.3. Implementación de la Lógica del Servicio (service.js) - Desarrollo del Frontend con Fiori Elements
5.1. Definición de Anotaciones CDS para la UI - Prueba de la Solución Integrada
Conceptos Clave
- API de Google Drive
- SAP Cloud Application Programming Model (CAP)
- Google Cloud Platform (GCP)
- OAuth 2.0 (Autenticación y Autorización)
- Client ID / Client Secret
- Refresh Token / Access Token
- Pantalla de Consentimiento
- Google Developer Playground
- Node.js
- npm (Node Package Manager)
- googleapis (Librería cliente de Google para Node.js)
- dotenv (Librería para variables de entorno)
- Visual Studio Code (VS Code)
- CDS (Core Data Services)
- Entidades CDS
- Servicios CDS
- CDS Annotations (@Core.MediaType, @Core.ContentDisposition.Filename, @Common.SideEffects, @UI…)
- Service Handlers (CAP – service.js)
- Eventos CAP (after save, before delete)
- Draft Handling (CAP)
- Media Streams / Large Binary Objects (LOBs)
- SAP Fiori Elements
- List Report Page
- Object Page
- SQLite (Base de datos local)
- Manejo de Archivos (Upload, Delete, URL Generation)
- Variables de Entorno
- Asynchronous Programming (async/await)
- Fiori Preview
1
- Introducción y Contexto General
Este webinar avanzado se enfoca en integrar la API de Google Drive con SAP Cloud Application Programming Model (CAP) para gestionar archivos multimedia. Se asume conocimiento previo de CAP y CDS Annotations. El objetivo es mostrar cómo externalizar el almacenamiento de archivos manteniendo un Clean Core. Se utilizarán GCP, Node.js, googleapis, VS Code, CAP, CDS Annotations y Fiori Elements. Se anuncian próximos Masters y un sorteo.
2
- Configuración de Google Cloud Platform (GCP) y Autenticación OAuth 2.0 Para usar la API de Google Drive, es necesario configurar un proyecto en GCP. Esto incluye habilitar la API de Google Drive específica, configurar la pantalla de consentimiento OAuth 2.0 (definiendo nombre de app, tipo de usuario, etc.) y crear credenciales de tipo “ID de cliente OAuth 2.0” para aplicación web. Crucialmente, se debe añadir la URI del Google Developer Playground (https://developers.google.com/oauthplayground) como URI de redireccionamiento autorizada. Esto genera el Client ID y Client Secret. Posteriormente, se usa el Playground, configurado con estas credenciales, para autorizar el acceso a la API de Drive (scope …/auth/drive) y obtener un Refresh Token y un Access Token inicial. El Refresh Token es esencial para renovar el acceso sin intervención del usuario.

3
- Módulo Node.js para Interacción con Google Drive API
Se crea un módulo Node.js (googledrive.js) para encapsular la lógica de comunicación con Drive. Se instalan las dependencias googleapis y dotenv. En un archivo .env se almacenan las credenciales (Client ID/Secret, Redirect URI, Refresh Token) y el FOLDER_ID de Drive. El módulo inicializa un cliente OAuth 2.0 con estas credenciales y crea un cliente específico para la API de Drive v3. Se implementan y exportan funciones async clave: createFile (usa drive.files.create para subir el archivo), deleteFile (usa drive.files.delete) y generateUrl (usa drive.permissions.create para dar acceso público y drive.files.get para obtener webViewLink).
4
- Desarrollo del Backend con SAP CAP
4.1. Configuración del Proyecto CAP
Se inicializa un proyecto CAP (cds init) y se instalan las dependencias necesarias, incluyendo las de CAP estándar (@sap/cds, express, sqlite3) y las del módulo de Drive (googleapis, dotenv). Se configura el perfil de desarrollo en .cdsrc.json para usar SQLite localmente. Se integra el módulo googledrive.js y el archivo .env.
4.2. Definición del Modelo de Datos CDS (Entidades y Anotaciones Media Stream)
En db/schema.cds, se definen las entidades Person y Attachment usando aspects cuid y managed. La entidad Attachment incluye campos para el contenido (content tipo LargeBinary), tipo MIME (mediaType), nombre (fileName), ID de Drive (fileID) y URL pública (fileURL). Se aplican anotaciones especiales para media streams: @Core.MediaType y @Core.IsMediaType al campo mediaType, @Core.ContentDisposition.Filename al campo fileName, y @odata.draft.skip al campo content. Se establece una composición de Person a Attachment. Se preparan archivos CSV con datos de prueba para Person.
4.3. Implementación de la Lógica del Servicio (service.js)
Se crea un manejador de servicio (srv/service.js) importando cds y las funciones del módulo googledrive.
- Se implementa un manejador after SAVE para Attachment (en modo Draft). Dentro, se consulta el contenido (content), fileName y mediaType del draft recién guardado. Se llama a createFile para subir el archivo a Google Drive. Con el id devuelto por Drive, se hace un UPDATE al draft para almacenar este ID en el campo fileID.
- Se implementa un manejador before DELETE para Attachment. Se consulta el fileID del registro a borrar y se llama a deleteFile para eliminarlo de Drive.
- Se implementa lógica (ej. en after READ) para obtener el fileID, llamar a generateUrl y poblar el campo fileURL antes de devolver los datos.
5
- Desarrollo del Frontend con Fiori Elements
5.1. Definición de Anotaciones CDS para la UI
En srv/annotations.cds, se definen las anotaciones @UI para generar la interfaz Fiori Elements. Para Person, se configuran LineItem, HeaderInfo, FieldGroup y Facets para el List Report y Object Page. Para Attachment (mostrado como tabla en el Object Page de Person), se configura el LineItem. Crucialmente, se usan @UI.IsMediaType: true y @UI.MediaType: mediaType en el campo content para habilitar el control Fiori de subida/descarga. Se configuran @Common.SideEffects en content para refrescar fileName, fileID, fileURL, etc., tras la subida.
6
- Prueba de la Solución Integrada
Se realiza el despliegue a la base de datos SQLite (cds deploy) y se inicia el servidor CAP (npm start o cds watch). Se accede a la Fiori Preview. Dentro de la aplicación, se navega a un registro Person, se usa el control de adjuntos para subir un archivo, se verifica que aparece en Google Drive y que la URL se muestra en la tabla. Se prueba la funcionalidad de borrado, confirmando que se elimina tanto de la UI como de Google Drive.
Conclusión
La integración de servicios externos como la API de Google Drive en aplicaciones SAP CAP es factible y permite extender la funcionalidad estándar de manera significativa, manteniendo el núcleo limpio. Utilizando Node.js, librerías cliente como googleapis, y manejadores de eventos CAP, es posible orquestar la comunicación con la API externa para tareas como el almacenamiento y gestión de archivos. Las anotaciones CDS facilitan la creación de una interfaz Fiori Elements intuitiva para interactuar con esta funcionalidad integrada.
Recomendación de Curso
Basado en el contenido del texto, el curso más relevante de Logali Group sería uno enfocado en SAP Cloud Application Programming Model (CAP). Ver aquí
- Justificación: El webinar profundiza en aspectos avanzados de CAP, como la implementación de manejadores de servicio (service.js), la interacción con APIs externas vía Node.js, el manejo de Draft, y el uso específico de anotaciones CDS para media streams. Estos temas son centrales en un currículum de desarrollo CAP/BTP.