MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   evento ENTER o Cambio de datos en ALV (no OO) (foro/showthread.php?t=11313)

wlade 26/02/08 17:49:16

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 27/02/08 08:01:17

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

robert_milan 27/02/08 08:11:03

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 :D

LouieBoy 27/02/08 08:19:30

Lo que yo digo... una matada.... :D reinventemos la rueda señores.. :cool:

Saludos,

LouieBoy

sanckok 11/03/08 10:29:18

Hola,

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

Muchas gracias

robert_milan 11/03/08 10:49:00

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

saludos

sanckok 11/03/08 10:57:15

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

robert_milan 11/03/08 11:19:36

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 :D

sanckok 11/03/08 11:23:03

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.

vickxo 11/03/08 14:28:36

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



Husos Horarios son GMT. La hora en este momento es 12:36:48.

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