MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   ALV OO doble click sobre celda (foro/showthread.php?t=45269)

smartin 14/09/11 03:36:08

ALV OO doble click sobre celda
 
Amigos foreros,

tengo un ALV OO, y necesito que cuando se de doble click sobre una celda tome el dato que tiene (en este caso una factura) y llame a una transaccion, no se como debo hacerlo; agradeceria que me enviaran un ejemplo.


gracias de antemano

asclevius 14/09/11 15:24:07

hola smartin!!!!!!

te cuento que yo tambien estoy en las mismas, si ves mi post de ayer, estoy haciendo lo mismo que tu y lo unico que he encontrado y me ha "servido" (por que aun no lo he terminado) es que el evento doble clic debe ser manejada con la clase CL_SALV_EVENTS_TABLE y que en esta clase hay un metodo que es GET_EVENT.

estoy leyendo sobre este metodo para mayor claridad pero aun no he implementado nada que me sirva, si lo termino primero que tu te posteare el codigo pero si tu lo terminas te pido que porfavor postees el codigo para yo tambien salir de la duda

Espero que te haya sido de ayuda almenos un poco

X200 14/09/11 17:44:04

Lo que deberias preguntarte primero es:

¿Por que debe ser doble click?

¿Es por un requerimiento en especial?

De lo contrario, si solo necesitas la informacion de una columna en especial, lo mejor seria hacer esa columna "hotspot". Con lo cual podrias crear el evento hotspot, handlear ese evento y crear una rutina que haga un read a la tabla con los parametros que la misma le proporciona. Y una vez hecho esto, hacer un CALL TRANSACTION de la transaction que necesitas, con los datos de esa celda en particular.

Saludos

DCErick 14/09/11 18:05:51


Estoy de acuerdo contigo xD.

Ademas ese tema ya se respondio muchas veces en el foro.

asclevius 14/09/11 18:15:49

pues la verdad para mi es doble click por un requerimiento del cliente, y ademas DCErick porfavor si esta duda ya se repondio muchas veces en este foro me podrias colaborar diciendome en que parte ya que he revizado las primeras 40 paginas y no lo he visto.

te lo agradeceria enormemente :D

DCErick 14/09/11 18:17:11


Eventos en ALV OO

DCErick 14/09/11 18:21:43


DCErick 14/09/11 18:23:22


DCErick 14/09/11 18:26:36


¿Estas usando la clase cl_salv_table?

asclevius 14/09/11 18:28:58

si estoy usando la clase cl_salv_table para crear el ALV y la clase CL_SALV_EVENTS_TABLE para el evento boble click



Otra cosita:

de hecho tenias razon, ya esta resuelto pero no por OO sino por call function

DCErick 14/09/11 18:30:32


Depende de que clase uses para hacerlo. Para la clase que tu usas no recuerdo.

La solucion está para cl_gui_alv_grid.

saludos,

asclevius 14/09/11 18:33:36

si me puedes orientar por cualquier clase te lo agradeceria por que estoy perdido la verdad con esto, ya llevo 3 dias tratandolo de hacer y la verdad soy muy nuevo en ABAP

DCErick 14/09/11 18:37:42


creo que este te ayudara:

asclevius 14/09/11 18:39:49

muchisisisisimas gracias lo voy a revizar ya mismo

asclevius 15/09/11 04:12:39

mira este es el metodo que cree, tiene un problema y es que no he podido poner el evento para una sola columna pero mira tento un metodo que es

------------------------------

method MOSTRARDATOS.


DATA lcl_mostrar type REF TO cl_salv_table.

DATA lr_events TYPE REF TO cl_salv_events_table. ",


call method cl_salv_table=>factory
IMPORTING
R_SALV_TABLE = lcl_mostrar
changing
t_table = IT_vbrk.


* create events object
lr_events = lcl_mostrar->get_event( ).

* setup handler for double click
SET HANDLER HANDLE_DOUBLE_CLICK FOR lr_events.
lcl_mostrar->display( ).


endmethod.


------------------------------------

y esta el otro metodo que hace el call transaction


----------------------------------------------------

method HANDLE_DOUBLE_CLICK.


call TRANSACTION 'FK03' AND SKIP FIRST SCREEN.

endmethod.



espero que te oriente mejor!!!!!!!!!!

DCErick 15/09/11 14:07:13

El doble click funciona para todas las columnas del ALV, el nombre de la columna lo pone en la estructura "column"

class lcl_event_handler definition.


Usa column en la implentación del handler para que valides si el nombre de la columna a la que dieron doble click es la que necesitas. Si lo ocupas para una sola columna deberias de usar mejor el HotSpot como lo comentaron al incio, si es obligatorio el doble click pues como te menciono en "column" tienes la info sobre la columna que clickearon y con eso puedes hacer tus validaciones, si ninguna otra columna tendrá funcionalidad con el doble click podrias usar el parametro "row" para tener el index del registro al que dieron doble click y obtener la informacion de tu tabla interna y hacer tu call.

asclevius 16/09/11 01:24:55




DCErick que pena pero no entendi el post T_T disculpame pero me puedes explicar lo que dijiste????? lo que mi usuario necesita (que me cae mal por que todos los dias me esta cambiando el requisito) es que cuando haga click en un registro de la columna cliente me coja ese dato y se vaya a la transacción FK03 y coloque los datos del cliente


la verdad no se si eso es posible, como te digo soy muy nuevo en abap entonces no se muchas cosas.

se te agradece cualquier ayuda y de cualquiera!!!!!!!!!!!

asclevius 16/09/11 15:21:04

aca esta el alv con el doble click limitado a una columna espero que esto le sirva a la persona que postio inicialmente en el foro :D

A mi me sirvio de maravilla aunque me falta coger el dato de la columna :D


---------------------------------------------------------
method MOSTRARDATOS.


DATA lcl_mostrar type REF TO cl_salv_table.

DATA lr_events TYPE REF TO cl_salv_events_table. ",


call method cl_salv_table=>factory
IMPORTING
R_SALV_TABLE = lcl_mostrar
changing
t_table = IT_vbrk.


* create events object
lr_events = lcl_mostrar->get_event( ).

SET HANDLER HANDLE_DOUBLE_CLICK FOR lr_events.
lcl_mostrar->display( ).


endmethod.



-----------------------------------------------------

method HANDLE_DOUBLE_CLICK.

if column = 'CLIENTE'. " CLIENTE es el nombre en la tabla interna de la columna del avl mostrado
call TRANSACTION 'FK03' AND SKIP FIRST SCREEN.
ENDIF.

--------------------------------------------------------


exitos y mucha suerte

DCErick 19/09/11 13:42:34


En pocas letras era esto xD.


Husos Horarios son GMT. La hora en este momento es 03:36:20.

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