SAP Jobsuche bei DV-Treff


Suchen
Mettwurst
  • Mettwurst
  • SAP Forum - Neuling Thema Starter
vor 20 Jahre
Hallo!

Bin leider ein "fast totaler Anfänger" und bräuchte mal tatkräftige Hilfe in Sachen HOTSPOTS.

Also... habe eine ALV-Liste gebastelt und das soll per Hotspot bei einer Auswahl auf bestimmte Felder in verschiedene Unterprogramme gelinkt werden.

Wär super, wenn mir irgendwer mal ein paar Tips geben kann wie man sowas aufbaut, welche Syntax etc.
Bin wie gesagt noch nicht sehr geübt in ABAP.

THX im Vorraus!

MW
Tequila69
vor 20 Jahre
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


Benutzer, die gerade dieses Thema lesen