ABAP RESTful Application Programming Model (RAP)
El ABAP RESTful Application Programming Model (RAP) es el modelo de programación de SAP para construir business objects transaccionales, servicios OData y aplicaciones SAP Fiori en ABAP. RAP combina modelos de datos ABAP CDS, behavior definitions que declaran operaciones, validaciones y draft, implementaciones de comportamiento en ABAP, y service definitions y bindings que exponen el resultado como OData V2 o V4.
Datos clave
- Tipo
- Modelo de programación ABAP
- Capa
- Lógica de negocio y modelo de datos, expuesta mediante Servicios y API
- Construido en
- ABAP Development Tools (Eclipse)
- Componentes
- CDS view entities, behavior definition, behavior pool, service definition, service binding
- Disponibilidad on-premise
- Unmanaged desde ABAP 7.53, managed desde ABAP 7.54 (SAP S/4HANA 1909), draft desde 7.55 (2020)
- Quién trabaja con ello
- Desarrolladores ABAP
- Se aplica a
- SAP S/4HANA (todas las opciones de implementación), SAP BTP ABAP environment
Capa: Lógica de negocio y modelo de datosDónde se ubica ▾
Capa: Lógica de negocio y modelo de datos
También abarca: Servicios y API
Abrir el mapa de arquitectura →¿Cómo se construye una aplicación RAP?
Una aplicación RAP se ensambla a partir de capas, cada una de ellas un objeto de repositorio independiente:
- Modelo de datos: CDS view entities sobre tablas de base de datos. Una entidad raíz y sus entidades hijas, vinculadas mediante composiciones, forman el business object, por ejemplo una solicitud de compra con sus posiciones.
- Behavior definition (BDEF): declara lo que el business object puede hacer: crear, actualizar, eliminar, actions, validaciones, determinations, bloqueo, control de concurrencia y draft.
- Behavior pool: una clase ABAP que implementa las partes personalizadas que declara la behavior definition, como una validación que rechaza las solicitudes por encima de un límite.
- Capa de proyección: projection views y una behavior definition de proyección que exponen solo lo que necesita un servicio concreto.
- Service definition: enumera las entidades que expone un servicio.
- Service binding: elige el protocolo (OData V2, OData V4 o InA) y la categoría, UI o Web API, y publica el servicio. Una vista previa muestra el resultado como una aplicación SAP Fiori elements.
Cada capa tiene una sola función, y así es como RAP mantiene separados el modelo de datos, el comportamiento y la exposición en un único business object ABAP.
¿Cuál es la diferencia entre RAP managed y unmanaged?
El tipo de implementación en la behavior definition decide quién escribe el código transaccional:
- Managed: el framework RAP gestiona las operaciones estándar de creación, actualización y eliminación, el buffer transaccional y el guardado en las tablas persistentes. Los desarrolladores solo añaden lógica de negocio: validaciones, determinations y actions.
- Unmanaged: los desarrolladores implementan ellos mismos cada operación y la secuencia de guardado, normalmente llamando a código de aplicación existente que ya gestiona la persistencia.
Existe una tercera variante para el código más antiguo: los business objects construidos con el modelo predecesor ABAP Programming Model for SAP Fiori (BOPF) pueden migrarse a business objects RAP basados en BOPF. SAP señala que estos no son business objects RAP nativos y no están habilitados para ABAP Cloud.
Criterio de decisión: elija managed cuando el business object es propietario de sus tablas, como una nueva aplicación personalizada en Alder Manufacturing; elija unmanaged cuando una lógica heredada probada deba reutilizarse en lugar de reescribirse. RAP managed reduce el código; RAP unmanaged protege las inversiones existentes.
¿Qué releases admiten RAP?
RAP ha crecido release a release, por lo que la disponibilidad depende de la funcionalidad, no solo del modelo:
| Hito | Release ABAP on-premise | SAP S/4HANA | Nube (SAP BTP ABAP environment) |
|---|---|---|---|
| Business objects unmanaged | 7.53 | 1809 | 1808 |
| Business objects managed | 7.54 | 1909 | 1908 |
| Gestión de draft (tabla de draft) | 7.55 | 2020 | 2008 |
| Extensiones de behavior definition | 7.57 | 2022 | 2208 |
SAP S/4HANA Cloud Public Edition recibe las funcionalidades con la cadencia de la nube, y Private Edition sigue el release on-premise sobre el que se ejecuta. SAP ERP (ECC) no incluye RAP: los releases de ABAP Platform que lo incorporan, a partir de 7.53, solo se entregan con SAP S/4HANA. Las tablas de funcionalidades de RAP BDL de SAP indican el release de cada elemento del lenguaje, y comprobarlas para el release de destino es el primer paso de cualquier diseño RAP.
¿Qué relación hay entre RAP y ABAP Cloud?
ABAP Cloud es el modelo de desarrollo de SAP para un ABAP preparado para la nube y estable ante las actualizaciones: solo API liberadas, una versión de lenguaje restringida y herramientas basadas en Eclipse. RAP es el modelo de programación que ABAP Cloud utiliza para las aplicaciones y los servicios transaccionales.
- En el SAP BTP ABAP environment y en la extensibilidad para desarrolladores de SAP S/4HANA Cloud Public Edition, RAP es la forma de construir aplicaciones y API transaccionales.
- En Private Edition y on-premise, RAP puede usarse con las reglas de ABAP Cloud, disponibles a partir de SAP S/4HANA 2022 (ABAP 7.57), o en ABAP clásico. La elección determina qué objetos SAP puede usar el código.
- El strict mode en una behavior definition impone las buenas prácticas actuales, como usar CDS view entities como fuentes de datos.
RAP no está, por tanto, ligado a SAP BTP: el mismo modelo se ejecuta dentro de SAP S/4HANA. ABAP Cloud aporta las reglas; RAP aporta la estructura.
¿Dónde termina RAP?
Los puntos fuertes de RAP son reales. Un único modelo va desde la base de datos hasta la UI de SAP Fiori elements; el bloqueo, el control de concurrencia y el draft provienen del framework en lugar de código escrito a mano; los servicios se mantienen estables ante las actualizaciones cuando se construyen sobre API liberadas; y el mismo business object puede servir a una UI y a una API.
Sus límites se derivan de dónde se ejecuta:
- Solo ABAP. RAP requiere conocimientos de ABAP, ABAP Development Tools y un sistema ABAP; los equipos que no los tienen se enfrentan a una curva de aprendizaje real.
- Un solo sistema. Un business object RAP es transaccional dentro de un único sistema ABAP. Los procesos que abarcan varios sistemas necesitan integración o eventos por encima.
- Ligado al release. Una funcionalidad documentada para la nube puede llegar a on-premise solo con un release posterior.
- Flexibilidad de UI mediante anotaciones. Las aplicaciones generadas con SAP Fiori elements son tan flexibles como los floorplans y sus puntos de extensión.
RAP es la opción más sólida cuando la lógica y los datos pertenecen al sistema ABAP; no está diseñado para la orquestación entre sistemas.
¿Cuáles son los errores comunes con RAP?
- Exponer directamente la capa base. Sin una capa de proyección, cada cambio en el servicio afecta al business object principal.
- Elegir unmanaged por costumbre. Unmanaged tiene sentido cuando se reutiliza lógica heredada; para tablas nuevas, managed ahorra la mayor parte del código.
- Vincular una aplicación SAP Fiori a un servicio Web API. Los bindings Web API no incluyen metadatos de UI, por lo que la aplicación muestra tablas vacías o diseños predeterminados. Use un binding UI.
- Construir sobre vistas CDS basadas en DDIC. Son obsoletas, y el strict mode espera view entities.
- Ignorar las tablas de funcionalidades. El código copiado de un tutorial de la nube puede no activarse en un release on-premise más antiguo.
La mayoría de los problemas con RAP son decisiones de capas y de release tomadas demasiado pronto, no errores de programación.
RAP frente a CAP: ¿cuál es la diferencia?
| RAP | CAP | |
|---|---|---|
| Lenguaje y runtime | ABAP, en un sistema ABAP | Node.js o Java |
| Dónde se ejecuta | SAP S/4HANA (todas las opciones de implementación) y SAP BTP ABAP environment | Principalmente SAP BTP (runtime Cloud Foundry o Kyma) |
| Modelo de datos | ABAP CDS view entities | El lenguaje CDS propio de CAP |
| Acceso a los datos de SAP S/4HANA | Directo, dentro del mismo sistema (API liberadas en ABAP Cloud) | Mediante API remotas |
| Uso típico | Aplicaciones y API transaccionales junto a los datos de SAP S/4HANA | Aplicaciones side-by-side, servicios de varias fuentes, SaaS |
RAP y CAP resuelven el mismo problema en lugares distintos: RAP dentro del sistema ABAP, CAP junto a él en SAP BTP.
Preguntas frecuentes
¿RAP es el sucesor del ABAP Programming Model for SAP Fiori?
Sí. SAP describe RAP como diseñado para mejorar el ABAP Programming Model for SAP Fiori, que combinaba vistas CDS, BOPF y SAP Gateway. Los business objects existentes basados en BOPF pueden migrarse a business objects RAP basados en BOPF, pero estos no están habilitados para ABAP Cloud.
¿RAP requiere SAP BTP?
No. RAP se ejecuta en SAP S/4HANA on-premise y en Private Edition a partir de los releases indicados en las tablas de funcionalidades de SAP, en SAP S/4HANA Cloud Public Edition mediante la extensibilidad para desarrolladores, y en el SAP BTP ABAP environment.
¿RAP sustituye a los proyectos del SAP Gateway Service Builder (SEGW)?
No en los proyectos existentes. Para los nuevos servicios OData V4, la documentación de Gateway de SAP recomienda encarecidamente el enfoque programático en ABAP Development Tools, donde RAP es el modelo, en lugar del Service Builder. SEGW sigue documentado en los releases actuales de SAP Gateway Foundation, por lo que los proyectos SEGW existentes siguen funcionando.
¿Qué versiones de OData puede exponer un servicio RAP?
Un service binding de RAP puede publicar un servicio como OData V2 u OData V4, en la categoría UI o Web API; también existe un tipo de binding InA para el consumo analítico. La combinación adecuada depende de si el servicio lo usa una aplicación SAP Fiori o un consumidor externo.
¿Debo usar RAP o CAP?
Use RAP cuando la lógica deba ejecutarse dentro del sistema ABAP, junto a los datos y las transacciones de SAP S/4HANA con los que trabaja. Use CAP cuando construya una aplicación side-by-side en SAP BTP, combine varias fuentes o se dirija a equipos de Node.js o Java.
Fuentes
- SAP Help Portal: ABAP RESTful Application Programming Model (development guide)
- SAP Help Portal: RAP BDL — Feature Tables (release availability of behavior definition elements)
- SAP Help Portal: Why ABAP Cloud? (product availability per edition and release)
- SAP Help Portal: RAP — BOPF-Based RAP Business Objects
- SAP Help Portal: News for ABAP Release 7.5x (ABAP release to SAP S/4HANA release mapping)
- Se aplica a
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Última revisión