Problema Eventos ALV Grid DATA_CHANGED_FINISHED

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • luise32
    Member
    • oct
    • 71

    #1

    Problema Eventos ALV Grid DATA_CHANGED_FINISHED

    Buenas tardes a todos, el día de hoy tuve que trabajar en un requerimiento el cual consiste en lo siguiente:

    Antes que nada los pongo en contexto: Tengo un ALV editable con algunos eventos que invocan un hotspot y ayudas de entrada F4. Todos funcionaban perfectamente pero al momento de implementar el evento DATA_CHANGED_FINISHED estos eventos dejaron de funcionar.

    La ayuda de busqueda F4 si la invoco en la fila 10 para que me auto complete el valor con el que escoja el usuario siempre lo pone en la fila 1.

    Por otra parte el hotspot también al momento de invocarlo en la fila 5 por ejemplo, el llama según lo que exista en la fila 1.

    En ambos casos es por que supongo se pierde la posición en la cual el usuario dio clic.

    Alguna idea de como debo llamar estos eventos sin evitar su correcto funcionamiento dentro del ALV?

    Mil gracias!
    Consultor SAP ABAP
  • luise32
    Member
    • oct
    • 71

    #2
    Buenas tardes a todos!

    Por fin pude dar con el problema y lo comparto por si a alguien le llegase a pasar lo mismo.

    En el evento DATA_CHANGED_FINISHED hacia unos calculos para que me actualice un campo dentro de la tabla, una vez realizado el calculo tenia que actualizar la grilla con el metodo: (este codigo estaba dentro del DATA_CHANGED_FINISHED)

    Código:
        CALL METHOD g_grid->refresh_table_display
          EXCEPTIONS
            finished = 1
            OTHERS   = 2.
    Al invocar el metodo de refresh siempre que llamaba el host_spot o la ayuda F4 provocaba que se pierdan los datos de celda actual y es por eso que siempre lo colocaba en la primera fila.

    Ya para solucionarlo hice lo siguiente: solo invoco la rutina que me hace el calculo siempre y cuando la celda actual sea la del valor con la siguiente instruccion.

    Código:
      g_grid->get_current_cell(
        IMPORTING es_col_id = l_colid
                  e_col     = l_col
                  ).
    
      IF  l_colid = 'VALOR' .
    *   Mi codigo....
    *   Y cuando voy a mostrar por pantalla al usuario el resultado del calculo
    *   llamo el refresh
        CALL METHOD g_grid->refresh_table_display
          EXCEPTIONS
            finished = 1
            OTHERS   = 2.
      ENDIF.
    Espero que a alguien le sirva.

    Cordial saludo para todos!
    Editado por última vez por luise32; 07/10/2014, 21:45:24.
    Consultor SAP ABAP

    Comentario

    Trabajando...