Ver Mensaje Individual
  #1  
Viejo 09/09/10, 10:09:27
Jambi Jambi is offline
Junior Member
 
Fecha de Ingreso: ago 2010
Mensajes: 11
Refrescar ALV OO - refresh_table_display

Buenas,

Tengo un elemento de datos Status, con los valores, p.e.: "OF" con la descripción "Offen", etc. En la tabla Z se almacena el valor "OF" pero en un grid ALV se muestra "Offen", al modificarlo por código en la tabla interna del ALV antes del set_table_for_first_display.

Hasta ahí todo bien, el problema viene al modificar este valor en el ALV, se trata de un columna modificable, pretendo que al tomar el valor, se muestre la descripción, en vez del valor. Para ello, al instanciar el ALV indico que el evento data_change se lance al modificar una celda y no al dar enter:

call method gr_alvgrid->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_modified



Y trato los cambios de las celdas y actualizo la tabla
interna que paso al ALV, en el evento data_changed:

form handle_data_changed using rr_data_changed type ref to
cl_alv_changed_data_protocol.

loop at p_data->mt_mod_cells into ls_mod_cell.
when 'SCHSTATUS'.

READ TABLE TA_ITAB INTO WA_ITAB INDEX ls_mod_cells-ROW_ID.

CASE ls_mod_cells-VALUE.
WHEN 'OF'.
WA_ITAB-SCHSTATUS = 'Offen'.
WHEN 'IB'.
WA_ITAB-SCHSTATUS = 'in Bearbeitung'.
WHEN 'ER'.
WA_ITAB-SCHSTATUS = 'Erledigt'.
WHEN 'EN'.
WA_ITAB-SCHSTATUS = 'Entfällt'.
ENDCASE.

MODIFY TA_ITAB INDEX ls_mod_cells-ROW_ID FROM WA_ITAB.

data: posicion type lvc_s_stbl.

posicion-row = 'X'.
posicion-col = 'X'.

CALL METHOD obj_grid->refresh_table_display
exporting is_stable = posicion.

endloop.

endform. " handle_data_changed


Pero sigue apareciendo en el ALV el valor "OF" (p.e.) y de hecho en la tabla interna TA_ITAB toma ese valor, cuando al debuggear compruebo que toma la descripcion en el data_changed (!).

Me falta algo? no es el proceso adecuado? he encontrado que se puede hacer tambien a través de user_command, indicando rs_selfield-refresh = 'X', pero con REUSE_ALV_GRID_DISPLAY, en vez de set_table_for_first_display, lo probé también pero sin éxito. Además ya conseguí que el ALV tuviera la apariencia y funcionalidad deseada con set_table_for_first_display, y preferiría no tener que adaptarlo.

Muchas gracias de antemano y un saludo,
Javi
Responder Con Cita