✒️ABAP / Los Eventos Por Javier Angel Barcelo
ABAP Los Eventos

La definición de Eventos:
Dado que los Workflows son procesos de negocio, es vital para una aplicación de negocio poder comunicase con los Worflows.
Por ejemplo una aplicación de negocio necesita informar:
- Cuando comienza un proceso de negocio.
- Cuando termina un proceso de negocio o una actividad dentro del proceso.
- Cuando una actividad o proceso que ha comenzado ya no se necesita.
- Cuando dada una circunstancia ha cambiado el ambiente en el cual el proceso se ejecuta.
Para poder comunicarse la aplicación de negocio utiliza eventos.
Evento en Workflow : representa el cambio el cambia de estado de una instancia de un objeto de negocio (Business Object).
Para usar un evento como interfase entre la aplicación y un Workflow se necesita lo siguiente:
- Definición del evento: Es el nombre técnico del evento definido en un tipo de objeto. Se definen como un verbo en pasado (Creado, modificado, liberar, etc.).
- Además el evento está definido por sus parámetros. Los parámetros por defecto de un evento son: su nombre, el tipo de objeto, la instancia del objeto y el creador del evento. No obstante se puede definir parámetros adicionales que deben acompañar el evento.
- Creador del evento: Es el programa, workflow, persona que a creado el evento.
- Receptor del Evento: Es el termino genérico que se usa para denominar a todo aquello que reaccionará ante el evento. Normalmente son Workflow o tareas de espera.
- Linkage del Evento: El linkage especifica la relación entre el evento y su receptor. Se pueden a su vez especificar las reglas que gobiernan esta relación. Las reglas determinan cuando y como el receptor recibirá el evento.
La creación de Eventos:
Los Eventos se crean en el Business Object Repository correspondiente a la transacción SW01.
Debemos especificar el tipo de objeto para el cual queremos crear el evento. Al definir eventos nunca debemos codificar nada. Lops datos que deben ingresar son:
- El nombre del evento
- Los parámetros del evento
Podemos ver en el business object BUS2105 (solicitud de pedido) el evento "released". Y veremos su definición, y un parámetro que posee asociado, que es el código de liberación.
Lanzando eventos desde aplicaciones SAP.
Antes que un evento sea lanzado por una aplicación, la creación del evento debe programarse en el programa de la aplicación.
Afortunadamente en muchas de los programas estándar de SAP, ya están definido los programas que lanzan los eventos y solo es necesario realizar el event linkage y determinadas configuraciones de customizing.
No obstante puede que para un proceso de negocio particular tengamos que crear un evento nuevo. En este caso debemos definir como se lanzará el evento a partir de aplicación.
En el caso que el evento deba lanzarse desde un programa propio (de cliente) podemos programar el lanzamiento del evento muy fácilmente utilizando la función que SAP provee para tal caso.
En el caso que debamos lanzar un nuevo evento desde un programa estándar de SAP tenemos la siguiente posibilidades:
- A través de documentos de cambio (Change documentos).
- A través del sistema de gestión de status.
- A través de control de mensajes.
- Utilizando el sistema de información logística (LIS).
- A través de los datos maestros de HR.
- A través de Business Transaction Events (Solo para finanzas).
- A través de customizing especifico cada aplicación.
Los tres primeros casos son los mas usados, el resto son específicos para determinados módulos (HR - FI) y para cosas aislados.
Lanzando eventos con Changed Documents:
Muchas aplicaciones de negocio en SAP utilizan documentos de cambio para dejar registro de la modificaciones hechas (generalmente transacciones de mantenimiento de datos maetros).
Los documentos de cambio define la operación que provoca el cambio (modificación, creación o borrado) y registran los datos del objeto de negocio que a cambiado en forma de tablas con el valor antiguo y el nuevo.
Los documentos de cambio solo se escriben cuando un campo designado como "relevante para change document" cambia.
Antes de definir un evento basado en un documento de cambio deberemos controlar que el cambio será escrito con un documento de cambio, controlando el customizing de los campos o bien haciendo pruebas.
Para crear un evento de este tipo utilizamos la transacción SWEC.
Debemos indicar:
- El código de documento de cambio.
- El business object.
- El evento.
- Bajo que actividad se lanzará ( Creación, Modificación, Borrado).
Luego podremos registrar aun más bajo que circunstancias queremos que se lance el evento, especificando campos de la tabla de campo relevantes, su valor antiguo y su valor actual.
Lanzando eventos por Cambio de Status.
Si su aplicación de negoció utiliza el sistema de gestión de status, podremos configurar el lanzamiento de eventos a partir de un cambio de status del sistema.
El sistema estándar viene por defecto status predefinidos " status de sitema", no obstante y por cutomizing puede definir nuevos status (de cliente).
Los status de sistema siempre son fijados por el sistema automáticamente, mientras que los de cliente tienen que ser fijados por el usuario.
Para crear un evento de este tipo utilizamos la transacción BSVW. Primero debemos seleccionar con que tipo de status trabajar, de sistema o de usuario. Luego debemos seleccionar el tipo de objeto y su evento. Finalmente lo activamos.
Unir el evento al workflow.
para establecer el inicio automático de un workflow a partir de un evento debemos indicarlo en la configuración del workflow en el workflow builder (transacción SWDD).
una ves posicionado en el workflow que deseamos iniciar con un evento, debemos pasar a la cabecera del workflow, indicamos que tipo de objeto y evento lanzarán el workflow.
Al crear la relación automáticamente aparecerá un binding que pasará datos desde el contenido del evento al del workflow. Podemos modificar el binding para agregar los parámetros que deseamos. Finalmente debemos "activar" el binding entre el workflow y el evento.
Esta activación en la jerga de workflow se denomina "event linkage".
(La acción de activar el binding entre el workflow y el evento genera una orden de tranporte de customizing).
Otra forma de activar el linkage entre el evento y el workflow es a través de transacción SWETYPV.
Las condiciones de inicio.
SAP provee manera fácil de limitar el inicio de un workflow al dispararse un evento y esto es a través de condiciones de inicio.
Para configurar condiciones de inicio ejecutamos la transacción SWB_COND.
Para crear condición seleccionamos el tipo de objeto (en el ejemplo es la solicitud de pedido), aparecerán todos los eventos acoplados con workflow y seleccionamos uno. Utilizamos la variable del contenedor del evento, creamos las condiciones lógicas que deseemos para que se cumpla o no el lanzamiento del workflow. Finalmente podremos verificar los eventos. Para ello, podemos usar la transacción para simular eventos SWU0. Y la transacción SWUE para crear eventos.
Los desarrollos de programas lanza eventos.
El programa que dese disparar un evento deberá utilizar el módulo de funciones SWE_EVENT_CREATE.
La estructura lógica del programa deberá ser la siguiente:
- Llenar el contenedor de eventos con los parámetros necesarios.
- Comprobar la clave del objeto que debe instanciarse para llamar al evento.
- Llamar la función SWE_EVENT_CREATE.
- Controlar las excepciones.
- Disparar el evento con COMMIT_WORK explicito.
 
 
 
Sobre el autor
Publicación académica de Javier Miguel Angel Barcelo, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Avanzado.
Javier Miguel Angel Barcelo
Profesión: Militar - Argentina - Legajo: DQ34X
✒️Autor de: 107 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: PartTime
























