MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Problema detectar cambio valor ALV OO Celda (foro/showthread.php?t=35712)

fenix28 17/03/10 16:51:30

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.

DavidXD_XD 17/03/10 19:21:10

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 :D

fenix28 18/03/10 07:07:29

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..

basilon 03/03/16 07:35:30

Justo antes de grabar para que tome los cambios en el ALV pones esto:

CALL METHOD obj_grid2->check_changed_data.

ariasnaty 15/07/16 18:39:28

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

J e f f 15/07/16 19:16:23


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,


Husos Horarios son GMT. La hora en este momento es 15:38:33.

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