Ver Mensaje Individual
  #1  
Viejo 18/03/11, 15:47:46
gonzalez.lazo gonzalez.lazo is offline
Junior Member
 
Fecha de Ingreso: dic 2008
Mensajes: 1
Question Problema con evento DATA_CHANGED en ALV (REUSE_ALV_GRID_DISPLAY) con campo editable

Hola a todos,

Tengo poca experiencia en ABAP y esta es la primera vez que posteo, ya que normalmente encuentro lo que necesito.

Ahora se me presenta un problema y no se como solucionarlo:

En un ALV tengo una columna que es editable (Campo Check). Necesito saber cuando se modifica para poder actualizarlo en la tabla interna correspondiente para luego poder hacer un proceso de validaciones y almacenamiento en una Tabla Trasparente Z.

Entiendo que tengo que capturar el evento DATA_CHANGED y efectivamente este evento captura la acción de hacer click en el check pero al final de procesar el Form del evento me sale una ventana de Log de Errores.

El campo Texto de Mensaje del Log de Errores dice lo siguiente:
- El campo IT_SALIDA1-CHECK no existe en Dictionary

Este es el código del Form DATA_CHANGED

**********************************************************
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,
c_texto TYPE c.

* 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 = 'CHECK'.
CLEAR it_salida1.
READ TABLE it_salida1 INDEX ls_mod_cell-row_id.
IF sy-subrc = 0.
it_salida1-check = ls_mod_cell-value.
c_texto = ls_mod_cell-value.
MODIFY it_salida1 INDEX ls_mod_cell-row_id.
CALL METHOD rr_data->modify_cell
EXPORTING
i_row_id = ls_mod_cell-row_id
i_fieldname = 'CHECK'
i_value = c_texto
i_tabix = sy-tabix.

ENDIF.
ENDIF.
ENDLOOP.
* MESSAGE i300.

ENDFORM. "DATA_CHANGED

**********************************************************

A alguien se le ocurre como puedo hacer con esto, si voy bien encaminado o mejor hacerlo de otra forma?

He mirado de hacerlo con objetos, pero tendría que modificar todo el programa y no quiero, ya que lo tienen en producción.

Muchas gracias por su atención y espero que puedan ayudarme....

Saludos...
Responder Con Cita