ABAP Cloud: qué cambia respecto al ABAP clásico
Qué es ABAP Cloud, dónde es obligatorio, qué deja de existir en cada área del código, qué lo sustituye y qué sigue permitido, al contrario de lo que se suele decir.
ABAP Cloud no es otro lenguaje. Es el mismo ABAP con un conjunto de reglas que lo hacen seguro frente a las actualizaciones: lo que SAP no garantiza como estable simplemente no existe para quien programa en él. Entender exactamente qué cambia evita dos errores comunes: subestimar el trabajo de conversión y, en el otro extremo, creer que "nada de lo que hacemos hoy funciona allí".
Qué es ABAP Cloud
SAP define ABAP Cloud mediante cuatro reglas:
- la versión de lenguaje "ABAP for Cloud Development", una versión reducida de ABAP, sin las sentencias obsoletas y sin lo que depende del SAP GUI o del servidor;
- solo objetos liberados: de SAP, el código usa únicamente lo que ella publica como API, con contrato de estabilidad;
- solo ABAP Development Tools (ADT), en Eclipse: no hay desarrollo desde el SAP GUI;
- RAP (ABAP RESTful Application Programming Model) como modelo para las aplicaciones transaccionales.
Qué significa "liberado", para quién y con qué garantía se explica en Contratos de liberación de API: qué garantizan C0, C1, C2, C3 y C4. Además del ABAP estándar y de ABAP Cloud, existe una tercera versión de lenguaje, aún más restringida: ABAP for Key Users, usada por las aplicaciones Fiori de extensibilidad, como Custom Logic y Custom CDS Views. Se explica en ABAP for Key Users: qué son los objetos de Key User y dónde entran en Clean Core.
Dónde es obligatorio
| Producto | ABAP Cloud |
|---|---|
| SAP BTP ABAP Environment y S/4HANA Cloud Public Edition | Obligatorio: el ABAP clásico no existe |
| S/4HANA on-premise y Private Edition, desde 2022 | Opcional y recomendado: convive con el clásico, objeto por objeto |
En S/4HANA on-premise, cada objeto tiene su propia versión de lenguaje. Un sistema puede tener código clásico antiguo y código nuevo en ABAP Cloud uno al lado del otro, y la conversión puede hacerse poco a poco.
Quién impide el uso de lo que no está permitido
En ABAP Cloud, la regla no depende de que alguien ejecute el ATC: quien lo bloquea es la verificación de sintaxis. Un objeto que usa algo no liberado, o una sentencia que no existe en la versión de lenguaje, no se activa. En el acceso dinámico, como una llamada construida en tiempo de ejecución, la verificación ocurre durante la ejecución, con un error en tiempo de ejecución. El ATC sigue siendo útil para evaluar el código clásico antes de la conversión, señalando lo que impediría el cambio.
Qué cambia, área por área
Tipos de objeto
| En el ABAP clásico | En ABAP Cloud |
|---|---|
Programa ejecutable (REPORT), module pool, INCLUDE, type pool |
No existen. Solo clases, interfaces y grupos de funciones |
| Dynpro, pantalla de selección, GUI status, transacción SAP GUI | No existen. La interfaz es Fiori sobre RAP |
| Ayuda para búsqueda del diccionario | No existe. Ayuda para búsqueda basada en CDS |
CDS en el formato antiguo (define view) |
Obsoleta: SAP solo evoluciona la view entity, que es el formato que se debe usar |
| User exit, ampliación implícita o explícita | No existen. Solo BAdI liberado |
Los grupos de funciones y los módulos de funciones propios siguen permitidos, sin el parámetro TABLES.
Interfaz y listas
Todo el mundo del SAP GUI queda fuera: WRITE y listas, TOP-OF-PAGE, AT LINE-SELECTION, PARAMETERS, SELECT-OPTIONS, START-OF-SELECTION, CALL SCREEN, SET PF-STATUS y similares. La interfaz pasa a ser Fiori, con RAP exponiendo los datos a través de un servicio OData. El ALV, ya sea con REUSE_ALV_* o con CL_SALV_TABLE, tampoco está disponible.
Llamada a programas
SUBMIT, CALL TRANSACTION y LEAVE TO TRANSACTION no existen. El procesamiento en fondo se convierte en application job (catálogo y plantilla de job), y la reutilización de lógica pasa a hacerse mediante clases.
Base de datos
| En el ABAP clásico | En ABAP Cloud |
|---|---|
SQL nativo (EXEC SQL), cursores, CALL DATABASE PROCEDURE |
No existen. ABAP SQL y AMDP |
CLIENT SPECIFIED, USING CLIENT (acceso a otro mandante) |
No existen: cada programa ve solo su propio mandante |
| Lectura de cualquier tabla de SAP | Solo mediante CDS liberadas, como I_Product en lugar de MARA e I_JournalEntry en lugar de BKPF |
| Tablas propias | La lectura y la escritura siguen permitidas |
FOR ALL ENTRIES, BYPASSING BUFFER, WITH PRIVILEGED ACCESS y AMDP siguen permitidos. El AMDP tiene que ser seguro respecto al mandante y usar solo objetos liberados.
Transacción y actualización
- Update task (
CALL FUNCTION IN UPDATE TASK),SET UPDATE TASK LOCALyPERFORM ON COMMITno existen: la actualización es siempre local, en el mismo proceso. COMMIT WORKsigue permitido para quien controla la transacción, pero no dentro de RAP: en los handlers y en la fase de grabación, quien confirma es el propio framework.
Paralelismo y RFC
| En el ABAP clásico | En ABAP Cloud |
|---|---|
STARTING NEW TASK, tRFC |
Frameworks liberados: CL_ABAP_PARALLEL y el Background Processing Framework |
CALL FUNCTION DESTINATION con destino de la SM59 |
Sigue permitido, con el destino proveniente de un acuerdo de comunicación |
Programación dinámica
- La generación de código (
GENERATE SUBROUTINE POOL,INSERT REPORT,READ REPORT) no existe. SAP ofrece las API XCO para generar objetos. - Los tokens dinámicos siguen permitidos:
ASSIGNpor nombre,CREATE OBJECTpor nombre de clase, llamada dinámica de métodos ySELECTcon tabla dinámica. La verificación de liberación se hace durante la ejecución. - RTTS (
CL_ABAP_TYPEDESCRy subclases) sigue permitido;DESCRIBEno existe.
Servicios técnicos
Cada servicio clásico tiene una API liberada que lo sustituye:
| Servicio | En el ABAP clásico | En ABAP Cloud |
|---|---|---|
| Log de aplicación | BAL_LOG_CREATE, BAL_DB_SAVE |
CL_BALI_LOG |
| Rango de números | NUMBER_GET_NEXT |
CL_NUMBERRANGE_RUNTIME |
| Correo electrónico | SO_NEW_DOCUMENT_ATT_SEND_API1, CL_BCS |
CL_BCS_MAIL_MESSAGE |
| Bloqueo | Llamada directa a ENQUEUE_* |
CL_ABAP_LOCK_OBJECT_FACTORY |
| Documento de modificación | CHANGEDOCUMENT_OPEN |
CL_CHDO_WRITE_TOOLS |
| Jobs | JOB_OPEN, JOB_CLOSE |
Application job (CL_APJ_RT_API) |
| Formularios | Smart Forms, SAPscript | Adobe Forms, mediante Adobe Document Services |
| Hoja de cálculo | Descarga desde el SAP GUI | XCO_CP_XLSX |
| Comunicación externa | Destinos en la SM59 | Escenarios y acuerdos de comunicación |
| Mantenimiento de tablas | Vista de actualización (SM30) | Objeto de business configuration y app de configuración |
Los archivos en el servidor (OPEN DATASET) y la carga o descarga desde el SAP GUI quedan fuera.
Lenguaje
ABAP Cloud elimina lo que ya era obsoleto y lo que dependía del entorno clásico:
- macros (
DEFINE), línea de cabecera en tabla interna,OCCURS,RANGES,MOVE,COMPUTE,REFRESH,CATCH SYSTEM-EXCEPTIONS, bases de datos lógicas y extractos; MESSAGEsolo conINTO: el mensaje llega al usuario mediante una excepción, mediante RAP o mediante el log de aplicación;BREAK-POINTen el código (ASSERTsigue permitido);GET TIMEySET LANGUAGE: la fecha y la hora se obtienen conGET TIME STAMPyCL_ABAP_CONTEXT_INFO;- la mayor parte de los campos de sistema: los oficiales incluyen
sy-subrc,sy-tabix,sy-index,sy-uname,sy-languysy-mandt; - rutinas de conversión: solo
ALPHAeISOLA.
FORM y PERFORM todavía compilan, pero SAP los marca como obsoletos, soportados solo de forma temporal.
Lo que sigue permitido, al contrario de lo que se suele decir
- crear y llamar módulos de funciones propios;
- RFC síncrono, con destino de un acuerdo de comunicación;
COMMIT WORKfuera de RAP;- AMDP;
- programación dinámica y RTTS;
CALL TRANSFORMATIONcon XSLT y Simple Transformations;- leer y escribir tablas propias;
AUTHORITY-CHECKcon objetos de autorización liberados o propios;FOR ALL ENTRIESyWITH PRIVILEGED ACCESS.
Cambió entre releases
La versión de lenguaje evoluciona. De S/4HANA 2023 (ABAP 7.58) a 2025 pasaron a estar permitidos, entre otros, WAIT UP TO, la llamada a funciones IN REMOTE SESSION y las conexiones secundarias de base de datos, siempre que se abran mediante un objeto de conexión. Antes de descartar una técnica, conviene revisar la documentación del release en uso.
Cómo convive ABAP Cloud con el clásico
En S/4HANA on-premise y Private Edition, los dos coexisten:
- el código clásico llama a cualquier cosa, incluidos los objetos ABAP Cloud;
- el código ABAP Cloud llama a objetos liberados de SAP y a objetos Z del mismo componente de software. Para llamar a un objeto clásico de otro componente, ese objeto tiene que estar liberado con el contrato C1, que es el papel de un wrapper.
Los detalles de esta regla están en Componentes de software en ABAP Cloud: quién puede llamar a quién. Para el efecto de esto en el panel de SAP Cloud ALM, véase Por qué un programa con pantalla clásica se queda en el nivel B.
Fuentes
- SAP Help, ABAP Keyword Documentation, Language Elements in ABAP Versions (S/4HANA 2025 y 7.58) y la documentación de ABAP for Cloud Development.
- SAP Help, SAP BTP ABAP Environment: tipos de objeto, application jobs, formularios, comunicación y business configuration.
- SAP Community, ABAP Cloud FAQ.
- Thomas Schneider (SAP), ABAP Language Versions – FAQs, SAP Community.
- SAP, Cloudification Repository (GitHub SAP/abap-atc-cr-cv-s4hc).