MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Ayuda!!! (foro/showthread.php?t=34378)

gotelyn 23/12/09 15:03:03

Ayuda!!!
 
Hola,

Estoy intentando leer el método CL_GUI_ALV_GRID->get_modified_cells , para poder obtener la tabla que contiene los valores que he puesto en un ALV y no he dado al intro para guardar y me dice que no se puede usar porque es un método protegido.

Alguien sabe si hay manera de usar ese método protegido? y si no como puedo saber antes de guardar el ALV los valores que ha metido el usuario y no ha dado al INTRO para actualizar.

GRACIAS.

ballan 23/12/09 15:47:38

El metodo esta protegido precisamente para eso, para que no lo puedas utilizar

En este caso en particular las unicas clases que podrian utilizar los metodos protected serian las que aparecieran en la pestaña FRIENDS de la clase CL_GUI_ALV_GRID

Para obtener los datos que se han modificado en un ALV debes hacer lo siguiente

Declarar un metodo receptor de eventos que reciba el evento HANDLE_DATA_CHANGED_FINISHED de la clase CL_GUI_ALV_GRID

Enlazar el evento a tu metodo con
SET HANDLER nombre_metodo for cl_gui_alv_grid for all instances.

Asi cuando el usuario cambie algo pasara por el metodo que hayas puesto para recepcionar el handle_data_changed_finished y te viene una tabla como parametro que contiene todas las celdas que se han modificado

gotelyn 23/12/09 16:11:44

Ayuda!!
 
Como declaro el método? Podias ponerme el código?

Declarar un metodo receptor de eventos que reciba el evento HANDLE_DATA_CHANGED_FINISHED de la clase CL_GUI_ALV_GRID

Gracias.

cgd 23/12/09 16:14:32

no estoy seguro, pero no te sirve este post??


fijate esto en particular:
* Registramos el evento cuando se modificar el dato por si acaso no
* pulsan el ENTER
call method obj_grid2->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.

gotelyn 23/12/09 16:27:18

Ayuda!!!
 
Mi ALV no es OO, se me olvido mencionar ese detalle.....

gotelyn 28/12/09 07:36:41

Solución
 
Hola,


Por si a alguien le vale de ayuda al final lo consegui de la siguiente manera:

Se recupera el objeto asociado al ALV ( Mi ALV no es orientado a objetos ):

DATA: l_ref_alv TYPE REF TO cl_gui_alv_grid.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = l_ref_alv.

Y una vez recuperado ese objeto, usamos el siguiente método:

CALL METHOD l_ref_alv->CHECK_CHANGED_DATA.

Este evento comproyeba si ha habido cambios en el ALV y llama al evento DATA CHANGE para que los actualice.

A mi me fue muy util, espero que sirva de ayuda.

tiggerhippie 28/12/09 08:16:53

Muchas gracias gotelyn, a mi me ha servido de mucha ayuda!! ;)

fsandovalz 30/05/13 15:43:15

gracias.
 
en mi caso no utilice la función y solo lo iguale al objeto grid del ALV, y ya con eso puedo mandar llamar la clase de actualización cada vez que lo necesite :)

Saludos.


Husos Horarios son GMT. La hora en este momento es 06:30:16.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web