#1
|
|||
|
|||
Problema detectar cambio valor ALV OO Celda
Hola a todo el mundo tengo un problemilla, que cuando en un ALV OO me cambian el valor numérico en una celda editable y le dan por ejemplo a botón "GUARDAR" del status de la pantalla el ALV no detecta que se ha modificado el dato y claro no puedo guardar ese valor. Estoy usando lo siguiente para que me lo detecte.
create object obj_contenedor2 "Creating container object exporting container_name = i_container2. create object obj_grid2 "Creating AlV Grid Object exporting i_parent = obj_contenedor2. create object i_event_receiver2. "Creating event receiver object set handler i_event_receiver2->handle_user_command for obj_grid2. set handler i_event_receiver2->handle_toolbar for obj_grid2. set handler i_event_receiver2->handle_double_click for obj_grid2. set handler i_event_receiver2->handle_hotspot_click for obj_grid2. set handler i_event_receiver2->handle_data_changed for obj_grid2. perform exclude_tb_functions changing l_exclude2. *Registrar Evento Enter para poder activar el evento data_changed. call method obj_grid2->register_edit_event exporting i_event_id = cl_gui_alv_grid=>mc_evt_enter. * 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. * En el catálogo decimos en que orden van a salir los campos. perform create_field_catalog2. "Field Catalogue creation * Esto hay que hacerlo para que salga la columna de selección. i_layout2-sel_mode = 'D'. call method obj_grid2->set_table_for_first_display exporting is_layout = i_layout2 it_toolbar_excluding = l_exclude2 changing it_outtab = g_t_zinvt_posic[] it_fieldcatalog = g_fieldcatalog2. Si bien me detecta cuando cambian de celta o le dan al enter, no hay manera de conseguir que cuando pulsen un icono del status de la pantalla "no del ALV" me detecte el cambio. Otra pregunta es posible a nivel de ALV OO hacer editable una celde, es decir en una misma columna tener unas celdas editables y otra que no se pueden editar... Muchas gracias por leer este mensaje y un saludo a todo el mundo. |
#2
|
||||
|
||||
Hola, eso me paso en una ocasion, de momento lo solucione quitandole el boton de guardar y colocandole dentro de la barra de herramientas del mismo ALV con el evento handle_toolbar, cuando eso pasa y le das en grabar, primero procesara el handle_data_changed, y luego procesara el handle_toolbar reconociendo el ultimo valor que guardaste y grabando todos los datos ,espero te ayude
__________________
David Carballido Córdova |
#3
|
|||
|
|||
Muchas gracias compañero, eso era lo que me temía que tendría que poner el icono y todo en un icono del pf-status del ALV.
Saludos.. |
#4
|
|||
|
|||
Justo antes de grabar para que tome los cambios en el ALV pones esto:
CALL METHOD obj_grid2->check_changed_data.
__________________
Barcelona blanquiazul ! |
#5
|
|||
|
|||
Sumar filas de un alv en una columna final como total
Hola!... les consulto:
Existe algún evento en el avl que se active en el momento de modificar la disposición? Me pasa que tengo varias columnas con importes y al final una que suma por linea como total, pero si eliminan alguna columna, el total es erróneo. Hay alguna forma de refrescar esa ultima columna? Algún evento que se active cuando sacan o agregan columnas? Gracias Naty |
#6
|
||||
|
||||
Lo que se me ocurre, es completar el campo total en la logica del programa, de manera que si eliminan o no las columnas, el valor no cambie. Se entiende? Lo calculas en la logica, y luego en el ALV simplemente lo mostras. Saludos, |
Herramientas | Buscar en Tema |
Desplegado | |
|
|