PDA

Ver la Versión Completa : Dudas CALL METHOD CL_GUI_CFW=>FLUSH ??


fenix28
19/04/10, 07:53:19
Hola a todo el mundo tengo un par de dudillas sobre los métodos

CALL METHOD CL_GUI_CFW=>FLUSH

CALL METHOD CL_GUI_CFW=>DISPATCH.

Para que se usan, por que y cuando hay que usarlo ????

Me estoy introduciendo en esto de ABAP OO y te van saliendo dudas.......

Muchas gracias por leer este mensaje y un saludo...

ballan
19/04/10, 09:23:43
Bueno esta explicacion quiza no sea muy ortodoxa pero lo voy a explicar tal y como yo lo entiendo

En R3 existen dos "compiladores" diferentes para tener separada la parte grafica y de presentacion de datos de lo que es el tratamiento de los datos

- El compilador de los report, funciones, clases, etc
- El compilador de las dynpros

Por ejemplo esta es la razon por la que las sentencias module, chain, etc no se pueden usar en los reports y los write, perform, etc no se pueden utilizar en las dynpros

La gran mayoria de desarrollos que hacemos tienen tanto una parte de tratamiento de datos como luego otra parte visual donde mostraremos al usuario los resultados, por lo tanto debe existir una comunicacion entre estos dos compiladores, si por ejemplo yo cambio el valor de una variable, de alguna manera se le debe comunicar a la dynpro que tiene que cambiar el valor de dicho campo, esta comunicacion se hace por rfc

Si cada cambio que hicieramos se comunicara instantaneamente, por ejemplo imaginemos una dynpro que tuviera 100 campos, se establecerian 100 conexiones rfc para la sincronizacion, esto obviamente penalizaria muchisimo el rendimiento por lo tanto lo que se hace es encolar las llamadas y procesarlas posteriormente todas a la vez

Esta es la razon por la que algunos cambios que hacemos que implican cambios "visuales" no los vemos automaticamente, el cambio esta hecho, pero esta encolado y por lo tanto la dynpro todavia no se "ha enterado"

Para forzar la sincronizacion existe el metodo FLUSH y el metodo DISPATCH es un metodo que tiene una funcion similar solo que es para la sincronizacion entre eventos

En resumen, si en nuestro programa realizamos una operacion que implica algun cambio en la dynpro (actualizacion de campos, grids, lanzamiento de okcodes, etc) y queremos que sea instantaneo utilizaremos el metodo dispatch para el caso de que lo que este implicado sea un evento y el metodo flush para todo lo demas

fenix28
20/04/10, 10:39:07
Compañero muchas gracias por la explicación me ha quedado muy claro...
Un saludo.....

JEFE
07/02/11, 13:33:25
Muchas gracias. Muy claro.

fgarcia763
18/11/14, 20:36:17
Que buena explicación Muchas gracias :)

jcdst
02/03/17, 15:21:57
Bueno esta explicacion quiza no sea muy ortodoxa...

Hola Ballan, estoy teniendo un problema con este método.

La operación consiste en la VL02N tratar de contabilizar una entrega de salida y no contabiliza ni muestra el log de error.

Descubrí por depuración que la línea de código que se ejecuta antes de salirse del programa es una llamada a ese método, pero aunque le doy a F5 no me permite depurar dentro del método.

Todo esto es en código estándar ¿podrías ayudarme a descubrir el problema?.

Muchas gracias de antemano.