PDA

Ver la Versión Completa : problema con el ALV_GRID y CALL METHOD er_data_change


rrrsap
18/02/09, 16:08:15
Hola a tod@s,

tengo un problema con el ALV_GRID.

Utilizo el CALL METHOD er_data_change->get_cell_value
para controlar un campo de la ALV.
cambio el campo fecha1 del registro X del ALV.
En el campo "value" tengo el valor de la fecha1 que he cambiado y que en seguida voy a controlar...
pero, a parte de este nuevo valor, tambien necestito saber cuales son los valores de los otros campos del mismo registro X (por ej fecha2, nombre, etc..)

Muchas gracias por la ayuda

RRRSAP

DavidXD_XD
19/02/09, 16:07:15
Hola, cuando usas el evento handle_data_changed tienes esto ...

handle_data_changed
FOR EVENT DATA_CHANGED OF cl_gui_alv_grid
IMPORTING er_data_changed.

Dentro del parametro er_data_changed existe un atributo llamado mt_good_cells y con ese puedes saber que valor se ha cambiado dentro de la celda editable, asi como tambien el nombre del campo y el numero de registro de la tabla interna que cambiaste, ejemplo

DATA: g_good TYPE lvc_s_modi.

FIELD-SYMBOLS: <fs> LIKE LINE OF itab.

LOOP AT er_data_changed->mt_good_cells INTO g_good.
READ TABLE itab INDEX g_good-row_id ASSIGNING <fs>.
IF sy-subrc = 0.
... "Aqui tengo la estructura de la linea que contiene la modificacion de la celda
ENDIF.
ENDLOOP.

Espero que te pueda ayudar :D

rrrsap
20/02/09, 10:20:41
Mucha gracias David

siempre muy gentil

RRRSAP

rrrsap
20/02/09, 11:19:49
Hola otra vez,

he puesto el nuevo codigo, pero lo que obtengo es el valor nuevo de la fecha( valor cambiado ) pero yo necesito tambien el viejo valor por que tengo que chequear que el nuevo valor sea mayor del viejo valor!!

sabes como se pueda hacer?

gracias de la ayuda!!!

RRRSAP

DavidXD_XD
20/02/09, 14:02:52
Hola, supongamos que cambias el campo CAMP_FECHA, entonces dentro del valor g_good-value tendrias el nuevo valor, mientras que si lees la tabla interna con la fila que modificaste <fs>-camp_fecha todavia tiene el antiguo valor, ahi puedes realizar una comparacion ...

LOOP AT er_data_changed->mt_good_cells INTO g_good.
READ TABLE itab INDEX g_good-row_id ASSIGNING <fs>.
IF sy-subrc = 0.
... "Aqui tengo la estructura de la linea que contiene la modificacion de la celda
ENDIF.
ENDLOOP.

rrrsap
24/02/09, 08:49:52
Gracias x tu ayuda,

creo que le he conseguido..

saludos

RRRSAP

Luis Armando Valdez R.
27/05/11, 18:29:23
Hola amigos, tengo un caso que cuando el usuario captura un documento, yo hago una consulta a la BD y obtengo información, pero la quiero pintar en automatico cuando el de enter.

Ejemplo

Captura Documento ==>enter

Pinta Referencia, Fecha, etc.

Dentro de la línea de registro nueva en mi ALV.

Gracias!