6.9. - Eventos
6.9.1. - Definición de eventos
Representa el cambio de estado de una instancia de un objeto de negocio (Business Object).
Dado que los Workflows son procesos de negocio, es vital para una aplicación de negocio poder comunicarse con los Workflows. Una aplicación de negocio necesita informar:
1. Cuando comienza un proceso de negocio
2. Cuando termina un proceso de negocio o una actividad dentro del proceso
3. Cuando una actividad o proceso que ha comenzado ya no se necesita
4. Cuando dada una circunstancia ha cambiado el ambiente en el cual el proceso se ejecuta.
Un ejemplo sería la modificación de un material, XXXY, en el maestro de materiales, entonces el Business Object lanzará el evento “Changed”.
Para usar un evento como interfase entre la aplicación y un Workflow, se necesita:
1. Definición del evento
a. Nombre técnico del evento, definido en un tipo de objeto.
b. Se definen como un verbo en pasado (creado, modificado, liberado, etc)
c. Está definido por sus parámetros
i. Nombre
ii. Tipo de objeto
iii. Instancia del objeto
iv. Creador del evento
d. Se pueden definir parámetros adicionales
2. Creador del evento
a. Persona que ha creado el evento
3. Receptor del evento
a. Todo aquello que reaccionará ante el evento.
b. Normalmente, Workflow o tareas de espera
4. Linkage del evento
a. Relación entre el evento y su receptor
b. Se pueden especificar reglas que gobiernen la relación
i. Determinan cuando y como el receptor recibirá el evento.
6.9.2. - Creación de eventos
Los eventos se crean en el Business Object Repository, correspondiente a la transacción SW01.
Se debe especificar el tipo de objeto para el cual se quiere crear el evento. Al definir eventos, nunca se debe codificar nada. Los datos que deben introducirse son el nombre del evento y los parámetros del evento.
Se puede ver en el Business Object BUS2105, solicitud de pedido, el evento released.
Se puede ver su definición.
Un parámetro que posee asociado, que es el código de liberación.
6.9.3. - 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. En muchos de los programas SAP, ya están definidos los programas que lanzan los eventos y solo es necesario realizar el event linkage y determinadas configuraciones de customizing.
Puede que para un proceso de negocio particular, se tenga que crear un evento nuevo. Se deberá definir cómo se lanzará el evento a partir de la aplicación.
En caso de lanzarse el evento desde un programa propio, se podrá programar el lanzamiento del evento utilizando las funciones que provee SAP. Hay diferentes posibilidades:
1. A través de documentos de cambio (Change documents)
2. A través de sistema de gestión de status
3. A través de control de mensajes
4. Utilizando el sistema de información logística (LIS)
5. A través de los datos maestros de HR
6. A través de Business Transaction Events (Solo para Finanzas)
7. A través de customizing especifico de cada aplicación
6.9.4. - Lanzando eventos con Changed Documents
Definen la operación que provoca el cambio, modificación, creación o borrado, y registran los datos del objeto de negocio que ha cambiado en forma de tablas con el valor antiguo y el nuevo. Dejan registro de las modificaciones hechas.
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, se deberá controlar que el cambio será escrito como un documento de cambio, controlando el customizing de los campos o bien haciendo pruebas.
Para crear un evento de este tipo, se utiliza la transacción SWEC.
Se debe indicar el código de documento de cambio, el business object, el evento y bajo qué actividad se lanzará, creación, modificación o borrado.
Se podrá restringir aún más que circunstancia es la que se quiere que se lance el evento, especificando campos de la tabla de campos relevantes, su valor antiguo y su valor actual.
6.9.5. - Lanzando eventos por cambio de status
Si una aplicación de negocio utiliza el sistema de gestión de status, se podrá configurar el lanzamiento de eventos a partir de un cambio de status del sistema.
El sistema estándar viene por defecto con status predefinidos llamados status de sistema, se pueden 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, se utilizará la transacción BSVW. Primero, se deberá seleccionar con qué tipo de status trabajar, de sistema o de usuario.
Seleccionar el tipo de objeto y su evento. Activar posteriormente.
Tambien se pueden lanzar eventos mediante control de mensajes. Si una aplicación de negocio utiliza el control de mensajes para intercambiar información entre los distintos involucrados en el proceso de negocio, se puede configurar un mensaje para lanzar eventos. Cuando el sistema de control de mensajes se ejecute, cualquier mensaje configurado será lanzado. Una orden de ventas o un pedido de compras, utilizan mensajes para imprimir la orden.
Se puede utilizar el mismo sistema para lanzar eventos. La configuración del tipo de mensaje, se realiza a través de la transacción NACE.
6.9.6. - Unir el evento al Workflow
Para establecer el inicio automático de un workflow a partir de un evento, se debe indicar en la configuración del Workflow, en el Workflow Builder, trx SWDD.
Una vez posicionados en el Workflow, que se desea iniciar con un evento, se debe pasar a la cabecera del Workflow.
En la cabecera se indicará el tipo de objeto y evento lanzarán el Workflow. Al crear esta relación, automáticamente aparecerá un binding que pasará datos desde el contenedor del evento al del Workflow. Se podrá modificar el binding para añadir los parámetros que se necesiten.
Se deberá activar el binding entre el Workflow y el evento. Esta activación se denomina event linkage.
La acción de activar el binding entre el Workflow y el evento genera una orden de transporte de customizing.
Otra forma de activar el linkage entre el evento y el Workflow es a través de la transacción SWETYPV.
6.9.7. - Condiciones de inicio
SAP provee una manera fácil de limitar el inicio de un Workflow al dispararse un evento a través de condiciones de inicio. Para configurar condiciones de inicio, se ejecuta la transacción SWB_COND.
Para crear la condición, se selecciona el tipo de objeto, en el ejemplo es la solicitud de pedido. Aparecerán todos los eventos acoplados con Workflow y se selecciona uno.
Utilizando las variables del contenedor del evento, se crean las condiciones lógicas que se deseen para que se cumpla o no el lanzamiento del Workflow.
Finalmente, se pueden verificar los eventos, usando la transacción de simulación de eventos SWU0 y la transacción SWUE para crearlos.
6.9.8. - Desarrollos de programas lanza eventos
El programa que desee disparar un evento, deberá utilizar el módulo de funciones SWE_EVENT_CREATE. La estructura lógica del programa debería ser la siguiente:
1. Llenar el contenedor de eventos con los parámetros necesarios
2. Componer la clave del objeto que debe instanciarse para llamar al evento.
3. Llamar a la función SWE_EVENT_CREATE
4. Controlar las excepciones
5. Disparar el evento con COMMIT_WORK explícito.