Resumen
Este webinar, presentado por Jorge Briseño de Logali Group, explora la innovación en el desarrollo SAP en la nube, centrándose en el uso de GitHub Copilot para agilizar la creación de modelos de datos y servicios con Cloud Application Programming Model (CAP). Se demuestra cómo Copilot puede generar entidades, aspectos y datos de prueba (archivos CSV) a partir de descripciones en lenguaje natural dentro de Visual Studio Code. Posteriormente, se utilizan CAP CDS Annotations para definir una interfaz de usuario estándar (SAP Fiori Elements List Report Page). Finalmente, se introduce Flexible Programming Model (FPM) como la nueva era para extender estas aplicaciones estándar, mostrando cómo añadir una sección personalizada con un gráfico (utilizando Building Blocks y anotaciones analíticas) mediante SAP Fiori Tools. La sesión destaca la sinergia entre estas herramientas para optimizar los tiempos de desarrollo. Adicionalmente, se anuncian nuevas formaciones como el Master en ABAP Cloud y un próximo Master en Flexible Programming Model.
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: Innovación en la Nube con Copilot y FPM
- Publicidad y Anuncios
2.1. Nuevas Formaciones (Master en ABAP Cloud)
2.2. Sorteo de Becas y Certificado de Asistencia - Entorno de Desarrollo y Configuración Inicial (VS Code, CAP)
3.1. Estructura del Proyecto CAP (cds init)
3.2. Configuración de package.json y Dependencias (npm install)
3.3. Configuración del Perfil de Desarrollo (cdsrc.json, SQLite) - Definición del Modelo de Datos con Copilot
4.1. Uso de Copilot en VS Code (Instalación/Activación)
4.2. Generación de Entidades CAP (Movies, Details, Genres) mediante Prompts
4.3. Incorporación de Aspects (cuid, managed) - Creación de Archivos Estáticos (CSV) con Copilot
5.1. Generación de Datos de Prueba para Entidades
5.2. Especificación de Restricciones y Formatos (UUID, Ratings, Fechas Aleatorias)
5.3. Refinamiento de Datos (Ej. Listado Completo de Lenguajes) - Creación del Servicio y Definición de las Proyecciones con Copilot
6.1. Creación de service.cds
6.2. Proyección de Entidades y Definición de Alias - Implementación y Prueba del Servicio en SQLite
7.1. Despliegue a SQLite (cds deploy –profile dev)
7.2. Verificación de Datos en SQLite
7.3. Ejecución del Servicio Local (cds watch –profile dev) - Definición de CAP CDS Annotations para la Interfaz de Usuario
8.1. Creación de annotations.cds
8.2. Anotaciones para la Entidad Movies (Labels, HeaderInfo, SelectionFields, LineItem, FieldGroup, Facets) con ayuda de Copilot
8.3. Anotaciones para la Entidad Details (Labels, HeaderInfo, LineItem, FieldGroup, Facets)
8.4. Anotaciones para la Entidad Views (Datos de visualización)
8.5. Visualización Previa (Fiori Preview) - Incorporación de Anotaciones Analíticas
9.1. Definición de Medidas Agregadas (@Analytics.Measure)
9.2. Especificación de Soportes de Agregación (@Aggregation.ApplySupported)
9.3. Definición de Gráficos (@UI.Chart) - Extensión con Flexible Programming Model (FPM) y SAP Fiori Tools
10.1. Generación de Aplicación Frontend (SAP Fiori Tools Application Wizard)
10.2. Uso del Application Modeler (Page Map) para Añadir Custom Section
10.3. Implementación de Building Blocks (@sap.fe.macros.Chart) en la Sección Personalizada
10.4. Vinculación del Gráfico a las Anotaciones Analíticas
Conceptos Clave
- GitHub Copilot
- Cloud Application Programming Model (CAP)
- Flexible Programming Model (FPM)
- SAP Fiori Elements
- SAP Fiori Tools (Application Wizard, Page Map / Application Modeler)
- Visual Studio Code (VS Code)
- CAP CDS Annotations (@UI, @Analytics, @Common)
- Building Blocks (FPM)
- Macros (sap.fe.macros)
- Custom Section (FPM)
- Entities (CAP)
- Services (CAP)
- Projections (CAP)
- Aspects (CAP) (cuid, managed, temporal, CodeList)
- OData V4
- Node.js / npm
- cds commands (init, deploy, watch, add data)
- SQLite
- CSV (Archivos de datos estáticos)
- Inteligencia Artificial (IA) en Desarrollo
- List Report Page
- Object Page
- Anotaciones Analíticas (@Analytics.Measure, @Aggregation.ApplySupported)
- Gráficos (@UI.Chart)
- Namespace
- Facets
- FieldGroup
- LineItem
- HeaderInfo
- SelectionFields
1
- Introducción: Innovación en la Nube con Copilot y FPM
Este webinar, presentado por Jorge Briseño de Logali Group, aborda la innovación en el desarrollo SAP en la nube, destacando el uso de GitHub Copilot y Flexible Programming Model (FPM). El objetivo es demostrar cómo aprovechar la Inteligencia Artificial (IA) y las herramientas modernas de SAP Fiori para agilizar los procesos de desarrollo y optimizar la entrega de proyectos. Se utilizará Visual Studio Code, Cloud Application Programming Model (CAP), CAP CDS Annotations, FPM y SAP Fiori Tools.

2
- Publicidad y Anuncios
2.1. Nuevas Formaciones (Master en ABAP Cloud)
Se anuncia una nueva línea de formación enfocada en ABAP Cloud en BTP, invitando a los asistentes a consultar con los asesores de Logali Group para más información y descuentos.
2.2. Sorteo de Becas y Certificado de Asistencia
Se informa sobre un sorteo de tres becas del 50% para másteres existentes (no aplicable a los nuevos lanzamientos de abril) y la disponibilidad del certificado de asistencia (SAP CAP and Flexible Programming Model) para los asistentes en vivo.
3
- Entorno de Desarrollo y Configuración Inicial (VS Code, CAP)
3.1. Estructura del Proyecto CAP (cds init)
Se parte de un proyecto CAP inicializado en Visual Studio Code usando el comando cds init, que crea la estructura base del proyecto.
3.2. Configuración de package.json y Dependencias (npm install)
Es necesario configurar el archivo package.json, añadiendo descripción, repositorio (opcional) y, fundamentalmente, instalando las dependencias clave para CAP mediante npm:
- @sap/cds: El núcleo de CAP.
- express: Para el servidor web (runtime Node.js).
- @sap/cds-dk: Kit de desarrollo (incluye herramientas como cds-ts).
- sqlite3: Driver para la base de datos SQLite (para desarrollo local).
Se diferencia entre dependencias de producción y de desarrollo (–save-dev). El comando npm install instala todas las dependencias listadas.
3.3. Configuración del Perfil de Desarrollo (cdsrc.json, SQLite)
Se crea el archivo .cdsrc.json para definir perfiles de configuración. Se configura un perfil dev para conectar con una base de datos SQLite local (db: kind: ‘sqlite’), especificando el archivo de la base de datos (ej. movies.db).
4
- Definición del Modelo de Datos con Copilot
4.1. Uso de Copilot en VS Code (Instalación/Activación)
Se muestra cómo activar y usar la extensión GitHub Copilot dentro de VS Code, conectándola a la cuenta de GitHub. Se menciona que aunque viene preinstalada, puede requerir reinstalación o manejo de conexión (VPN).
4.2. Generación de Entidades CAP (Movies, Details, Genres) mediante Prompts
Utilizando Copilot Chat o la edición en línea, se proporcionan prompts detallados en lenguaje natural para que Copilot genere el código CDS para las entidades Movies, Details y Genres en el archivo db/schema.cds. Los prompts especifican los campos, tipos de datos y relaciones (ej. asociación uno a uno entre Movies y Details).
4.3. Incorporación de Aspects (cuid, managed)
Se instruye a Copilot para que utilice aspects estándar de CAP como cuid (para claves primarias UUID) y managed (para campos de auditoría: creado/modificado por/en). Se realizan ajustes manuales si Copilot omite algún aspecto solicitado.
5
- Creación de Archivos Estáticos (CSV) con Copilot
5.1. Generación de Datos de Prueba para Entidades
Se utiliza el comando cds add data para generar la estructura de carpetas y archivos CSV iniciales en db/data/. Luego, se usa Copilot para poblar estos archivos CSV (com.logaligroup-Movies.csv, com.logaligroup-Details.csv, etc.) con datos de ejemplo.
5.2. Especificación de Restriciones y Formatos (UUID, Ratings, Fechas Aleatorias)
Los prompts para Copilot incluyen instrucciones específicas como:
- Usar UUIDs versión 4 para los campos ID.
- Limitar valores de rating entre 1 y 5.
- Generar fechas aleatorias y no secuenciales.
- Utilizar nombres de películas reales (ej. top 10 de Netflix como referencia).
- Considerar todos los países/lenguajes reconocidos.
5.3. Refinamiento de Datos (Ej. Listado Completo de Lenguajes)
Si Copilot genera datos limitados (ej. solo 10 lenguajes), se le puede pedir explícitamente que incluya un conjunto más completo. Se realizan ajustes manuales si es necesario (ej. convertir códigos de lenguaje a mayúsculas). Se verifica la consistencia de los datos generados (ej. IDs de Details en Movies).
6
- Creación del Servicio y Definición de las Proyecciones con Copilot
6.1. Creación de service.cds
Se crea el archivo srv/service.cds (o nombre similar, ej. movies-service.cds).
6.2. Proyección de Entidades y Definición de Alias
Se utiliza Copilot para generar las proyecciones de las entidades del modelo de datos (db/schema.cds) en el servicio. Se define un using con un alias (entities) para referenciar el modelo de datos. Se pueden añadir anotaciones a nivel de servicio o proyección (ej. @readonly para géneros).
7
- Implementación y Prueba del Servicio en SQLite
7.1. Despliegue a SQLite (cds deploy –profile dev)
Se ejecuta cds deploy –profile dev –to sqlite:movies.db para crear/actualizar el archivo de base de datos SQLite (movies.db) y poblarlo con los datos de los archivos CSV.
7.2. Verificación de Datos en SQLite
Se utilizan herramientas de visualización de SQLite (como extensiones de VS Code) para verificar que las tablas se crearon correctamente y contienen los datos esperados.
7.3. Ejecución del Servicio Local (cds watch –profile dev)
Se ejecuta cds watch –profile dev para iniciar el servidor CAP localmente, que servirá el servicio OData definido y recargará automáticamente ante cambios en los archivos. Se accede al servicio en el navegador para verificar las entidades y datos.
8
- Definición de CAP CDS Annotations para la Interfaz de Usuario
8.1. Creación de annotations.cds
Se crea un archivo srv/annotations.cds para definir las anotaciones de UI. Se referencia el servicio (using MovieService from ‘./service’).

8.2. Anotaciones para la Entidad Movies (Labels, HeaderInfo, SelectionFields, LineItem, FieldGroup, Facets) con ayuda de Copilot
Se anotan las propiedades de la entidad Movies proyectada en el servicio (annotate MovieService.Movies with @{…}). Copilot ayuda a generar las anotaciones estándar:
- @Common.Label: Etiquetas para los campos.
- @UI.HeaderInfo: Define el título y descripción en el Object Page.
- @UI.SelectionFields: Campos que aparecerán en la barra de filtros del List Report Page.
- @UI.LineItem: Columnas que se mostrarán en la tabla del List Report Page. Se usan anotaciones @Common.Text y @Measures.Unit para asociar campos de descripción o unidad de medida.
- @UI.FieldGroup: Agrupa campos para mostrarlos juntos en una sección del Object Page.
- @UI.Facets: Define las pestañas o secciones del Object Page, referenciando los FieldGroups o LineItems (para tablas anidadas). Se pueden agrupar facetas (@UI.CollectionFacet).
8.3. Anotaciones para la Entidad Details (Labels, HeaderInfo, LineItem, FieldGroup, Facets)
Se aplican anotaciones similares a la entidad Details para definir cómo se mostrará su información (probablemente dentro de una faceta de Movies). Se usa @UI.MultiLineText para campos de descripción largos.
8.4. Anotaciones para la Entidad Views (Datos de visualización)
Se anotan los campos de la entidad Views para definir cómo se mostrarán, típicamente en una tabla anidada (@UI.LineItem) dentro de una faceta en el Object Page de Movies.
8.5. Visualización Previa (Fiori Preview)
Se utiliza la funcionalidad de Fiori Preview (integrada con cds watch o mediante SAP Fiori Tools) para visualizar la aplicación Fiori Elements generada a partir de las anotaciones. Se verifica la apariencia del List Report Page y el Object Page.
9
- Incorporación de Anotaciones Analíticas
Para preparar la visualización de gráficos, se añaden anotaciones analíticas a la entidad Views:
- 9.1. Definición de Medidas Agregadas (@Analytics.Measure): Se define una medida calculada (ej. suma de views) utilizando un qualifier para identificarla. Se especifica la propiedad a agregar (views) y el método de agregación (#SUM).
- 9.2. Especificación de Soportes de Agregación (@Aggregation.ApplySupported): Se indica qué operaciones de agregación soporta el servicio para esta entidad (filtrar, agrupar, ordenar, etc.).
9.3. Definición de Gráficos (@UI.Chart): Se define un tipo de gráfico (ej. #Line), se especifica la dimensión (viewDate) y la medida (referenciando la medida dinámica definida con @Analytics.Measure mediante ![@Analytics.Measure]).
10
- Extensión con Flexible Programming Model (FPM) y SAP Fiori Tools
10.1. Generación de Aplicación Frontend (SAP Fiori Tools Application Wizard)
Se utiliza el Application Wizard de SAP Fiori Tools para generar una aplicación Fiori Elements (List Report Page / Object Page) basada en el servicio CAP local. Esto crea una estructura de proyecto frontend separada (carpeta app/movies). Se omite la generación del archivo annotations.cds ya que las anotaciones están definidas en el backend.

10.2. Uso del Application Modeler (Page Map) para Añadir Custom Section
Se utiliza la herramienta visual Page Map (Show Page Map) de SAP Fiori Tools sobre la carpeta webapp del proyecto frontend. Se selecciona el Object Page y se añade una Custom Section (Sección Personalizada), especificando un nombre y su posición relativa a otras secciones.
10.3. Implementación de Building Blocks (@sap.fe.macros.Chart) en la Sección Personalizada
Al añadir la Custom Section, se genera un fragmento XML (ext/custom/CustomSection.fragment.xml). Dentro de este fragmento, se utiliza un Building Block de FPM, específicamente el macro <macros:Chart>, para renderizar un gráfico.
10.4. Vinculación del Gráfico a las Anotaciones Analíticas
Se configuran las propiedades del macro <macros:Chart>:
- metaPath: Apunta a la anotación @UI.Chart definida en el backend (@UI.Chart#Sum) usando la ruta relativa desde la entidad principal (movies).
- contextPath: Especifica la asociación o ruta de navegación desde la entidad principal (Movies) a la entidad que contiene los datos del gráfico (views).
Se ejecuta la aplicación frontend (usando npm run watch:movies o similar) para ver el resultado: la aplicación Fiori Elements estándar con la sección adicional que muestra el gráfico generado por FPM basado en las anotaciones analíticas.
Conclusión
La combinación de GitHub Copilot, Cloud Application Programming Model (CAP), SAP Fiori Elements con anotaciones CDS, y Flexible Programming Model (FPM) ofrece un enfoque potente y ágil para el desarrollo de aplicaciones SAP modernas. Copilot acelera significativamente la creación del backend (modelo, servicio, datos), mientras que Fiori Elements proporciona una base de UI robusta y estándar. FPM, junto con SAP Fiori Tools, permite extender estas UIs estándar de manera controlada para incorporar visualizaciones personalizadas (como gráficos) u otra lógica específica, logrando un equilibrio entre eficiencia y flexibilidad.
Recomendación de Curso
Basado en el contenido del texto, el curso más relevante de Logali Group es el Master en Flexible Programming Model. Ver aquí
- Justificación: Aunque la demo utiliza CAP y Copilot, el foco principal de la extensión y la “nueva era” mencionada es FPM. El webinar muestra cómo ir más allá de Fiori Elements estándar usando FPM Building Blocks (para el gráfico) y SAP Fiori Tools para habilitar esta extensión. Un máster dedicado a FPM cubriría en profundidad estas técnicas de extensión, los Building Blocks, Extension Points, y cómo integrarlos con diferentes backends (CAP o RAP).
- Nombre Exacto: Master en Flexible Programming Model (mencionado como próximo lanzamiento).
- Enlace (basado en la estructura típica del sitio): Se recomienda visitar la sección de formación/másteres de https://logaligroup.com/ para obtener el enlace directo actualizado cuando el curso sea lanzado.