Background Units en ABAP: Qué son y cómo utilizarlas

En proyectos ABAP es muy común encontrarse con procesos que consumen tiempo: generación de documentos, envío de correos, integraciones, cálculos masivos…

Si estos procesos se ejecutaran en la misma transacción, el usuario tendría que esperar hasta que todo termine, lo que afecta la experiencia y el rendimiento del sistema.

Para solucionar esto, SAP ofrece distintas alternativas:

  • Jobs en background (SM36/SM37).
  • Update tasks (CALL FUNCTION ... IN UPDATE TASK).
  • RFC asíncronas (CALL FUNCTION ... STARTING NEW TASK).
  • Y la tecnología más moderna: las Background Units (bgRFC).

¿Qué es una Background Unit?

Una Background Unit o bgRFC, es una forma moderna y más eficiente de ejecutar tareas de forma asíncrona en segundo plano, es decir, permiten que ciertas tareas se ejecuten en paralelo o diferidas, pero sin que el usuario tenga que esperar a que terminen.

La gran ventaja es que:

  • El usuario no tiene que esperar a que termine.
  • El sistema lo gestiona como parte de la misma sesión, no como un job aparte.
  • Puedes hacer que tareas “pesadas” (cálculos, llamadas RFC, procesamiento de datos…) no ralenticen la experiencia del usuario.

Cómo se utiliza una Background Unit en ABAP

La sintaxis básica es muy parecida a la de otras llamadas en background, pero con algunas diferencias importantes.

Ejemplo simplificado:

CALL FUNCTION ‘Z_MI_FUNCION’
IN BACKGROUND UNIT lo_unit
EXPORTING
iv_param = lv_value.

El objeto lo_unit representa la unidad bgRFC que has creado previamente y que contiene la configuración necesaria (destino, cola, etc.).

👉 Aquí no vamos a entrar en detalle sobre cómo instanciar esa unidad paso a paso, porque requiere trabajar con clases como CL_BGRFC_DESTINATION_INBOUND y CL_BGRFC_UNIT_FACTORY.

Si quieres ver un tutorial completo sobre como crear una Background Unit paso a paso puedes leerlo en este otro artículo:
Cómo crear una Background Unit paso a paso en ABAP

Ventajas de usar Background Units

Lo que diferencia a las bgRFC de otras formas antiguas de hacer lo mismo (tRFC, qRFC, update task) es que son más fáciles de usar y más seguras:

  • Mejor experiencia de usuario: los procesos pesados no bloquean la transacción.
  • Flexibilidad: puedes agrupar varias llamadas en una misma unidad y ejecutarlas en orden.
  • Paralelismo: si usas distintos destinos o colas, varias unidades se ejecutan al mismo tiempo.
  • Monitorización: con SBGRFCMON puedes ver qué unidades se ejecutaron, si fallaron, reintentar, etc.
  • Tecnología soportada: SAP recomienda usar bgRFC en lugar de tRFC o qRFC, que ya están en desuso.

Limitaciones y puntos a tener en cuenta

No todo son ventajas. Cuando trabajes con Background Units debes tener presentes estas consideraciones:

  • No se puede usar COMMIT WORK ni ROLLBACK WORK dentro del módulo de función ejecutado en background.
  • Si no haces COMMIT WORK en tu programa principal, la unidad nunca se ejecutará.
  • Si la unidad depende de una actualización (update task) y esta falla, también puede fallar la bgRFC, a menos que la separes con SEPARATE_FROM_UPDATE_TASK.
  • Configuración previa necesaria: debes asegurarte de que las destinations RFC y colas estén bien definidas en SBGRFCCONF y SM59.

Casos habituales de uso

Algunos escenarios donde las bgRFC se utilizan especialmente:

  • Procesar integraciones vía IDocs o servicios OData en background.
  • Generar documentos (Smartforms, Adobe Forms) sin bloquear al usuario.
  • Procesar grandes cantidades de datos (batch input, migraciones).
  • Enviar correos o notificaciones en paralelo al usuario.

Opciones de configuración

Aunque a nivel de código la llamada parece sencilla, SAP ofrece varias posibilidades de configuración:

  • Destinos RFC: definidos en SM59 y vinculados en SBGRFCCONF.
  • Colas: para asegurar un orden de ejecución o permitir paralelismo.
  • Separación de update tasks: mediante métodos de la unidad, como SEPARATE_FROM_UPDATE_TASK.
  • Monitorización y reintentos: con SBGRFCMON puedes ver las unidades pendientes, ejecutadas y con error.

Las Background Units son una de las formas más modernas y recomendadas de ejecutar procesos en segundo plano en ABAP.

Aportan flexibilidad, robustez y mejoran la experiencia del usuario, eliminando los problemas que tenían tecnologías más antiguas como tRFC y qRFC.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *