Ayuda SAP

Lanzar evento luego de JOB Cancelado

Saludos camaradas,

Alguno sabe como lanzar un evento cuando se cancela un job?

Resulta ser que tengo una cadena de jobs, cada uno depende del anterior para lanzarse pero solo se lanza si el anterior fué correcto, quiero lanzarlo aunque el anterior se haya cancelado.

El problema es que todo esto lo hago por codigos, cuando creo un job le pongo que se ejecute luego de un evento, este evento lo lanzo cuando termina el programa corrido por el job, pero si se cancela nunca llega a lanzarse el evento así que quiero forzar la ejecucion del evento.

No quiero tener que crear un job que se ejecute periodicamente y revise si hay jobs cancelados, primero porque esos nombres de esos jobs se crean dinamicamente, segundo porque no quiero tener un job corriendo ahí para siempre buscando cancelados .

En el manual ABAP OO busca la seccion de hilos, ahi se explica como hacer lo que necesitas.

No hay nada sobre hilos, me hablas de BC 401? Abap Objetcs

Y tener un job periódico que ejecute un report que lo único que haga es controlar los Jobs? Es decir, el report lanza el primer job, espera a que acabe, lanza el segundo etc…

Gracias @Salco,

No me sirve de esa manera, nada que sea periodico me servirá ya que los jobs se disparan según fuerzas externas.

Algo se me escapa, el primer job puede ser que se dispare según fuerzas externas, pero los otros están encadenados al primero no? Si el primero termina bien, entonces se lanza el evento que desencadena el segundo, es decir, que el segundo no depende de fuerzas externas, es así?

Si y no, el segundo se crea segun fuerzas externas, pero se dispara según el primero, que también es de fuerzas externas.

Cada vez que se crea un job, se verifica si hay uno activo o en cola, si es así entonces se pone en cola este y se configura para que se dispare con un evento dinamico que lanza el job de turno al terminar, pero si el job de turno da error, nunca llega a disparar el evento dinamico. Y ahi todo vale madre.

Mi mejor apuesta ahora mismo es hacer un programa que liste los jobs cancelados, para que el usuario manualmente lance el evento de ese job cancelado y siga el flujo, lo segundo es hacer un job que se ejecute cada 10 minutos en busca de jobs cancelados y que ejecute el evento de dicho job cancelado, pero esto ultimo sería un tsukuyomi infinito, ese job se ejecutaría por siempre y para siempre.

Buenas @Haden_Yasser_,

Hay algo que me inquieta, si son JOBs que dependen de la ejecucion de otros, ¿Porque un cancelado debería de lanzar un evento para que otro JOB ejecute un programa que depende de lo que proceso el anterior(el que se cancelo)?, en estos casos si la data depende del anterior que fue cancelado me imagino que se procesara de manera errónea una parte.

Lo que he hecho es lanzar JOBs de forma paralela si los datos que procesan cada uno no depende del otro, pero si es el caso de que depende uno del otro creo que lo correcto es que no se ejecute el siguiente hasta que se corrija el DUMP que cancelo el anterior y se re-procese el anterior hasta que finalice.

Out of Topic…
@froilogomezca aun no leo tu presentacion, ven aqui #presentaciones y crea un tema.

@smota ok ya me calentaste con @Shadowdancer , dejame hacer mi presentación para que no me den un pela :eyes:

1 me gusta

No, la data no depende del anterior, la unica dependencia es para que se pueda ejecutar, porque el anterior ejecuta el evento lanzador, ya que cada job lo puse a que se ejecute tras evento, y cual es el evento? la finalización del job anterior.

@Haden_Yasser_ si la data no depende del anterior porque no lanzar esos job en forma paralela (al mismo tiempo) y olvidarte de lanzaros por eventos :confused:

Saludos mi querido @Haden_Yasser_,

Creo que en tu caso hay un ligero problema de arquitectura (tranquilo, sólo lo asumo por la poca información del requerimiento que leo aquí).

Si está dentro de tus posibilidades, redacta un caso de estudio del proceso que quieres automatizar y así puedes ver las sugerencias de los consultores que deseen aportar algo. En mi caso quiero aportarte algo pero, tengo un franco tirador apuntando a un blanco con los ojos tapados.

Los problemas no son señales de alto, son directrices o caminos a seguir…

1 me gusta

No se puede lanzar en forma paralela porque el sistema no aguanta el proceso, que de por sí uno es pesado, si le meto todas esas rutas (300) que llegan al mismo tiempo a postear ventas se le abre el pecho ¯ \ _ (ツ)_/¯

De hecho al principio lo tenía así, cuando llegaron esas primeras 50 hahahaha

1 me gusta

Y si lanzas un job detrás de cada uno que lo único que haga es ejecutar un report que lance el evento? Lo único que duplicas el número de Jobs… Es decir, pones en cola dos Jobs cada vez, que el segundo se lance después del primero y que este segundo solo lance el evento.

@Salco, tengo algo parecido, pero hay puntos ciegos sin mencionar que no quieren que llene su sistema de jobs,

Lo que le planteé al final es que ellos mismos monitoreen los jobs cancelados y ejecuten el evento manual, tomenlo o dejenlo.

1 me gusta

Pues también está bien la idea, así ellos tendrán más control sobre los Jobs. Aunque también se podría haber metido en el último job un paso para borrar todos los Jobs anteriores.

estimado @Haden_Yasser_ hay una herramienta llamada RedWood para administración de jobs y hacer cosas mas avanzadas (o locas xD), nos vinieron a proponerla pero no tenemos esa necesidad de momento.

puedes buscar más info al respecto sobre la herramienta que esta certificada por SAP y tengo el contacto si te interesa.

1 me gusta

Este tema se cerró por inactividad.

Copia la URL de este debate, y abre un nuevo tema en #feedback si:

  • El autor del debate no marcó ninguna respuesta como solución, y tú crees tener la solución
  • Crees tener otra solución a la que actualmente está marcada.

Si, en cambio tienes una duda parecida a la que se debatió, o la misma duda, abre un nuevo tema en la categoría que corresponda y pon que el tema se debatió oportunamente (pega el enlace a este debate), así los otros lectores pueden saber de qué hablas.

Ayúdanos a tener una comunidad organizada.