MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #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
  #2  
Viejo 09/09/10, 11:20:11
Jambi Jambi is offline
Junior Member
 
Fecha de Ingreso: ago 2010
Mensajes: 11
quieto parao!

lo he conseguido con MODIFY_CELL:


call method rr_data_changed->MODIFY_CELL
exporting i_row_id = ls_mod_cells-row_id
i_fieldname = 'SCHSTATUS'
i_value = c_texto.


gracias de todas maneras a los que lo hayais leido, saludos
Javi
Responder Con Cita
  #3  
Viejo 24/10/13, 17:54:49
JoNhNaTaN JoNhNaTaN is offline
Member
 
Fecha de Ingreso: ene 2013
Mensajes: 70
Question

estimado tu variable ls_mod_cells es de tipo LVC_S_ROID, lo haz declarado asi:

ls_mod_cells type LVC_S_ROID.

Estoy en lo correcto, ademas que valor toma esa variable (estructura) de donde lo tomas??
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 19:06:15.


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