✒️ABAP Los Eventos
ABAP Los Eventos
1. DEFINICIÓN DE EVENTOS
Es vital para una aplicación de negocio comunicarse con los Workflows. Una aplicación de negocio necesita informar:
- Cuando empieza un proceso de negocio
- Cuando termina un proceso de negocio o una actividad dentro del proceso
- Cuando una actividad o un proceso que ha comenzado ya no se necesita
- Cuando ha cambiado el ambiente en el cual el proceso se ejecuta
Para poder comunicarse, la aplicación de negocio utiliza EVENTOS
Un Evento en Workflow representa el cambio de estado de una instancia de un objeto de negocio (Business Object) . P.ej. Si un usuario modifica el material XYZ, el Business Object XYZ lanzará el evento "Changed".
Para usar un evento como interfase entre aplicación y workflow, se necesita:
- Definición del Evento: es el nombre técnico del evento definido en un tipo de objeto (creado, modificado, liberado,...) El evento está definido por sus parámetros. Por defecto, los parámetros de un evento son: su nombre, tipo de objeto, la instancia y el creador del evento.
- Creador del Evento: es el programa workflow, persona que ha creado el evento
- Receptor del Evento: se usa para denominar a todo aquello que reaccionará ante el evento. Normalmente son workflows o tareas de espera.
- Linkage del Evento: especifica la relación entre el evento y su receptor. Se pueden especificar las reglas (cuándo y cómo el receptor recibirá el evento) que gobiernan esta relación
2. CREACIÓN DE EVENTOS
Los eventos se crean en el Business Object Repository --> tr. SWO1
Debemos especificar el tipo de objeto para el que queremos crear el evento. No debemos codificar nada al definir eventos. Deben ingresarse los datos siguientes:
- El nombre del evento
- Los parámetros del evento
P.ej. Business Object BUS2105 (Solicitud de Pedido), evento "Released" -->Parámetro FRGCO (Código de liberación) y Denominación: Liberar solic.pedido
3. LANZANDO EVENTOS DESDE APLICACIONES SAP
Antes de que una aplicación lance un Evento, la creación del evento debe programarse en el programa de la aplicación. En muchos programas estándar SAP ya están programados los eventos y sólo es necesario realizar el Event Linkage y cambios en el Customizing.
Puede que para ciertos procesos de negocio tengamos que crear un evento nuevo. En ese caso, deberemos definir cómo se lanzará el evento a partir de la aplicación. SAP provee funciones para ese caso (Progrmas de cliente Z). Cuando debemos lanzar un nuevo evento desde un programa estándar de SAP tenemos las siguientes posibilidades (las 3 primeras opciones son las más habituales):
- A través de documentos de cambio (Change docs)
- A través del sistema de Gestión de Status
- A través de control de mensajes
- Usando el sistema de Información Logística (LIS)
- A través de los datos maestros de HR
- A través de Business Transaction Events (sólo para FI)
- A través de Customizing específico de cada aplicación
4. LANZANDO EVENTOS CON CHANGED DOCUMENTS
Muchas aplicaciones SAP usan documentos de cambio para dejar registro de los cambios realizados (transacciones de mantenimiento de datos maestros)
Los docs de cambio definen la operación (modif, creación, borrado) y registran los datos en forma de tablas con el valor antiguo y el nuevo. Antes de definir un evento basado en un doc. de cambio, debemos controlar que el cambio será escrito como documento de cambio mediante el customizing de los campos (o haciendo pruebas)
Para crear un evento de este tipo (Change doc), usaremos la tr. SWEC
En la tr. SWEC deberemos indicar:
- El código del documento de cambio
- El Business Object
- El Evento
- Bajo que actividad se lanzará: Creación, Modificación o Borrado
5. LANZANDO EVENTOS POR CAMBIO DE STATUS
Si una aplicación de negocio usa el Sistema de Gestión de Status, podremos configurar el lanzamiento de eventos a partir de cambio de status del sistema. Se pueden definir nuevos status (de cliente) además de los proporcionados por SAP.
Para crear un evento de este tipo usaremos la tr. BSVW. Primero, debemos seleccionar el tipo de status, de sistema o de usuario. Después, debemos seleccionar el tipo de objeto y su evento. Finalmente, lo activamos.
Tb podemos lanzar eventos mediante control de mensajes si la aplicación de negocios utiliza este método para el intercambio de info. Podemos configurar un mensaje para lanzar un evento. P.ej. Al crear un pedido de compras o una orden de ventas se usan mensajes para imprimir la orden. Podemos usar el mismo sistema para lanzar eventos. Configuración del tipo de mensajes se realiza a través de la tr. NACE
6. UNIR AL EVENTO WORKFLOW
Para establecer el inicio automático de un workflow a partir de un evento debemos indicarlo en la configuración del WF en el Workflow Builder (tr. SWDD). Debemos ir a la cabecera (icono Sombrero) del Workflow e indicar allí (Solapa Eventos inic.) el tipo de objeto y el evento que lanzarán el Workflow.
Al crear esta relación aparecerá un binding que pasará datos del contenedor del evento al contenedor del workflow. Podemos agregar parámetros al binding. Finalmente, activaremos el binding entre WF y Evento. A esta activación se la llama "Event Linkage" y genera una OT de Customizing. Otra forma de activar el linkage es con la tr. SWETYPV.
7. CONDICIONES DE INICIO
SAP provee una manera fácil de limitar el inicio del WF al dispararse un evento mediante las Condiciones de Inicio. Para configurar las condic. de inicio, usamos la tr. SWB_COND
Seleccionamos el tipo de objeto (p.ej. la solicitud de pedido). Aparecen todos los eventos acoplados con el WF y seleccionamos uno. Usando las variables del contenedor del evento, creamos las condiciones lógicas que deseemos para que se cumpla, o no, el lanzamiento del WF. Podemos verificar los eventos con la tr. SWU0 (simulación de eventos) y la tr. SWUE para crear eventos.
8. DESARROLLOS DE PROGRAMAS LANZA-EVENTOS
El programa que desee disparar un evento deberá usar el módulo de funciones SWE_EVENT_CREATE
La estructura lógica del programa debería ser:
- Llenar el contenedor de eventos con los parámetros necesarios
- Componer la clave del objeto que debe instanciarse para llamar al evento
- Llamar a la función SWE_EVENT_CREATE
- Controlar las excepciones
- Disparar el evento con COMMIT_WORK explícitamente.
 
 
 
Sobre el autor
Publicación académica de Franco Alfieri Maringota Alvarado, en su ámbito de estudios para la Carrera Consultor ABAP.
Franco Alfieri Maringota Alvarado
Peru - Legajo: GF44M
✒️Autor de: 288 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP FI Nivel Inicial
- Carrera Consultor en SAP BI / BW BO Nivel Avanzado
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP BI / BW BO Nivel Inicial