Workflow en SAP: clásico y flexible
Cómo SAP reparte el trabajo entre personas: tareas, agentes y eventos. El workflow clásico con el Workflow Builder, el workflow flexible de S/4HANA, cómo lanzarlo desde ABAP y cómo administrarlo.
- Apartados
- 9
- Revisado
- Noviembre de 2026
- Fuentes
- 4 enlaces
Qué es el workflow
Un workflow hace llegar cada trabajo, en el orden correcto, a la persona que tiene que hacerlo y con la información que necesita. El ejemplo típico es una aprobación: se crea un pedido de compra, el sistema se lo envía al responsable, este lo aprueba o lo rechaza y el proceso sigue por un camino u otro.
El trabajo se divide en tareas. Cada vez que el workflow llega a una tarea crea un work item (elemento de trabajo) y lo envía a la bandeja de entrada de los agentes que deben hacerlo. Los workflows suelen arrancar con un evento, por ejemplo «pedido creado» o «factura bloqueada».
| Tipo | Dónde | Quién lo configura | Herramienta |
|---|---|---|---|
| Workflow clásico (SAP Business Workflow) | ECC y S/4HANA on-premise | El equipo técnico | Workflow Builder (SWDD) |
| Workflow flexible | S/4HANA (on-premise y cloud) | El experto del proceso, sin programar | App Fiori Manage Workflows (F2190) |
| SAP Build Process Automation | SAP BTP | El experto del proceso o el equipo técnico | Editor visual en la nube |
El workflow flexible usa por debajo el mismo motor que el clásico: los work items son los mismos y se ven igual en la SWI1. Lo que cambia es quién y cómo define el proceso.
Los conceptos básicos
| Concepto | Qué es |
|---|---|
| Plantilla de workflow (WS) | La definición del proceso: sus pasos, condiciones y bucles. Se crea en el Workflow Builder (SWDD) |
| Tarea estándar (TS) | Un trabajo concreto, que normalmente ejecuta un método de un objeto (por ejemplo, «aprobar pedido»). Se mantiene en la PFTC |
| Work item | Cada ejecución de una tarea. Es lo que el usuario ve en su bandeja de entrada |
| Objeto de negocio | El objeto sobre el que trabaja el workflow: un tipo del BOR (SWO1), como BUS2012 para el pedido de compra, o una clase ABAP con la interfaz IF_WORKFLOW |
| Evento | Aviso de que algo ha pasado en un objeto («CREATED», «RELEASED»…). Puede arrancar un workflow o terminar una tarea que lo espera |
| Contenedor | Las variables del workflow y de cada tarea |
| Binding | Cómo pasan los datos de un contenedor a otro: del evento al workflow, del workflow a la tarea y de vuelta |
| Agentes | Los usuarios que reciben el work item. Hay agentes posibles (pueden hacerlo), responsables (se elige entre ellos) y excluidos |
| Determinación de agentes | La regla que decide quién recibe el work item: un usuario, un puesto de la estructura organizativa, una regla con responsabilidades (OOCU_RESP) o una función |
Preparar el sistema
Antes de usar workflows en un mandante hay que hacer su configuración básica. La transacción SWU3 (personalización automática del workflow) la revisa y la hace casi toda sola: muestra cada punto en verde o en rojo.
- Ejecuta la SWU3 y pulsa «Realizar personalización automática». Lo hace un administrador con permisos.
- Comprueba el destino RFC WORKFLOW_LOCAL_<mandante> en la SM59: es la conexión por la que el sistema ejecuta los pasos del workflow.
- Comprueba que existe el usuario de sistema WF-BATCH, con el que se ejecutan los pasos en fondo.
- Prueba que todo funciona con el workflow de ejemplo que ofrece la propia SWU3.
En S/4HANA, el workflow flexible necesita además activar los escenarios de cada área (compras, facturas de proveedor…) y configurar la app My Inbox (F0862), donde los usuarios reciben sus tareas.
Un workflow clásico con el Workflow Builder
El Workflow Builder (SWDD) dibuja el proceso como un diagrama de pasos. Estos son los más usados:
| Paso | Para qué sirve |
|---|---|
| Actividad | Ejecuta una tarea: un método del objeto, en diálogo (lo hace una persona) o en fondo |
| Decisión de usuario | Pregunta al agente y sigue por la rama que elige: «Aprobar» o «Rechazar» |
| Condición y selección múltiple | Elige el camino según los datos (por ejemplo, el importe del pedido) |
| Bucle | Repite pasos hasta que se cumple una condición |
| Envío de correo | Manda un aviso por correo |
| Esperar evento | Detiene el workflow hasta que llega un evento |
| Bifurcación | Varias ramas en paralelo; el workflow sigue cuando terminan las necesarias |
- En la SWO1 elige el objeto de negocio (o crea una subclase Z si necesitas un método o un evento propio). En código nuevo puedes usar una clase ABAP con la interfaz IF_WORKFLOW.
- En la PFTC crea las tareas estándar: el método que ejecutan, sus agentes posibles y sus eventos de fin.
- En la SWDD crea la plantilla: el contenedor, los pasos y la determinación de agentes de cada uno.
- En los datos básicos de la plantilla indica el evento de inicio y su binding, y activa el enlace (también se ve en la SWE2).
- Activa la plantilla y pruébala con la SWUS (arrancar un workflow) o lanzando el evento con la SWUE.
Cuando cambies un workflow que ya se usa, crea una versión nueva: los workflows en curso siguen con la versión con la que empezaron.
Lanzar un workflow desde ABAP
Lo recomendable es lanzar un evento y que el enlace de eventos arranque el workflow: así el programa no depende del workflow y se puede activar o desactivar sin tocar el código. Para un objeto del BOR se usa la función SAP_WAPI_CREATE_EVENT:
DATA lt_contenedor TYPE STANDARD TABLE OF swr_cont WITH EMPTY KEY.
DATA lv_retorno TYPE sy-subrc.
" Datos que necesita el workflow (opcional)
lt_contenedor = VALUE #( ( element = 'RELEASECODE' value = lv_codigo_liberacion ) ).
CALL FUNCTION 'SAP_WAPI_CREATE_EVENT'
EXPORTING
object_type = 'BUS2012' " pedido de compra
object_key = lv_ebeln
event = 'RELEASED'
IMPORTING
return_code = lv_retorno
TABLES
input_container = lt_contenedor.
IF lv_retorno <> 0.
MESSAGE 'No se ha podido lanzar el evento' TYPE 'E'.
ENDIF.Si el objeto es una clase ABAP con la interfaz IF_WORKFLOW, el evento se declara en la clase y se lanza con CL_SWF_EVT_EVENT=>RAISE, indicando que el tipo de objeto es una clase:
TRY.
cl_swf_evt_event=>raise(
im_objcateg = cl_swf_evt_event=>mc_objcateg_cl " clase ABAP (BOR: mc_objcateg_bor)
im_objtype = 'ZCL_WF_SOLICITUD'
im_event = 'APROBADA'
im_objkey = CONV #( lv_id_solicitud ) ).
COMMIT WORK. " el evento se lanza al grabar
CATCH cx_swf_evt_invalid_objtype cx_swf_evt_invalid_event INTO DATA(lx_error).
MESSAGE lx_error TYPE 'E'.
ENDTRY.| Función | Para qué sirve |
|---|---|
SAP_WAPI_START_WORKFLOW | Arranca una plantilla directamente, sin evento |
SAP_WAPI_WORKITEM_COMPLETE | Termina un work item desde un programa |
SAP_WAPI_READ_CONTAINER | Lee el contenedor de un work item |
SAP_WAPI_WORKITEMS_TO_OBJECT | Lista los workflows y work items de un objeto (por ejemplo, de un pedido) |
Usa las funciones SAP_WAPI_*, que son la interfaz pensada para los clientes, y no las funciones ni las tablas internas del workflow. Sustituyen a funciones antiguas como SWE_EVENT_CREATE.
El workflow flexible de S/4HANA
En S/4HANA, SAP cambió el planteamiento: el workflow ya no lo define el equipo técnico, sino el experto del proceso desde una app Fiori. En lugar de un gran workflow con muchas ramas, se crean varios workflows pequeños, cada uno con su condición de inicio.
| Pieza | Qué es |
|---|---|
| Escenario | El conjunto de piezas que se pueden usar: tareas, reglas de agentes y condiciones. Los entrega SAP para cada proceso; en on-premise también puedes crear los tuyos (SWDD_SCENARIO) |
| Manage Workflows (F2190) | La app donde se crean los workflows de un escenario: condición de inicio, pasos, agentes y orden. Cada área tiene su propia versión de la app (pedidos de compra, facturas de proveedor…) |
| My Inbox (F0862) | La bandeja de entrada de Fiori, donde los usuarios aprueban o rechazan |
| Teams and Responsibilities (F2412) | Equipos y responsables por contexto de negocio, para decidir quién recibe cada tarea |
| Plantillas de workflow flexible (F2787) | Trozos de workflow que se pueden reutilizar |
- Activa el escenario del proceso que quieres automatizar (lo indica la documentación de cada área).
- Abre la app Manage Workflows del área y crea un workflow nuevo.
- Define la condición de inicio: por ejemplo, pedidos de más de 10.000 euros.
- Añade los pasos y quién los aprueba en cada uno.
- Ordena los workflows por prioridad: se usa el primero cuya condición se cumple.
- Actívalo y prueba con un documento real.
En S/4HANA Cloud se pueden configurar workflows con los escenarios de SAP, pero solo en on-premise se pueden programar escenarios nuevos.
Supervisar y administrar
| Transacción | Para qué sirve |
|---|---|
| SWI1 | Buscar work items y workflows: estado, errores, historial |
| SWIA | Tratar work items como administrador: reenviarlos, terminarlos o borrarlos lógicamente |
| SWPR | Reiniciar workflows que han terminado con error |
| SWPC | Continuar workflows después de una caída del sistema |
| SWEL / SWELS | Ver la traza de eventos y activarla o desactivarla |
| SWE2 | Enlaces entre eventos y workflows (activos o no) |
| SWEQADM | Administrar la cola de eventos |
| SBWP | Business Workplace: la bandeja de entrada clásica del usuario |
| SWU_OBUF | Actualizar el búfer de la organización después de cambiar agentes |
| SWI2_FREQ | Análisis de work items por tarea |
| SWNADMIN | Notificaciones por correo de los work items pendientes |
No uses la transacción SWWL (borrar work items en masa) en producción: los borra de verdad, sin vuelta atrás.
Problemas frecuentes
| Problema | Qué revisar |
|---|---|
| El workflow no arranca | Activa la traza de eventos (SWELS), repite la acción y mírala en la SWEL: ¿llega el evento? ¿El enlace está activo en la SWE2? ¿La función de comprobación lo ha descartado? |
| El work item no le llega a nadie | Revisa los agentes posibles de la tarea (PFTC) y la regla de agentes. Después de cambiar la organización, ejecuta la SWU_OBUF |
| Le llega a todo el mundo | La tarea es «tarea general» y la regla no ha encontrado agente: entonces cualquiera puede ejecutarla |
| Un paso en fondo falla | Mira el error en la SWI1. Los pasos en fondo se ejecutan con el usuario WF-BATCH por RFC: revisa también la SM58 |
| Después de transportar, se usa la versión antigua | La versión nueva no está activa en el sistema destino. Revisa el transporte y actívala |
Buenas prácticas
- Lanza eventos en lugar de arrancar el workflow directamente: el programa y el workflow quedan desacoplados.
- Piensa en todos los eventos que deben terminar el proceso: aprobado, rechazado, modificado, borrado…
- Incluye los enlaces de eventos (SWE2) en una orden de transporte.
- Define plazos con el calendario de fábrica, para que no cuenten los festivos.
- En S/4HANA, para aprobaciones de documentos estándar, mira primero si hay un escenario de workflow flexible antes de programar uno clásico.