✒️ABAP Los Eventos
ABAP Los Eventos
Unidad 6: Los WorkFlows
Lección 9: Los eventos
Definición de Eventos:
Como los WF son procesos de negocio, es vital para una aplicación de negocio poder comunicarse con los WF.
Por ej, una aplicación de negocio necesita informar:
- Cuando comienza un proceso de negocio.
- Cuando termina un proceso de negocio o 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.
Un evento en Workflow representa el cambio de estado de una instancia de un objeto de negocio.
Para usar un evento como interfase entre la aplicación y un WF necesitamos:
- Definición del evento: nombre técnico del evento definido en un tipo de objeto. Se definen como un verbo en pasado (creado, modificado, liberado, etc).
- Creador del evento: es el programa, WF, persona que ha creado el evento.
- Receptor del evento: es el término genérico que se usa para dominar a todo aquello que reaccionará ante el evento. Normalmente son WF o tareas de espera.
- Linkage del evento: 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.
Creación de eventos:
Los eventos se crean en el Business Object Repository (trans. SWO1).
Hay que especificar el tipo de objeto para el cual queremos crear el evento. Al definir eventos nunca hay que codificar nada.
Los datos a ingresar son el nombre del evento y 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. Por suerte en muchos programas estándar ya están definidos los programas que lanzan los eventos y solo es necesario hacer un event linkage y determinadas configuraciones del customizing.
Pero puede que para los procesos de negocio debamos crear un nuevo evento. En este caso debemos definir como se lanzará el evento a partir de la aplicación.
En el caso que el evento deba lanzarse desde un programa propio (de cliente) podremos programar el lanzamiento del evento muy fácilmente usando las funciones que SAP provee.
En el caso que debamos lanzar un nuevo evento desde un programa estándar tenemos las sig. posibilidades:
- A través de docs. de cambio (changed documents).
- A través del sist. de gestión de status.
- A través de control de msjs.
- Usando el sist. de info logística (LIS).
- A través de de los datos maestros de HR.
- A través de Business Transaction Events (Solo para finanzas).
- A través de customizing específico de cada aplicación.
Los tres 1ros casos son los más usados, el resto son especificos para HR y FI y para casos aislados.
Lanzando eventos con Changed Documents:
Muchas aplicaciones de negocio en SAP usan docs. de cambio para dejar registro de las modificaciones hechas.
Los documentos de cambio definen la operación que provoca el cambio y registran los datos del objeto de negocio que ha cambiado en forma de tablas con el valor antiguo y el nuevo.
Los docs. de cambio SOLO se escriben cuando un campo designado como "relevante para change document" cambia.
Antes de definir un evento basado en un doc. de cambio, debemos controlar que el cambio será escrito como un doc. de cambio, controlando el customizing de los campos o bien haciendo pruebas.
Para crear un evento de este tipo usamos la trans SWEC.
En entradas nuevas siempre debemos indicar:
- Cód. de doc. de cambio.
- Business object.
- Evento.
- Bajo que actividad se lanza (creación, modificación o borrado).
Lanzando eventos por Cambio de Status:
Si una aplicación de negocio usa el sist. de gestión de status, podremos configurar el lanzamiento de eventos a partir de un cambio de status del sist.
El sist. estándar viene por defecto con status predefinidos, llamados "status del sistema", no obstante y por customizing pueden definirse nuevos status (de cliente).
Los status del sist. siempre son fijados por el sist. automáticamente, mientras que los de clientes los fija el usuario.
Para crear un evento de este tipo, usamos la trans BSVW.
1ro hay que seleccionar con que tipo de status trabajar, de sist. o de usuario.
Luego debemos seleccionar el tipo de objeto y su evento. Finalmente y activamos:
Unir el evento al WorkFlow:
Para establecer el inicio automático de un WF a partir de un evento, debemos indicarlo en la configuración del WF en el WorkFlow Builder (trans SWDD).
Una vez posicionados en el WF que deseamos iniciar con un evento, debemos parar a la cabecera del WF:
Aquí indicaremos que tipo de objeto y evento lanzarán el WF.
Al crear la relación, automáticamente aparecerá un binding que pasará datos desde el contenedor del evento al del WF. Podremos modificar el binding para agregar los param. que deseemos:
Finalmente hay que activar el binding entre el WF y el evento:
Esta activación en la jerga de WF se denomina event linkage.
La activación del binding entre el WF y el evento, genera una orden de transporte de customizing.
Otra forma de activar el linkage es por la trans. SWETYPV.
Las condiciones de inicio:
SAP da una forma de limitar el inicio de un WF al disparar un evento y esto es a través de condiciones de inicio.
Para configurar las condiciones ejecutamos la trans. SWB_COND.
Para crear la condición seleccionamos el tipo de objeto, aparecerán todos los eventos acoplados con WF y seleccionamos uno:
Usando las variables del contenedor del evento, creamos las condiciones lógicas que queremos para que se cumpla o no el lanzamiento del WF.
Finalmente podemos verificar los eventos para simularlos, por la trans SWU0.
Y la trans SWUE para crear eventos.
Los desarrollos de programas lanza eventos
El programa que desee disparar un evento deberá usar el MF SWE_EVENT_CREATE.
La estructura lógica del programa debería ser:
- Llenar el contenedor de eventos con los param. 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 explicito.
 
 
 
Sobre el autor
Publicación académica de Candela Estefanía Calzada, en su ámbito de estudios para la Carrera Consultor ABAP.
Candela Estefanía Calzada
Profesión: Técnica Electrónica - Argentina - Legajo: JW91W
✒️Autor de: 160 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Me encuentro estudiando la ingeniería en sistemas de información. poseo amplia experiencia en edición de videos. tengo bases entorno a la programación que quiero continuar consolidando.
Certificación Académica de Candela Calzada