SAP Cloud Application Programming Model (CAP)
El SAP Cloud Application Programming Model (CAP) es el framework de SAP para construir servicios y aplicaciones empresariales, principalmente en SAP BTP. Los desarrolladores declaran modelos de datos y servicios en el lenguaje Core Data Services (CDS) propio de CAP, y un runtime Node.js o Java los sirve como endpoints OData, REST o GraphQL, con handlers genéricos para las operaciones estándar.
Datos clave
- Tipo
- Framework de aplicaciones (lenguajes, bibliotecas, herramientas)
- Capa
- Lógica de negocio y modelo de datos, en la franja de la plataforma SAP BTP
- Runtimes
- Node.js y Java
- Bases de datos
- SQLite o H2 para desarrollo; SAP HANA Cloud o PostgreSQL para producción
- Se despliega en
- SAP BTP, runtime Cloud Foundry o Kyma
- Herramientas
- Línea de comandos CDS, Visual Studio Code, SAP Business Application Studio
- Se aplica a
- SAP BTP (side-by-side con SAP S/4HANA, cualquier edición)
Capa: Lógica de negocio y modelo de datosDónde se ubica ▾
Capa: Lógica de negocio y modelo de datos
También abarca: SAP BTP, Servicios y API
Abrir el mapa de arquitectura →¿Cómo funciona una aplicación CAP?
Una aplicación CAP parte de declaraciones y añade código solo donde los valores predeterminados del framework no bastan:
- Modelo de dominio: las entidades, los tipos y las asociaciones se escriben en archivos CDS, por ejemplo proveedores y franjas de entrega para una aplicación de logística de Alder Manufacturing.
- Servicios: las service definitions exponen proyecciones de esas entidades, adaptadas a una UI o a una API.
- Runtime: el runtime Node.js o el CAP Java SDK sirve los servicios y gestiona de forma genérica las operaciones estándar: lectura, escritura, paginación, ordenación y draft de SAP Fiori.
- Lógica personalizada: los event handlers en JavaScript, TypeScript o Java, registrados para las fases before, on y after de una solicitud, añaden validaciones, cálculos y llamadas a otros sistemas.
- Persistencia: el mismo modelo se ejecuta en SQLite o H2 durante el desarrollo y en SAP HANA Cloud o PostgreSQL en producción.
- Despliegue: la aplicación se despliega en SAP BTP, en el runtime Cloud Foundry o Kyma.
Las aplicaciones SAP Fiori elements consumen los servicios CAP mediante anotaciones de UI escritas en los mismos archivos CDS. Una aplicación CAP es, por tanto, sobre todo modelo, con el código concentrado allí donde la lógica de negocio es específica.
¿CAP CDS es lo mismo que ABAP CDS?
No. Ambos provienen de la idea de Core Data Services de SAP, ambos usan una sintaxis declarativa similar y ambos incluyen anotaciones, pero son implementaciones separadas:
- ABAP CDS forma parte de la plataforma ABAP. Sus vistas son objetos del repositorio que se activan como vistas de base de datos dentro de un sistema ABAP y se transportan con transportes ABAP.
- CAP CDS es el lenguaje de modelado de CAP. Su compilador convierte los modelos en una representación basada en JSON llamada Core Schema Notation (CSN), a partir de la cual CAP genera artefactos de base de datos y metadatos de servicio.
Las anotaciones muestran la diferencia en la práctica. En CAP, las anotaciones de UI usan directamente los nombres de los términos OData, como UI.LineItem; en ABAP CDS, las notaciones a nivel de elemento como @UI.lineItem se traducen a esos términos cuando se expone el servicio. Un modelo no puede pasar de uno a otro sin cambios. CAP CDS y ABAP CDS comparten un nombre y una filosofía, no un runtime.
¿Cuándo es CAP la opción adecuada?
Elija CAP cuando:
- la aplicación debe estar junto a SAP S/4HANA y no dentro de él, como extensión side-by-side en SAP BTP;
- la aplicación tiene sus propios datos o combina datos de varios sistemas, SAP y no SAP;
- el equipo trabaja en JavaScript, TypeScript o Java en lugar de ABAP;
- la aplicación debe servir a varios clientes como oferta SaaS multitenant, que CAP admite con aislamiento de tenants y sus servicios MTX.
Prefiera RAP cuando la lógica debe ejecutarse en la misma transacción que los datos de SAP S/4HANA, cuando la extensión modifica un business object estándar, o cuando el equipo y el modelo de operación se basan en ABAP.
Muchos entornos usan ambos: RAP para la lógica cercana al núcleo, CAP para las aplicaciones a su alrededor. La pregunta decisiva para CAP es dónde deben residir los datos y la transacción.
¿Cómo se conecta CAP con SAP S/4HANA?
Una aplicación CAP no se ejecuta dentro de SAP S/4HANA, por lo que accede a los datos de SAP mediante API:
- La definición de API de un servicio OData de SAP S/4HANA, por ejemplo del SAP Business Accelerator Hub, se importa en el proyecto CAP con cds import, que lee archivos OData EDMX, OpenAPI y AsyncAPI.
- Durante el desarrollo, CAP puede simular localmente el servicio importado, de modo que los equipos pueden trabajar antes de que exista la conexión.
- En producción, las llamadas pasan por la conectividad de SAP BTP: destinations para el sistema de destino y, para los sistemas on-premise, el Cloud Connector.
- Los eventos de SAP S/4HANA pueden desencadenar lógica CAP de forma asíncrona cuando el escenario lo admite, normalmente a través de un servicio de event broker de SAP.
El contrato entre CAP y SAP S/4HANA es la API liberada, no la tabla de base de datos. Esto mantiene la extensión desacoplada del núcleo, que es el propósito del enfoque side-by-side que sigue CAP.
¿Dónde termina CAP?
Los puntos fuertes de CAP son la rapidez y la coherencia. Los handlers genéricos eliminan el código repetitivo, el desarrollo local funciona sin conexión a la nube gracias a los mocks y a SQLite, la compatibilidad con SAP Fiori y SAP HANA viene integrada, y la multitenancy forma parte del framework en lugar de ser un proyecto aparte.
Los límites se derivan de ejecutarse fuera del sistema de registro:
- Sin acceso directo a los elementos internos de SAP S/4HANA. Todo pasa por API liberadas; las API que faltan se convierten en bloqueos o requieren un complemento en el lado ABAP.
- Sin transacción compartida. Una actualización en CAP y una contabilización en SAP S/4HANA son transacciones separadas; el tratamiento de fallos debe diseñarse explícitamente.
- Más que operar. Una aplicación CAP añade al entorno un runtime de SAP BTP, una base de datos y conectividad, con su propia supervisión, actualizaciones y costes.
- Framework con convenciones marcadas. Trabajar en contra de las convenciones de CAP cuesta más que seguirlas.
CAP es la opción más sólida para las aplicaciones junto al núcleo; no sustituye la lógica que debe residir dentro de él.
CAP frente a RAP frente a ABAP CDS: ¿cuál es la diferencia?
| CAP | RAP | ABAP CDS | |
|---|---|---|---|
| Qué es | Framework para servicios y aplicaciones | Modelo de programación ABAP para aplicaciones y servicios transaccionales | Lenguaje de modelado de datos de la plataforma ABAP |
| Se ejecuta en | Principalmente SAP BTP (Node.js o Java) | Sistemas ABAP: SAP S/4HANA, SAP BTP ABAP environment | Sistemas ABAP |
| Modelo de datos | CAP CDS | ABAP CDS view entities | Es el modelo de datos |
| Comportamiento transaccional | Handlers genéricos más handlers personalizados | Behavior definitions y behavior pools | Ninguno (modelo de lectura) |
| Uso típico | Extensiones side-by-side y SaaS en SAP BTP | Aplicaciones y API junto a los datos de SAP S/4HANA | Modelos de datos, análisis, bases de API |
CAP y RAP son alternativas para construir servicios en lugares distintos; ABAP CDS es un componente de RAP, no una alternativa a CAP.
Preguntas frecuentes
¿CAP es solo para SAP BTP?
CAP está diseñado para SAP BTP, y SAP documenta el despliegue en los runtimes Cloud Foundry y Kyma. El desarrollo también se ejecuta localmente en un portátil con SQLite y servicios simulados. La operación de aplicaciones CAP fuera de SAP BTP no se trata en esta guía.
¿CAP admite OData V2 además de OData V4?
CAP usa OData V4 por defecto. OData V2 está obsoleto en CAP y se sirve mediante el adaptador OData V2, un plugin en Node.js y un adaptador integrado en CAP Java, para las UI existentes basadas en V2. OData V4 es la opción para las nuevas aplicaciones SAP Fiori elements.
¿Se pueden construir aplicaciones SAP Fiori elements con CAP?
Sí. Las anotaciones de UI se escriben en los archivos CAP CDS, CAP sirve el servicio OData y gestiona de forma genérica el draft de SAP Fiori, y SAP Fiori tools genera aplicaciones list report y object page sobre el servicio CAP.
¿Qué bases de datos admite CAP?
SAP documenta SQLite y H2 para desarrollo y SAP HANA Cloud o PostgreSQL para producción. Cambiar de una a otra es sobre todo un cambio de perfil de configuración, porque el modelo de datos se escribe en CDS y no en un SQL específico de la base de datos.
¿Puede CAP leer directamente las tablas de SAP S/4HANA?
No. Una aplicación CAP consume SAP S/4HANA a través de API liberadas, como servicios OData, llamadas mediante la conectividad de SAP BTP. El acceso directo a las tablas eludiría el contrato de estabilidad que hace que una extensión side-by-side sea segura ante las actualizaciones.
Fuentes
- SAP Help Portal: Developing with the SAP Cloud Application Programming Model (SAP BTP)
- SAP Help Portal: Programming Models on SAP BTP (CAP and ABAP Cloud)
- SAP Help Portal: SAP BTP, Cloud Foundry and Kyma runtimes with CAP
- CAP documentation (capire): Features Overview
- CAP documentation (capire): Serving OData APIs (V4 default, V2 support)
- Se aplica a
- SAP BTP
- Última revisión