#1
|
|||
|
|||
Ayuda eventos alv oo
Hola abaperos.
Tengo una duda sobre el evento del alv oo que tengo que utilizar. En mi desarrollo quieren que cuando señale una linea del alv compruebe los datos que hay en esa linea y segun lo que halla haga una serie de acciones. Yo se hacer esto señalando la linea y dando a un boton pero hay algun evento que pueda utilizar que salte segun señalo la linea. Sin tener que dar a ningun boton ni nada solo que salte al momento que selecciono la linea. Muhcas gracias. Un saludo. |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
Probaste el evento double_click?? o el BUTTON_CLICK??
Saludos |
#4
|
|||
|
|||
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. |
#5
|
|||
|
|||
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 | |
|
|