SleevoSleevo

Artículos

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.

Equipo Sleevo · 16/07/2026 · actualizado el 23/10/2026 · 8 min de lectura

Compartir

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 LOCAL y PERFORM ON COMMIT no existen: la actualización es siempre local, en el mismo proceso.
  • COMMIT WORK sigue 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: ASSIGN por nombre, CREATE OBJECT por nombre de clase, llamada dinámica de métodos y SELECT con tabla dinámica. La verificación de liberación se hace durante la ejecución.
  • RTTS (CL_ABAP_TYPEDESCR y subclases) sigue permitido; DESCRIBE no 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;
  • MESSAGE solo con INTO: el mensaje llega al usuario mediante una excepción, mediante RAP o mediante el log de aplicación;
  • BREAK-POINT en el código (ASSERT sigue permitido);
  • GET TIME y SET LANGUAGE: la fecha y la hora se obtienen con GET TIME STAMP y CL_ABAP_CONTEXT_INFO;
  • la mayor parte de los campos de sistema: los oficiales incluyen sy-subrc, sy-tabix, sy-index, sy-uname, sy-langu y sy-mandt;
  • rutinas de conversión: solo ALPHA e ISOLA.

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 WORK fuera de RAP;
  • AMDP;
  • programación dinámica y RTTS;
  • CALL TRANSFORMATION con XSLT y Simple Transformations;
  • leer y escribir tablas propias;
  • AUTHORITY-CHECK con objetos de autorización liberados o propios;
  • FOR ALL ENTRIES y WITH 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).