Foro de programación ABAP
SAP / ABAP => Programación ABAP => Mensaje iniciado por: colosoderada en 17 de Marzo de 2010, 06:50:13 pm
-
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
-
Hola,
Para que se te graben los datos al pulsar un botón que no es del propio ALV tienes que llamar al método CHECK_CHANGED_DATA del objeto ALV. Eso es lo que te falta. Lo demás supongo que lo tendrás. Tienes que tener implementado dicho metodo para el evento DATA_CHANGED dentro de la clase manejadora de eventos que te has tenido que crear. Cualquier duda me dices y si hace falta te mando un ejemplo.
Saludos
-
Muchas gracias compañero, con eso todo solucionado.
Saludos.
-
+10 sol99... de gran ayuda tu respuesta.
Gracias.