ALV con objetos

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • diego1975
    Junior Member
    • abr
    • 20

    #1

    ALV con objetos

    Buenas tardes, el problema que tengo es que al modificar un campo y cambiar a otro no me dispara el evento changed.
    alguien me podria decir como hacer para forzar a que se dispare el metodo. gracias.
  • Mike
    Senior Member
    • mar
    • 144

    #2
    El metodo CHECK_CHANGED_DATA del ALV hace que se vuelva a llamar los eventos change

    saludos,
    Mike

    Comentario

    • diego1975
      Junior Member
      • abr
      • 20

      #3
      y en que momento lo deberia llamar?

      Para ver si puedo ser un poco mas claro
      modifico un valor y sin que pase por el field changed quiero duplicar esa linea. primero pasa por el data changed y caudno quiere duplicar la linea no encuetra cual es la fila que quiereo duplicar.
      es como si no se refrescara la informacion. ahora si primero cambio la info y desues intento duplicar la linea esto funciona correctamente.
      Editado por última vez por diego1975; 23/09/2008, 20:00:23.

      Comentario

      • mcarrasco
        Member
        • jul
        • 71

        #4
        CL_GUI_ALV_GRID - Tiene todo!

        amigo, si modificas una linea va a disparar el evento data changed, no hay nada que puedas hacer.. ahora puedes decidir en que momento se dispara este evento:

        *-- Muestro el ALV
        call method grid->set_table_for_first_display
        exporting
        i_save = 'A'
        is_variant = gs_repid
        is_layout = gs_layout
        it_toolbar_excluding = lt_exclude
        changing
        it_fieldcatalog = gt_fieldcat
        it_outtab = tb[].

        *---Hay 2 opciones. CUANDO SE PRESIONA ENTER

        *--- Registro el evento ENTER, para que verifique consistencia de datos
        *-- cuando se presione enter
        call method grid->register_edit_event
        exporting
        i_event_id = cl_gui_alv_grid=>mc_evt_enter.

        *-- O CUANDO SE MODIFICA UNA CELDA

        *--- Registro el evento ENTER, para que verifique consistencia de datos
        *-- cuando se modifique una celda
        call method grid->register_edit_event
        exporting
        i_event_id = cl_gui_alv_grid=>mc_evt_modified.

        *---> Ahi podrias hacer llamado al metodo:

        call method ir_data_changed->modify_cell
        exporting i_row_id = ls_mod_cells-row_id
        i_fieldname = 'CODACTVT'
        i_value = l_codactvt.

        Y se actualiza el ALV... ahora para modificar la tabla interna tienes que hacerlo manualmente y si quieres q el alv tome los cambios tendras que llamar al metodo REFRESH_TABLE_DISPLAY

        Atte. Marcos Carrasco...

        Comentario

        Trabajando...