SWE_EVENT_CREATE to queuing events

Question: Hello.

I wrote to ask a help in this case. I am doing a WF in Notifications to make a tratement of a tasks in it. But i need to do process asynchrone to each task. I call a event in a user exit when the notification is saved. For each task that i create. in background task by this way:

CALL FUNCTION 'SWE_EVENT_CREATE'
IN BACKGROUND TASK
EXPORTING
OBJTYPE = 'ISUSMNOTIF'
OBJKEY = OBJKEY
EVENT = 'NUEVA_MEDIDA'
* NO_COMMIT_FOR_QUEUE = 'X'
START_RECFB_SYNCHRON = 'X'
* START_WITH_DELAY = ' '
TABLES
EVENT_CONTAINER = Z_CONTAINER.
* EXCEPTIONS
* OBJTYPE_NOT_FOUND = 1
* OTHERS = 2.

to throw a event for each new task, my problem is, if create 2 or more tasks, the events are throwed at the same time. I can see in the events log, but only i can catch the first that it was throwed. I can´t do a event queue or add a parameter to the function module to send the events and receive it in a secuential form.

The fm that use in the user exit is...


FUNCTION Z_GWF_ISU_CS_TROW_RELEASED.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(QMNUM) LIKE VIQMEL-QMNUM
*" EXPORTING
*" VALUE(EVENT_TROWED) LIKE VIQMEL-KZLOESCH
*" TABLES
*" WQMSM STRUCTURE WQMSM
*"----------------------------------------------------------------------
********************************************************************
*** Módulo de Función: Z_GWF_ISU_CS_TROW_RELEASED
*** Grupo de funciones: ZGWF_ISU_CS
***
*** Proyecto: SIGCO
*** Id Especificación:
***
*** Descripción: Módulo de funciones para verificar en la user
*** exit QQMA014 si hay nuevas medidas a liberar
*** El MF se utiliza para un método del
*** business object ZISUSMNOTI
***
*** Entradas: QMNUM --> Nro. del aviso para el se hace la
*** verificación si hay medidas liberadas
*** TI_WMWSM-->Tabla interna de las medidas a agregar
***
*** Salidas: EVENT_TROWED--> Indicador que el evento fue lanzado
***
***
*** Autor: Francisco Rodriguez - SEI Fecha: 02/02/2005
***
***----------------------------------------------------------
***
***
***
*** Histórico de las Alteraciones:
***---------------------------------------------------------------------
*** Fecha |Autor |Alteración
***---------------------------------------------------------------------
*** 02/02/2005 LOPEZL Creación
***
************************************************************************
*SE INVOCA EL INCLUDE PARA EL MANEJO DE LAS MACROS DEL CONTAINER
INCLUDE <cntain>.
swc_container z_container.
TABLES: VIQMEL.
*QUE ME ALMACENA LAS MEDIDAS ALMACENADAS EN BASE DE DATOS
DATA: BEGIN OF ITAB_QMSM OCCURS 0.
INCLUDE STRUCTURE VIQMSM.
DATA: END OF ITAB_QMSM.

*QUE ME ALMACENA LAS MEDIDAS QUE RECIBE LA FUNCION
DATA: BEGIN OF QMSM_AUX OCCURS 0.
INCLUDE STRUCTURE WQMSM.
DATA: END OF QMSM_AUX.

*VARIABLE AUXILIAR CON EL NUMERO DE AVISO AL QUE MODIFICO
DATA: QMNUM_AUX LIKE VIQMSM-QMNUM.

*VARIABLE QUE GUARDA EL INDICE DE LA MEDIDA QUE YA SE HA CREADO
DATA: indice LIKE SY-TABIX.

*VARIABLE LLAVE PARA EL LLAMADO DEL EVENTO
DATA: OBJKEY LIKE SWEINSTCOU-OBJKEY.



*VARIABLE PARA INSTANCIAR EL AVISO
DATA: INSTANCIA_QM TYPE SWC_OBJECT.
*if sy-uname = 'RODRIGUEZFJG'.

*PONGO LA CLAVE TAL Y COMO ESTA EN LA BD
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = QMNUM
IMPORTING
OUTPUT = QMNUM_AUX.


*VARIABLE QEU CONTIENE LA MEDIDA A INSTANCIAR
DATA: QMSM TYPE SWC_OBJECT.

*SE LANZA EL EVENTO DE CREACIÓN SI ES POR PRIMERA VEZ



SELECT SINGLE * FROM VIQMEL WHERE QMNUM = QMNUM_AUX.

IF SY-DBCNT = 0.

swc_clear_container z_container.

objkey = QMNUM_AUX.

SWC_CREATE_OBJECT INSTANCIA_QM 'ISUSMNOTIF' OBJKEY.

swc_set_element z_container 'NOTIFICACION' INSTANCIA_QM.
*se llama in banground task porque posee el check START_RECFB_SYNCHRON
*para que haga el commit para que se ejcute la función correctamente
*y no interfiera con el commit con el user exit
CALL FUNCTION 'SWE_EVENT_CREATE'
IN BACKGROUND TASK
EXPORTING
OBJTYPE = 'ISUSMNOTIF'
OBJKEY = OBJKEY
EVENT = 'CREADO'
NO_COMMIT_FOR_QUEUE = 'X'
START_RECFB_SYNCHRON = 'X'
* START_WITH_DELAY = ' '
TABLES
EVENT_CONTAINER = Z_CONTAINER.
* EXCEPTIONS
* OBJTYPE_NOT_FOUND = 1
* OTHERS = 2.
ENDIF.


*COPIO LA TABLA QUE ME VIENE COMO PARAMETRO
QMSM_AUX[] = WQMSM[].


*BORRA TODOS LOS REGISTROS QUE NO TENGAN EL INDICADOR DE INSERTAR
DELETE QMSM_AUX WHERE AEKNZ <> 'I'.

*BUSCO LOS REGISTROS DE BD.

SELECT * FROM VIQMSM INTO CORRESPONDING FIELDS OF TABLE ITAB_QMSM
WHERE QMNUM = QMNUM_AUX.

*BORRO LOS QUE ESTAN ALMACENADOS EN LA BD
LOOP AT ITAB_QMSM.

read table QMSM_AUX with key manum = ITAB_QMSM-manum.
INDICE = SY-TABIX.
if sy-subrc = 0.
DELETE QMSM_AUX INDEX INDICE.
ENDIF.

ENDLOOP.

*GENERO UN EVENTO DE CREACIÓN DE UNA MEDIDA POR CADA MEDIDA
*NUEVA ASI COMO UNA INSTANCIA DEL OBJETO QMSM.

LOOP AT QMSM_AUX.
swc_clear_container z_container.
swc_create_container z_container.
swc_set_element z_container 'NROAVISO' QMSM_AUX-QMNUM.
swc_set_element z_container 'NROMEDIDA' QMSM_AUX-MANUM.
objkey = QMSM_AUX-QMNUM.

*se llama in banground task porque posee el check START_RECFB_SYNCHRON
*para que haga el commit para que se ejcute la función correctamente
*y no interfiera con el commit con el user exit

CALL FUNCTION 'SWE_EVENT_CREATE'
IN BACKGROUND TASK
EXPORTING
OBJTYPE = 'ISUSMNOTIF'
OBJKEY = OBJKEY
EVENT = 'NUEVA_MEDIDA'
* NO_COMMIT_FOR_QUEUE = 'X'
START_RECFB_SYNCHRON = 'X'
* START_WITH_DELAY = ' '
TABLES
EVENT_CONTAINER = Z_CONTAINER.
* EXCEPTIONS
* OBJTYPE_NOT_FOUND = 1
* OTHERS = 2.



*SE LO QUITO POR ESTAR EN LA USER EXIT SI SE COLOCA INTERFIERE CON EL
*COMMIT DE LA TRANSACCIÓN PERO SIEMPRE TIENE QUE ESTAR DESPUES DEL
*LLAMADO DE LA FUNCIÓN

*COMMIT WORK.


ENDLOOP.





ENDFUNCTION.


i don't use the standart events because i need to send it sequentialy and have the status of the original notification

Events
====
creado - a new notification
nueva_medida - a new task

Answer:
Hi,

I will be doing something like this in my current project.
I am not sure whether this will solve your problem or not but still you can check this out.
In SWU3 check out whether you have made event queue switched on or not

Go to the following path
SWU3 --> Maintain Runtime Environment --> Schedule Background Job for Event Queue

In that screen go to Activation Tab
And the check the box for switch on event queue.

Hope this helps you
Copyright ?2007 - 2008 www.jt77.com