SleevoSleevo

Artículos

ABAP for Key Users: qué son los objetos de Key User y dónde entran en Clean Core

La tercera versión de lenguaje de ABAP, la de las apps Fiori de extensibilidad. Qué genera cada app, qué puede usar y hacer ese código, cómo se transporta y cómo aparece en los niveles de Clean Core.

Equipo Sleevo · 22/10/2026 · actualizado el 23/10/2026 · 10 min de lectura

Compartir

Cuando se habla de Clean Core, la conversación suele quedarse entre el ABAP clásico y ABAP Cloud. Existe una tercera versión de lenguaje, menos comentada y presente en casi todo S/4HANA: ABAP for Key Users. Es en ella donde queda el código creado por las apps Fiori de extensibilidad, como Custom Logic y Custom CDS Views. Muchas empresas ya tienen decenas de estos objetos, con prefijo ZZ1_, sin saber bien qué son ni cómo cuentan en el panel.

Qué es ABAP for Key Users

SAP define tres versiones de lenguaje para ABAP en S/4HANA:

Versión Para qué Dónde se escribe
Standard ABAP El ABAP clásico, sin restricción SAP GUI o ADT
ABAP for Cloud Development Desarrollo con reglas de nube: solo API liberadas ADT
ABAP for Key Users Extensiones hechas por key users, dentro de lo que SAP ofrece como punto de extensión Apps Fiori de extensibilidad

ABAP for Key Users es una versión mucho más restringida que ABAP Cloud. El código queda siempre dentro de métodos, y la versión la definen las propias apps: nadie elige ABAP for Key Users en ADT para un objeto productivo. Existe en SAP BTP, en S/4HANA Cloud Public Edition y, desde 2022, en S/4HANA on-premise y Private Edition.

Las apps y lo que genera cada una

App Qué crea
Custom Fields Campos nuevos en tablas, pantallas, CDS, servicios y formularios de SAP
Custom Logic La implementación de una BAdI liberada, con el código escrito por el key user
Custom CDS Views CDS sobre CDS liberadas de SAP o sobre otros objetos de Key User, para informes, API o reutilización
Custom Business Objects Un objeto de negocio propio: tablas, servicio OData, interfaz de usuario y lógica de validación
Custom Analytical Queries Consultas analíticas sobre CDS de análisis

Un detalle que pesa en Clean Core: no todo objeto generado por estas apps queda en ABAP for Key Users. En un S/4HANA 2023, las CDS de Custom CDS Views y las clases de Custom Logic estaban en ABAP for Key Users. En cambio, las CDS generadas por Custom Business Objects, por Custom Analytical Queries y por los campos personalizados estaban en Standard ABAP, en el formato antiguo de CDS. Para el panel, lo que cuenta es la versión de lenguaje del objeto, no la app que lo creó.

Los prefijos ZZ1_ y YY1_

Los objetos de Key User nacen con un prefijo propio. En S/4HANA on-premise y Private Edition, se configura en la transacción S_ATO_SETUP, junto con los paquetes de destino, y el más común es ZZ1_. Los borradores de sandbox usan otro prefijo, como ZZ9_. En S/4HANA Cloud Public Edition, el prefijo que suele aparecer es YY1_.

Qué puede usar un objeto de Key User

La regla es más estricta que la de ABAP Cloud. Un objeto en ABAP for Key Users solo puede usar:

  • objetos liberados en C1 con la visibilidad Use in Key User Apps;
  • objetos creados por las apps de Key User y marcados para su uso por otras apps de Key User.

En un S/4HANA 2023, la verificación de sintaxis dio estos resultados:

El código de Key User lee... Resultado
CDS liberada para Key User y para Cloud (I_Product) Aceptado
CDS liberada solo para Key User (I_BudgetEntryDocumentType) Aceptado
CDS liberada solo para Cloud (ICA_FiscalYearVariant) Rechazado: "The use of CDS Entity ... is not permitted"
Clase liberada solo para Cloud (CL_BALI_LOG) Rechazado
Tabla no liberada con sucesor (T001) Rechazado, con la indicación "Use CDS Entity I_COMPANYCODE instead"
Objeto generado por otra app de Key User (leído por una clase de Custom Logic) Aceptado
CDS en ABAP for Key Users creada en ADT, solo para prueba, sin liberación Rechazado

La última línea muestra una diferencia respecto a ABAP Cloud. En ABAP Cloud, los objetos Z del mismo componente de software se ven entre sí sin contrato. En ABAP for Key Users, no: incluso en el mismo paquete, un objeto creado fuera de las apps tiene que estar liberado para Key User. La regla de componentes de ABAP Cloud está en Componentes de software en ABAP Cloud: quién puede llamar a quién, y las visibilidades en Contratos de liberación de API: qué garantizan C0, C1, C2, C3 y C4.

El camino inverso también tiene límite: una clase ABAP Cloud que intenta leer una CDS liberada solo para Key User se rechaza. SAP describe las dos capas como separadas, y con los objetos de SAP así es como funciona. Con los objetos de Key User de la propia empresa, en S/4HANA on-premise, un objeto ABAP Cloud del mismo componente de software los leyó sin liberación; desde otro componente, vale la regla del C1. Los objetos de ABAP Cloud pueden liberarse para Key User, pero lo contrario no vale, con una excepción: los campos personalizados pueden ser usados por el código ABAP Cloud.

Qué permite el lenguaje

ABAP for Key Users tiene una lista corta de sentencias, publicada por SAP:

  • permitidas: declaraciones (DATA, TYPES, CONSTANTS, FIELD-SYMBOLS), control de flujo (IF, CASE, DO, WHILE, LOOP), tratamiento de excepciones (TRY, CATCH) y operaciones de texto (CONCATENATE, SPLIT, REPLACE, FIND);
  • con restricción: SELECT solo sobre objetos permitidos; INSERT, MODIFY, DELETE, READ y SORT solo en tabla interna; MESSAGE solo con INTO; RAISE solo EXCEPTION;
  • campos de sistema: solo sy-subrc, sy-tabix, sy-index, sy-dbcnt y sy-fdpos, y solo para lectura.

Quedan fuera, entre otros: llamar a un módulo de función, AUTHORITY-CHECK, COMMIT WORK, CREATE OBJECT, escribir en una tabla de base de datos, llamar a una BAdI, la programación dinámica y la salida de listas. En la verificación de sintaxis, el mensaje es directo, por ejemplo "AUTHORITY-CHECK" is not allowed in the current ABAP language version. o Access to the field "SY-UNAME" is not permitted in the current ABAP language version.

Algunas expresiones, como VALUE, NEW, CONV y COND, y también JOIN y FOR ALL ENTRIES, fueron aceptadas por la verificación de sintaxis, aunque la tabla de elementos de lenguaje de la documentación 7.58 las marca como fuera de ABAP for Key Users. En caso de duda, valen la verificación de sintaxis del sistema y la lista de sentencias de SAP Help, no esa tabla.

En la lógica de una BAdI, hay además un segundo freno: el contrato transaccional de la propia BAdI. En una BAdI clasificada como funcional, hasta un SELECT genera un aviso de violación del contrato transaccional, y una escritura genera un error, incluso antes de la regla de versión de lenguaje.

Transporte

En S/4HANA on-premise y Private Edition, la extensibilidad de Key User se activa con la S_ATO_SETUP (Adaptation Transport Organizer):

  • los elementos nacen en un paquete local, que no se transporta;
  • la app Configure Software Packages define el paquete de desarrollo y la orden de transporte de destino;
  • la app Register Extensions for Transport registra cada elemento en el paquete y en la orden. El key user no crea la orden: alguien de TI la crea por él;
  • en la orden, el elemento va como un objeto propio (por ejemplo R3TR SCBO para un Custom Business Object), junto con los objetos generados.

En S/4HANA Cloud Public Edition, el transporte se hace con las apps Export Software Collection e Import Collection.

Key User y los niveles de Clean Core

El white paper de Clean Core de SAP (edición de agosto de 2026) sitúa la extensibilidad de Key User en el nivel A: una extensión es A cuando usa solo API y puntos de extensión liberados, hecha con las herramientas de Key User o de desarrollador, cada una en su versión de lenguaje. El mismo documento recomienda empezar por las opciones de Key User en las extensiones acopladas al sistema.

En el panel, el panorama todavía no es tan sencillo:

  • la ayuda de SAP Cloud ALM describe los objetos de nivel A como los hechos en ABAP for Cloud Development;
  • el propio white paper advierte, en una nota, que el indicador de objetos de nivel A del panel de RISE with SAP todavía no considera los objetos de Key User;
  • el ATC clasifica los elementos de Key User como no preparados para la nube. La nota SAP 3593439 los excluye del ATC por defecto, pero solo a partir de S/4HANA 2023 SPS04;
  • los objetos generados en Standard ABAP (las CDS de Custom Business Objects, de campos y de consultas) siguen la regla del ABAP estándar: sin hallazgos, quedan en el nivel B.

Antes de contar un objeto de Key User como nivel A, conviene comprobar cómo aparece en la exportación de SAP Cloud ALM del propio sistema.

Hay también un uso práctico para la adecuación de código clásico. Un programa en ABAP estándar que lee una CDS liberada solo para Key User recibe un hallazgo de nivel C, porque para él esa CDS es un objeto interno. Una Custom CDS View sobre la misma CDS, creada en la app Custom CDS Views y transportada por el Adaptation Transport Organizer, no genera hallazgos: el check de uso de API no analiza objetos en ABAP for Key Users. Leída por el programa clásico, es un objeto Z, y las llamadas entre objetos Z no puntúan. Cuando la alternativa liberada para una tabla de SAP solo existe para Key User, este camino elimina el hallazgo C del programa en lugar de solo cambiarlo de lugar.

Cuándo usar cada versión

Necesidad Camino
Campo nuevo en un proceso de SAP Custom Fields
Regla sencilla en un punto de extensión de SAP (validación, valor por defecto, campo obligatorio) Custom Logic, si la BAdI está liberada para Key User
Informe o API sobre datos de SAP Custom CDS Views, o CDS en ABAP Cloud cuando la lógica crece
Llamadas a API, escritura, autorización, integración, procesamiento en fondo ABAP Cloud en ADT
Interfaz con pantalla de SAP GUI ABAP clásico, con el techo del nivel B (véase Por qué un programa con pantalla clásica se queda en el nivel B)

ABAP for Key Users resuelve bien lo que es pequeño y cercano al proceso. Cuando la regla necesita algo que el lenguaje no permite, el paso siguiente es ABAP Cloud. Las diferencias están en ABAP Cloud: qué cambia respecto al ABAP clásico.

Fuentes

  • SAP Help, ABAP Keyword Documentation 7.58: ABAP Language Versions, ABAP Language Versions, Release Contracts and Released APIs, glosario ABAP for Key Users y Language Elements in ABAP Versions.
  • SAP Help, SAP S/4HANA Cloud Public Edition: Key User Extensibility, Custom Logic, Custom CDS Views, Custom Business Objects, Custom Analytical Queries, Custom Fields y Statements in ABAP for Key Users.
  • SAP Help, SAP Cloud ALM: Extensibility (System View).
  • SAP, Extend SAP S/4HANA in the cloud and on premise with ABAP based extensions (ABAP Extensibility Guide), versión 2.3, agosto de 2025.
  • SAP, Clean core extensibility (white paper), edición de agosto de 2026, secciones 3.3.4 y 4.3.3 y nota 29.
  • Thomas Schneider (SAP), ABAP Language Versions – FAQs, SAP Community.
  • Pruebas de verificación de sintaxis y consultas a las tablas de objetos de Key User en un SAP S/4HANA 2023 (SAP_BASIS 758).