MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Seleccionar registros en ALV (foro/showthread.php?t=27067)

elena_mr 29/12/08 12:43:33

Seleccionar registros en ALV
 
Buenos días,
Por favor, a ver si alguien me puede echar una mano con esto:
He creado un ALV GRID con tres campos editables, y me piden que cuando se modifique alguno de estos campos se marque automáticamente la fila correspondiente (es decir, quede seleccionado el registro para el cual se ha hecho 1 o varias modificaciones en sus campos editables).
Muchas gracias de antemano por vuestra ayuda.
Elena

DavidXD_XD 29/12/08 19:26:56

Hola ... probe un metodo y funciono, intenta esto ...


Ojo que ese codigo va en el PBO, nos cuentas como te fue :D

elena_mr 30/12/08 08:15:28

¿Se puede hacer sin metodos?
 
Muchas gracias David,
el problema es que ya tengo completamente terminado el alv, y querría tener que modificar lo menos posible...
Para mostrar el alv utilizo lo siguiente:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'ALV_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout = sg_layout
it_fieldcat = tg_fieldcat[]
i_save = c_save
i_grid_settings = sg_grid_settings
TABLES
t_outtab = it_tabla3.

Si utilizo un metodo creo que no puedo pasarle el status, el user command, el grid_settings ,... y me hacen falta.
Muchas gracias
Elena

francesc 30/12/08 09:17:26

En el catálogo de campos tendrás el campo de selección como un char(1), a este campo prueba, en modo debugging a pasarle un valor ( .... = 'x' ) justo antes de la llamada a la función y ver si en el ALV te marca el registro. Si es así entonces esta 'marca' la tienes que hacer en el perform del user-command, recuerda también que el campo rs_selfield-refresh = 'X' para que te actualice el ALV.

elena_mr 30/12/08 11:23:37

Necesito más ayuda
 
Gracias francesc,
pero creo que no puede ser nada del catálogo de campos, ya que lo que quiero seleccionar son filas, no columnas, y en el catálogo de campos defino columnas ¿no?.
Me estoy volviendo loca con este tema...

francesc 30/12/08 13:07:51

Si marcas la casilla de selección, te tiene que salir la línea marcada ( lo que antes comentaba que hicieras con un break-point justo antes de la llamada a la función, marcas el campo de selección de un registro cualquiera .... = 'X' y en el ALV te tiene que aparecer el registro marcado )

elena_mr 07/01/09 08:37:21

¿Campo de selección??????
 
Gracias Francesc,
creo que el problema es precisamente lo que tú me planteas, no sé qué campo toma el valor 'X' cuando se marca una fila.
Si alguien me lo puede decir, a lo mejor puedo seguir por ahí.
Gracias a todos.

Mauricio Hidalgo 07/01/09 11:36:08

Para interactuar con la fila seleccionada en el ALV basado en MF.

1. A tu tabla interna it_tabla3, agregale un campo, este nuevo campo es Caracater de largo 1.

2. A la estructura GS_LAYOUT que estás pasando al MF 'REUSE_ALV_GRID_DISPLAY' agrega lo siguiente

gs_layout-box_fieldname = 'FLAG'.

Don de FLAG es el nombre del campo que te pedí agregar en el punto 1.

Con eso, cuando te marquen una fila del ALV ése campo, en este caso FLAG, quedará con una X indicando que la fila está seleccionada.

Espero te ayude, Saludos

elena_mr 07/01/09 12:22:48

Graciaaaaaaaaaaaaaaas
 
Muchisimas gracias,
era eso lo que estaba buscando, ahora sólo me falta que se me marque el flag con X cuando se modifique alguno de los campos editables del ALV (también me valdría cuando dé un enter creo) el problema es que no encuentro el valor adecuado del sy-ucomm donde poner el flag a X.
Alguna idea???
Lo dicho muchas gracias, me ha sido muy útil.

francesc 07/01/09 12:56:15

Ponle un break-point en la rutina del user-command del ALV (la rutina declarada en el i_callback_user_command de la función REUSE.... del ALV ).


Husos Horarios son GMT. La hora en este momento es 12:37:00.

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