Ir al contenido
Programación ABAP
Donar Tienda

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».

TipoDóndeQuién lo configuraHerramienta
Workflow clásico (SAP Business Workflow)ECC y S/4HANA on-premiseEl equipo técnicoWorkflow Builder (SWDD)
Workflow flexibleS/4HANA (on-premise y cloud)El experto del proceso, sin programarApp Fiori Manage Workflows (F2190)
SAP Build Process AutomationSAP BTPEl experto del proceso o el equipo técnicoEditor 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

ConceptoQué 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 itemCada ejecución de una tarea. Es lo que el usuario ve en su bandeja de entrada
Objeto de negocioEl 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
EventoAviso de que algo ha pasado en un objeto («CREATED», «RELEASED»…). Puede arrancar un workflow o terminar una tarea que lo espera
ContenedorLas variables del workflow y de cada tarea
BindingCómo pasan los datos de un contenedor a otro: del evento al workflow, del workflow a la tarea y de vuelta
AgentesLos usuarios que reciben el work item. Hay agentes posibles (pueden hacerlo), responsables (se elige entre ellos) y excluidos
Determinación de agentesLa 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.

  1. Ejecuta la SWU3 y pulsa «Realizar personalización automática». Lo hace un administrador con permisos.
  2. Comprueba el destino RFC WORKFLOW_LOCAL_<mandante> en la SM59: es la conexión por la que el sistema ejecuta los pasos del workflow.
  3. Comprueba que existe el usuario de sistema WF-BATCH, con el que se ejecutan los pasos en fondo.
  4. 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:

PasoPara qué sirve
ActividadEjecuta una tarea: un método del objeto, en diálogo (lo hace una persona) o en fondo
Decisión de usuarioPregunta al agente y sigue por la rama que elige: «Aprobar» o «Rechazar»
Condición y selección múltipleElige el camino según los datos (por ejemplo, el importe del pedido)
BucleRepite pasos hasta que se cumple una condición
Envío de correoManda un aviso por correo
Esperar eventoDetiene el workflow hasta que llega un evento
BifurcaciónVarias ramas en paralelo; el workflow sigue cuando terminan las necesarias
  1. 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.
  2. En la PFTC crea las tareas estándar: el método que ejecutan, sus agentes posibles y sus eventos de fin.
  3. En la SWDD crea la plantilla: el contenedor, los pasos y la determinación de agentes de cada uno.
  4. 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).
  5. 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:

Evento de un objeto del BOR
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:

Evento de una clase ABAP
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ónPara qué sirve
SAP_WAPI_START_WORKFLOWArranca una plantilla directamente, sin evento
SAP_WAPI_WORKITEM_COMPLETETermina un work item desde un programa
SAP_WAPI_READ_CONTAINERLee el contenedor de un work item
SAP_WAPI_WORKITEMS_TO_OBJECTLista 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.

PiezaQué es
EscenarioEl 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
  1. Activa el escenario del proceso que quieres automatizar (lo indica la documentación de cada área).
  2. Abre la app Manage Workflows del área y crea un workflow nuevo.
  3. Define la condición de inicio: por ejemplo, pedidos de más de 10.000 euros.
  4. Añade los pasos y quién los aprueba en cada uno.
  5. Ordena los workflows por prioridad: se usa el primero cuya condición se cumple.
  6. 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ónPara qué sirve
SWI1Buscar work items y workflows: estado, errores, historial
SWIATratar work items como administrador: reenviarlos, terminarlos o borrarlos lógicamente
SWPRReiniciar workflows que han terminado con error
SWPCContinuar workflows después de una caída del sistema
SWEL / SWELSVer la traza de eventos y activarla o desactivarla
SWE2Enlaces entre eventos y workflows (activos o no)
SWEQADMAdministrar la cola de eventos
SBWPBusiness Workplace: la bandeja de entrada clásica del usuario
SWU_OBUFActualizar el búfer de la organización después de cambiar agentes
SWI2_FREQAnálisis de work items por tarea
SWNADMINNotificaciones 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

ProblemaQué revisar
El workflow no arrancaActiva 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 nadieRevisa 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 mundoLa tarea es «tarea general» y la regla no ha encontrado agente: entonces cualquiera puede ejecutarla
Un paso en fondo fallaMira 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 antiguaLa 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.

Fuentes