Lic Ciencias Computacionales
Es para capturar si modifican un dato de un ALV para un campo editable
A la función 'REUSE_ALV_GRID_DISPLAY' sele han de pasar dos parametros, que
son:
i_grid_settings = i_lvc_s_glay
it_events
= tab_events[]
Los datos que han de tener estos parametros son:
1. i_lvc_s_glay:
DATA i_lvc_s_glay LIKElvc_s_glay.
i_lvc_s_glay-edt_cll_cb = 'X'.
2. tab_events:
FORM eventtab_build USING it_events TYPE slis_t_event.
*
DATA: l_event TYPE slis_alv_event.
Hago la llamada de todos los eventos
CALLFUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events
= it_events.
*
Agrego a la tabla el evento DATA_CHANGED ya que no lo trae la
rutina anterior
l_event-name ='DATA_CHANGED'.
l_event-form = 'DATA_CHANGED'.
APPEND l_event TO it_events.
ENDFORM.
"eventtab_build
Luego se tiene que crear el FORM DATA_CHANGED para insertar el código que
quieres realizar
FORMdata_changed USING rr_data TYPE REF TO
cl_alv_changed_data_protocol.
DATA : ls_mod_cell TYPE lvc_s_modi.
DATA : c_texto LIKE tj30t-txt30.
*
tratar
*
*
SORT rr_data->mt_mod_cells BY row_id.
LOOP AT rr_data->mt_mod_cells INTO ls_mod_cell.
Compruebo que el campo que se ha modificado es el que quiero
IF ls_mod_cell-fieldname = 'ESTAT'.
Haces las comprobaciones necesarias
SELECTSINGLE txt30 INTO c_texto
FROM tj30t
WHERE stsma = 'ZCSIORD'
AND txt04 = ls_mod_cell-value
AND spras = sy-langu.
READ TABLE g_mseg INDEX ls_mod_cell-row_id .
IF sy-subrc = 0.
Con el resultado,modifico el campo que quiero
g_mseg-txt30 = c_texto.
*
*
en el ALV
Primero modifico la tabla interna
MODIFY g_mseg INDEX ls_mod_cell-row_id.
Luego hago el refresh del campo que quiero que semodifique
CALL METHOD rr_data->modify_cell
EXPORTING
i_row_id
= ls_mod_cell-row_id
i_fieldname = 'TXT30' "Aquí va el campo que quieres
modificar
i_value
= c_texto. "Aquí el texto que...
Regístrate para leer el documento completo.