Metodo / Funciones para obtener los datos del ALV a la tabla interna.
Este paso es especialmente util cuando el ALV  es Editable y entonces queremos saber cuales son los cambios que sufre la data.

En tu form para capturar el comando de usuario puedes colocar el siguiente código que te permite pasar los datos que están en el ALV la tabla interna que usaste para cargarlo al inicio.

FORM user_command USING lv_okcode LIKE sy-ucomm l_selfield TYPE slis_selfield.
 
* l_selfield este campo solo nos permite saber la ultima columna donde el usuario coloco el 
* puntero del ratón antes de pulsar sobre un boton en el alv o un atajo con el teclado como "* Ctrl+J" ademas tambien nos permite saber el valor de la celda. 

   CASE lv_okcode.
*  cuando el usuario presionó sobre el botón modificar
    WHEN 'MODIFY'.
 
* mover los datos del ALV tabla a la tabla interna.
      DATA : ref_grid TYPE REF TO cl_gui_alv_grid. "new
 
      IF ref_grid IS INITIAL.
        CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
          IMPORTING
            e_grid = ref_grid.
      ENDIF.
 
      IF NOT ref_grid IS INITIAL.
        " Ahora que tenemos la referencia al alv le pedimos nos pases los datos
        " a la tabla interna.
        CALL METHOD ref_grid->check_changed_data.
      ENDIF.
      PERFORM USAR_DATOS_CAMBIADOS.
* por ultimo si hacemos mas cambios los datos de la tabla interna pedimos al ALV 
* que refresque sus datos.
      l_selfield-refresh = c_check.
 
ENDFORM.                    "USER_COMMAND

Esto me funciono trabajando con los ALV con catalogo y layout LVC
LVC_S_FCAT, LVC_T_FCAT, LVC_T_LAYO, LVC_S_LAYO  
Bueno espero les sea de Ayuda...

Comentarios

Entradas populares de este blog

Cargar Texto estándar y mostrar en un POPUP

Crear un campo de entrada, parametro, como un listbox en abap.

Leer Parametros de Dynpro.