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.
|