Autor Tema: Problema detectar cambio valor ALV OO Celda  (Leído 19034 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado colosoderada

  • Novato
  • *
  • Mensajes: 11
    • Ver Perfil
Problema detectar cambio valor ALV OO Celda
« 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

Desconectado sol99

  • Novato
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Problema detectar cambio valor ALV OO Celda
« Respuesta #1 en: 21 de Marzo de 2010, 06:25:10 pm »
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

Desconectado colosoderada

  • Novato
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Problema detectar cambio valor ALV OO Celda
« Respuesta #2 en: 13 de Abril de 2010, 09:12:09 am »
Muchas gracias compañero, con eso todo solucionado.
Saludos.

Desconectado abapito

  • Usuario Completo
  • ***
  • Mensajes: 76
    • Ver Perfil
Re:Problema detectar cambio valor ALV OO Celda
« Respuesta #3 en: 11 de Enero de 2012, 04:44:09 pm »
+10 sol99... de gran ayuda tu respuesta.

Gracias.