MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #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
  #2  
Viejo 22/03/11, 14:42:10
gib8107 gib8107 is offline
Member
 
Fecha de Ingreso: may 2006
Mensajes: 44
Seguramente tienes alguna diferencia entre el nombre de la tabla que mandas y el que esta declarado.

de todas formas algunas veces para que se refresque el dato de la tabla interna es ncesesario poner


despues de eso se refre4scan los datos cambiados en la tabla interna.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 22:27:22.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web