|
#1
|
|||
|
|||
Amigo si te entendi bien, lo que quieres es que cuando le des click a una linea de tu ALV te ejecute un evento, bueno lo que tienes que hacer es que cuando ejecutes el ALV "REUSE_ALV_GRID_DISPLAY" activa el USER_COMMAND y creas un Forms USER_COMMAND y ahí, programes lo el evento que tu quieres que haga. Ejemplo:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = SY-REPID I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE' I_CALLBACK_USER_COMMAND = 'USER_COMMAND' IS_LAYOUT = LAYOUT IT_FIELDCAT = FIELDCAT IT_SORT = GT_SORT * I_SAVE = 'X' TABLES T_OUTTAB = T_OUT_TAB EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. DATA: wa_alv LIKE T_OUT_TAB. CASE r_ucomm. WHEN '&IC1'. "***********Doble Click******** evento que quiro. ENDCASE. ENDFORM. Espero que te ayude, suerte. |
#2
|
|||
|
|||
Probaste el evento double_click?? o el BUTTON_CLICK??
Saludos |
#3
|
|||
|
|||
Creo que lo que necesitas es esto, si es un ALV OO.
Fijate en el hot_spot, no en el DATA_CHANGED, que es para que salte cuando haces modificaciones. ************************************************************************ * Definición de CLASES ************************************************************************ * CLASS lcl_co_application DEFINITION DEFERRED. DATA: g_application TYPE REF TO lcl_co_application. *----------------------------------------------------------------------* * CLASS cl_application DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_co_application DEFINITION. PUBLIC SECTION. METHODS: handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTING er_data_changed, handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING e_row_id e_column_id es_row_no. ENDCLASS. "cl_application DEFINITION *&---------------------------------------------------------------------* *& Class (Implementation) cl_application *&---------------------------------------------------------------------* * Text *----------------------------------------------------------------------* CLASS lcl_co_application IMPLEMENTATION. METHOD handle_data_changed. * perform f_handle_data_changed using er_data_changed. ENDMETHOD. "handle_data_changed_cli METHOD handle_hotspot_click. * perform f_handle_hotspot_click using e_row_id e_column_id es_row_no. ENDMETHOD. "handle_data_changed_cli ENDCLASS. "cl_application AL CREAR EL CONTENEDOR Y EL ALV ANTES DE LLAMARLO DEBES INCLUIR EL METODO: *&---------------------------------------------------------------------* *& Form F_ALV_0017 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM f_alv_0017 . DATA: lt_toolbar_excluding TYPE ui_functions. IF g_container_alv IS INITIAL. * Objeto contenedor del ALV CREATE OBJECT g_container_alv EXPORTING container_name = 'ALV_MODELOS_PROYECTOS'. "'ALV_CONTAINER'. * Objeto ALV CREATE OBJECT g_grid EXPORTING i_parent = g_container_alv. * perform f_register_edit_event using g_grid. CREATE OBJECT g_application. SET HANDLER g_application->handle_data_changed FOR g_grid. SET HANDLER g_application->handle_hotspot_click FOR g_grid. y PARA QUE VEAS COMO DECLARAR LOS PARAMETROS FORMALES Y UN PEQUEÑO EJEMPLO : *&---------------------------------------------------------------------* *& Form F_HANDLE_HOTSPOT_CLICK *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_E_ROW_ID text * -->P_E_COLUMN_ID text * -->P_ES_ROW_NO text *----------------------------------------------------------------------* FORM f_handle_hotspot_click USING pi_row_id TYPE lvc_s_row pi_column_id TYPE lvc_s_col pi_row_no TYPE lvc_s_roid. * Ini mod IVALLEJO ******************************************************* CLEAR w_co04_0002. READ TABLE i_co04_0002 INTO w_co04_0002 INDEX pi_row_id. IF sy-subrc = 0. CASE pi_column_id-fieldname. WHEN 'OBSERV'. CALL SCREEN 9010 STARTING AT 130 2. ENDCASE. ENDIF. * End mod IVALLEJO ******************************************************* ENDFORM. " F_HANDLE_HOTSPOT_CLICK SINO INTRODUCE UN "BREAK usuario" y MEDIANTE EL DEBUG ANALIZA LAS TABLA Y VARIABLES Y LOS DATOS A LOS QUE TIENES ACCESO DENTRO DEL FORM. Supongo que esto te servira, suerte. |
#4
|
|||
|
|||
Excelente tu respuesta, a mi me pidieron exactamente lo mismo , solo que el mio es un alv oo y el campo sel_mode es A, por lo que automaticamente aparece una columna de seleccion, hice tu ejemplo pero no me funciona no se si me falta algo que declarar las clases y crear el objeto en mi alv.....
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|