evento ENTER o Cambio de datos en ALV (no OO)

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • wlade
    Junior Member
    • feb
    • 1

    #1

    evento ENTER o Cambio de datos en ALV (no OO)

    Buenas,

    Tengo una alv editable, utilizando el MF "REUSE_ALV_GRID_DISPLAY". Me gustaria comprobar cuando el usuario pulsa el ENTER o cambiar datos de una celda. Como puedo hacerlo?

    RECORDAD: NO es una OO ALV, se esta utilizando un modulo de funciones.

    Saludos
  • LouieBoy
    Member
    • ago
    • 86

    #2
    Buenas, por desgracia en los alvs por funcion no son muy versatiles, como mucho creo que podras registrar lo del enter, pero olvidate del evento on change.. a menos que no lo programes tu con un par de tablas internas y comparando, la cual cosa me parece una matada teniendo los objects....
    Para lo el ok code enter, deberias asignarle al enter un ok code desde el status, con eso y si sabes como funcionan los user command con los alvs por funcion deberias tener suficiente.

    Saludos,

    LouieBoy

    Comentario

    • robert_milan
      Senior Member
      • jun
      • 315

      #3
      Para los datos de la celda, deberias guardar los datos en una tabla interna auxiliar para despeus compara. por que asi tan facil no es
      Un Huevon No Inútil


      Solo di lo que piensas, a la mejor tienes la mejor respuesta....

      Si alguien ya lo hizo, copialo y cambiale las variables total es un codigo nuevo.....

      Si SAP lo hace se puede hacer, no me pidas hacer algo que SAP no ha hecho.....

      Consultor FI jr/ABAP Sr.

      Comentario

      • LouieBoy
        Member
        • ago
        • 86

        #4
        Lo que yo digo... una matada.... reinventemos la rueda señores..

        Saludos,

        LouieBoy

        Comentario

        • sanckok
          Member
          • oct
          • 40

          #5
          Hola,

          Perdona mi ignorancia Me podrias decir como le pongo el enter al ok code?

          Muchas gracias

          Comentario

          • robert_milan
            Senior Member
            • jun
            • 315

            #6
            hola hasta donde yo se el enter es nulo o blanco, si viene blanco es que le an dado enter al teclado.

            saludos
            Un Huevon No Inútil


            Solo di lo que piensas, a la mejor tienes la mejor respuesta....

            Si alguien ya lo hizo, copialo y cambiale las variables total es un codigo nuevo.....

            Si SAP lo hace se puede hacer, no me pidas hacer algo que SAP no ha hecho.....

            Consultor FI jr/ABAP Sr.

            Comentario

            • sanckok
              Member
              • oct
              • 40

              #7
              Si, pero cuando le doy a enter, no me hace nada el programa, es como si no detectase que he pulsado el enter

              Comentario

              • robert_milan
                Senior Member
                • jun
                • 315

                #8
                cuando el cursor se encuentra dentro del ALV, sap no entiende la instruccion enter, lo que debes hacer es poner o posicionar el cursor en el cuadro de comandos o de transacciones y luego darle enter.

                logicamente no es lo correcto pero no se me ocurre nada. Es mejor un doble clic
                Un Huevon No Inútil


                Solo di lo que piensas, a la mejor tienes la mejor respuesta....

                Si alguien ya lo hizo, copialo y cambiale las variables total es un codigo nuevo.....

                Si SAP lo hace se puede hacer, no me pidas hacer algo que SAP no ha hecho.....

                Consultor FI jr/ABAP Sr.

                Comentario

                • sanckok
                  Member
                  • oct
                  • 40

                  #9
                  Ok, gracias, no me sirve.
                  Ahora he encontrado una cosa y lo estoy probando
                  En la funcion REUSE_ALV_GRID_DISPLAY
                  he encontrado (o mejor dicho he visto) uno de los parametros que es I_GRID_SETTINGS, que tiene un campo EDT_CLL_CB que parece que puede tener algo que ver con lo que quiero.

                  Comentario

                  • vickxo
                    Senior Member
                    • nov
                    • 118

                    #10
                    posteron esto mas arriba...

                    Mira, posteron esto ams arriba y es buena opcion, segun yo


                    Primero agrego el evento DATA_CHANGED a la llamada del alv, en tu codigo seria en el gt_events[]
                    FORM eventtab_build USING it_events TYPE slis_t_event.

                    DATA: l_event TYPE slis_alv_event.

                    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
                    EXPORTING
                    i_list_type = 0
                    IMPORTING
                    et_events = it_events.


                    l_event-name = 'DATA_CHANGED'.
                    l_event-form = 'DATA_CHANGED'.
                    APPEND l_event TO it_events.
                    ENDFORM. "eventtab_build

                    Luego creo la rutina DATA_CHANGED para efectuar los cambios necesarios. El evento salta con el INTRO

                    FORM data_changed USING rr_data TYPE REF TO cl_alv_changed_data_protocol.
                    DATA : ls_mod_cell TYPE lvc_s_modi,
                    lv_value TYPE lvc_value .
                    data c_texto like tj30t-txt30.
                    * Inicialitzacions
                    data rs_selfield TYPE slis_selfield.

                    * Tractament de les dades modificades
                    SORT rr_data->mt_mod_cells BY row_id .
                    LOOP AT rr_data->mt_mod_cells INTO ls_mod_cell.
                    IF ls_mod_cell-fieldname = 'ESTAT'.
                    SELECT SINGLE txt30 INTO c_texto
                    FROM tj30t
                    WHERE stsma = 'ZCSIORD'
                    AND estat = ls_mod_cell-value
                    AND spras = sy-langu.
                    READ TABLE g_mseg index ls_mod_cell-row_id .
                    if sy-subrc = 0.
                    g_mseg-txt30 = c_texto.
                    modify g_mseg index ls_mod_cell-row_id.
                    call method rr_data->MODIFY_CELL
                    exporting i_row_id = ls_mod_cell-row_id
                    i_fieldname = 'TXT30'
                    i_value = c_texto.
                    ENDIF.
                    ENDIF.
                    ENDLOOP.
                    * MESSAGE i300.
                    ENDFORM.


                    Revisa de todos modos el posteo de modificar un alv...bye

                    Editado por última vez por vickxo; 11/03/2008, 14:30:42.
                    el tema esta en hacer la pregunta correcta...

                    Comentario

                    Trabajando...