SleevoSleevo

Artículos

Wrapper en Clean Core: la deuda se concentra, no desaparece

Cuando SAP no ofrece un sustituto liberado, el wrapper aísla el uso no liberado en un solo punto. Cómo afecta a la deuda, cuándo compensa y cuándo no.

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

Compartir

No toda función o tabla de SAP tiene un sustituto liberado. Para esos casos, la recomendación de la propia SAP para quien sigue Clean Core es el wrapper: un objeto de la empresa que encapsula el uso no liberado detrás de un contrato liberado. Los programas pasan a usar el wrapper, y el uso no liberado queda en un solo lugar.

Es una buena herramienta, siempre que se entienda lo que hace con la deuda.

Qué es un wrapper

El wrapper no reescribe la lógica de SAP: solo la transmite. La regla sigue siendo la de la función o la tabla original, y el comportamiento no cambia. Lo que cambia es que, en lugar de que decenas de programas llamen a la función interna, todos llaman al wrapper, y solo el wrapper llama a la función.

Tipo Cuándo usarlo Cómo es
Función de SAP La función no tiene sustituto liberado y varios objetos Z la llaman Interfaz liberada y una clase que llama a la función original, transmitiendo todo
Clase de SAP La clase no está liberada, no tiene sucesora liberada y varios objetos Z llaman a sus métodos Interfaz liberada y una clase que crea la clase original y transmite las llamadas, solo para los métodos que usan los objetos Z
Tabla de SAP Varias CDS Z leen la misma tabla y SAP no indica una sucesora liberada Una CDS con los campos de la tabla, con los mismos nombres y sin filtro

La deuda cambia de lugar

El wrapper sigue usando lo que no está liberado, así que el hallazgo pasa a él: un wrapper de tabla queda en el nivel C, como cualquier CDS que lee una tabla de SAP. La ganancia está en los objetos que pasan a usar el wrapper, que dejan de tener el hallazgo.

Por eso la cuenta es sencilla:

  • con un único objeto que lo usa, la deuda solo cambia de lugar, y el wrapper no compensa;
  • a partir de dos, la deuda baja: diez programas que llamaban a la misma función interna se convierten en un solo hallazgo, en el wrapper.

Cuando se crea el wrapper, el primer cambio no reduce la deuda: solo la cambia de lugar. Cada objeto que pasa a usarlo después la reduce.

Cuándo no hacer un wrapper

  • Cuando SAP indica una sucesora liberada. En ese caso, el camino es cambiar a la sucesora: elimina el hallazgo de forma definitiva.
  • Cuando la función depende de quién la llama. Si el cuerpo de la función comprueba qué parámetros se informaron, transmitirlos todos puede no equivaler a omitirlos, y el wrapper cambiaría el comportamiento.
  • Cuando el objeto Z hereda de una clase de SAP o implementa una interfaz de SAP. Aquí el vínculo es la propia estructura del objeto, no una llamada, y no hay nada que transmitir: el camino es la alternativa liberada, cuando existe, o mantenerlo como está.
  • Cuando sirve para esconder el problema. Un wrapper que añade una regla propia por encima de SAP deja de ser un wrapper: se convierte en un objeto Z nuevo, con lógica nueva, que hay que mantener.

Por qué liberar el wrapper

Un wrapper suele liberarse con el contrato C1. Sin eso, el código ABAP Cloud de otro componente de software no puede usarlo, y perdería su razón de ser: preparar el camino hacia el nivel A. En el mismo componente, la llamada funciona sin contrato, pero la dependencia queda oculta. La liberación también es un compromiso con quien lo usa: el wrapper no puede cambiar de forma incompatible. En un objeto Z, quien hace cumplir ese compromiso es el ATC de compatibilidad de API, con una instantánea (snapshot) de la API tomada antes, no la activación, como muestra Contratos de liberación de API: qué garantizan C0, C1, C2, C3 y C4. La regla de quién puede llamar a quién, y por qué depende del componente de software, está en Componentes de software en ABAP Cloud: quién puede llamar a quién.

El wrapper es el puente entre el código que existe hoy y ABAP Cloud. Usado en el lugar adecuado, concentra el problema en un punto conocido, vigilado por el ATC, y deja que el resto del código siga limpio. Para entender cómo se calcula el nivel de cada objeto, véase Cómo calcula SAP Cloud ALM la deuda Clean Core.