Autor Tema: Problema campos ALV OO Ayuda búsqueda!!!  (Leído 7273 veces)

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

Desconectado colosoderada

  • Novato
  • *
  • Mensajes: 11
    • Ver Perfil
Problema campos ALV OO Ayuda búsqueda!!!
« en: 22 de Diciembre de 2009, 05:35:44 pm »
Hola a todos compañeros tengo un pequeño problemilla que no entiendo lo que pasa, he creado un ALV OO con dos campos editables que son fechas, bien he puesto que esto campos tengan ayuda para que busquen las fechas, lo he declaro de la siguiente forma en el catálogo:

 l_fieldcatalog-fieldname   = 'FECHA_DESDE'.      "Fecha Desde
  l_fieldcatalog-scrtext_l   = 'Fecha Desde'.
  l_fieldcatalog-col_pos     = 3.
  l_fieldcatalog-key         = 'X'.
  l_fieldcatalog-outputlen   = 10.
  l_fieldcatalog-edit        = 'X'.
  l_fieldcatalog-REF_FIELD   = 'BUDAT'.
  l_fieldcatalog-REF_TABLE   = 'BKPF'.

  append l_fieldcatalog to g_fieldcatalog2.
  clear: l_fieldcatalog.

  l_fieldcatalog-fieldname   = 'FECHA_HASTA'.      "Fecha Hasta
  l_fieldcatalog-scrtext_l   = 'Fecha Hasta'.
  l_fieldcatalog-col_pos     = 4.
  l_fieldcatalog-key         = 'X'.
  l_fieldcatalog-outputlen   = 10.
  l_fieldcatalog-edit        = 'X'.
  l_fieldcatalog-REF_FIELD   = 'BUDAT'.
  l_fieldcatalog-REF_TABLE   = 'BKPF'.

El ALV se genera bien con la ayuda que me da la opción de usar la ayuda para poder modificar los datos, pero al cambiar la fecha no me captura el dato seleccionado "o algo me he dejado", si que si pongo a mano la fecha y cambia la que hay me lo detecta se mete en el metodo handle_data_changed
y lo guarda, el problema que si lo hago desde la ayuda detecta que ha cambiado pero no detecta que ha habido un cambio.

He registrado estos dos eventos para detectar los cambios:

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


Y mi método data_changed lo tengo de la siguiente forma:

class lcl_event_receiver2 definition.

  public section.

    methods:

    handle_data_changed for event data_changed of cl_gui_alv_grid
    importing er_data_changed.

endclass.                    "lcl_event_receiver DEFINITION

  method handle_data_changed.

    data: ls_mod_cells     type lvc_s_modi,
          lf_et_index_rows type lvc_t_row,
          lf_et_row_no     type lvc_t_roid.

    clear g_wa_zcpr_cat_lin.

    loop at er_data_changed->mt_mod_cells into ls_mod_cells.

      read table g_zcpr_cat_lin index ls_mod_cells-row_id
                                      into g_wa_zcpr_cat_lin.

      if ls_mod_cells-fieldname eq 'FECHA_DESDE' and sy-subrc eq 0.
         move ls_mod_cells-value to g_wa_zcpr_cat_lin-fecha_desde.
         modify g_zcpr_cat_lin index ls_mod_cells-row_id
                                     from g_wa_zcpr_cat_lin.
      endif.

      if ls_mod_cells-fieldname eq 'FECHA_HASTA' and sy-subrc eq 0.
         move ls_mod_cells-value to g_wa_zcpr_cat_lin-fecha_hasta.
         modify g_zcpr_cat_lin index ls_mod_cells-row_id
                                     from g_wa_zcpr_cat_lin.
      endif.

    endloop.

  endmethod.

Pero no me funciona con la ayuda, que me falta o que estoy haciendo mal ???? Alguna pista por favor.......... Gracias por leer este mensaje y feliz navidad..........

Saludos