Hallo,
da hast Du Dir zum Anfang ja direkt mal was kompliziertes ausgesucht. Dann will ich zunächst mal verbal versuchen Dir zur erklären was zu tun ist.
Zunächst mal musst Du Dir in Deinem Programm eine lokale Klasse anlegen. In dieser Klasse muß eine Ereignis-Behandler-Methode definiert sein, die auf das Ereignis "hotspot_click" aus Deinem ALV-Grid reagiert.
Nachdem Dein ALV-Grid mit Create Objekt erzeugt worden ist musst Du über ein Objekt Deiner Klasse und den SET Handler-Befehl auf die Ereignisse des ALV-Gui-Objekts "warten".
Da das mit der verbalen erklärerei etwas kompliziert ist versuche ich mal hier Quelltext zu posten...
Zunächst mal ein Beispiel, für die lokale Klasse:
*$*$*--------------------------------------------------------------*$*$*
* Lokale Klasse für Ereignis-Behandler zum ALV_Grid
*$*$*--------------------------------------------------------------*$*$*
* Definition Klasse ****************************************************
CLASS dm_alv_handler DEFINITION.
PUBLIC SECTION.
* Konstruktor für CREATE OBJECT
METHODS constructor
IMPORTING report_id TYPE sy-repid.
* Behandler für Doppelklick
METHODS doubleclick
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
* Behandler für HotSpot
METHODS hotspotclick
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id.
PRIVATE SECTION.
DATA: dm_alv_grid_report TYPE sy-repid.
ENDCLASS.
* Implementierung Klasse ***********************************************
CLASS dm_alv_handler IMPLEMENTATION.
*----------------------------------------------------------------------*
* Konstruktor-Methode (CREATE OBJECT ) *
*----------------------------------------------------------------------*
* Zuweisung Report für Behandler-FORM-Routine *
*----------------------------------------------------------------------*
METHOD constructor.
MOVE report_id TO dm_alv_grid_report.
ENDMETHOD. " CONSTRUCTOR
METHOD doubleclick.
PERFORM alv_doubleclick IN PROGRAM (dm_alv_grid_report)
USING e_row e_column.
ENDMETHOD. " DOUBLEKLICK
METHOD hotspotclick.
PERFORM alv_doubleclick IN PROGRAM (dm_alv_grid_report)
USING e_row_id e_column_id.
ENDMETHOD. " HOTSPOTCLICK
ENDCLASS.
**** Der Aufruf in Deinem Programm kann dann z.B. wiefolgt aussehen.
DATA: dm_alv_grid_handler TYPE REF TO dm_alvgrid_handler.
* Erzeugen Objekt zur "lokalen Behandler-Klasse"
CREATE OBJECT dm_alv_grid_handler
EXPORTING report_id = in_report.
* Registrieren Behandler-Methode (Doppleklick)
SET HANDLER dm_alv_grid_handler->doubleclick
FOR ("Referenzvariable für ALV-GRID").
* Registrieren Behandler-Methode (HotspotKlick)
SET HANDLER dm_alv_grid_handler->hotspotclick
FOR ("Referenzvariable für ALV-GRID").
*** WICHTIG !!! Die FORM-Routine, die in den Methoden der lokalen Klasse aufgerufen wird muss in dem Programm zum ALV-Grid vorhanden sein. In den Parametern r_row und e_column stehen Feldname und Zeile in der der Hotspot oder Doppelklick ausgeführt wurde.
...damit solltest Du jetzt zurecht kommen.
Viel Spass beim ausprobieren...
Gruß,
Tequila