Doppelklick-Event mit Transaktionsabsprung

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Doppelklick-Event mit Transaktionsabsprung

Beitrag von Chopper (ForumUser / 8 / 5 / 0 ) »
Hallo an alle.

ich weiß, das Thema wurde schon oft angesprochen, aber ich finde trotz Google zu keiner Lösung.

In meinem ALV-Grid soll nach Doppelklick auf eine Zeile eine Transaktion aufgerufen werden, die automatisch mit Parametern befüllt wird und das Selektionsbild überspringen soll.
Folgenden Code habe ich in meine Doppelklick Implementation geschrieben.

Code: Alles auswählen.

CLASS: lcl_handler IMPLEMENTATION.
  METHOD on_double_click.

    READ TABLE it_out INTO wa_out INDEX i_selfield-tabindex.
 
    SET PARAMETER ID 'MAT' FIELD wa_out-matnr.

    CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

  ENDMETHOD.
ENDCLASS.
Der Aufruf der Transaktion funktioniert. Mein einziges Problem ist nur, dass ich es nicht hinbekomme, den Zeilenindex des Doppelklicks auszulesen.
Wie übergebe ich meinem i_selfield-tabindex den Zeilenindex?

Danke schon mal für die Hilfe. :)
Lg
Zuletzt geändert von Chopper am 24.05.2018 08:39, insgesamt 2-mal geändert.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von Romaniac (Specialist / 198 / 57 / 26 ) »
Hallo Chopper,

das Double click event sollte einen zweiten Parameter column haben in der der Name der Spalte steht, hier ein Beispiel für Hotspotclick:

Code: Alles auswählen.

CLASS lcl_event_handle IMPLEMENTATION.
* Methode für Hotspotclick
  METHOD on_hotspot_click.

* Display component lines
    CASE column.
      WHEN 'BELNR'.
        PERFORM display_fi_document
          USING row.

      WHEN 'EBELN'.
        PERFORM display_purchase_order
          USING row.
Geht nicht gibts nicht

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
Hallo Chopper,

die Methode braucht das Event : FOR EVENT double_click OF cl_salv_events_table in der Methodendefinition.

Dann bekommst du als Importparameter die Row und Column
Es gibt 10 Menschen die binär verstehen :)

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
4byte hat geschrieben:Hallo Chopper,

die Methode braucht das Event : FOR EVENT double_click OF cl_salv_events_table in der Methodendefinition.

Dann bekommst du als Importparameter die Row und Column
Aber nicht automatisch; Das muss extra deklariert werden!
In der SE24 im Editor ist das im Methoden-Tab das kleine unscheinbare blaue Böppel-Icon, dass die Eventparameter übernimmt.
Ansonsten in der Methodendefinition die Code-Vervollständigung nutzen; da zeigt der Editor die möglichen Parameter an.

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »

Code: Alles auswählen.

  METHOD on_double_click.
       i_selfield      TYPE slis_selfield.
Was verwendest du denn?
SLIS_SELFIELD kommt doch aus den REUSE-Funktionsbausteinen wohingegen on_double_click eher die Methodik für die ALV-Klassen ist
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Ich benutze gerne Hotspots, die sind dann aber für bestimmte Spalten, nicht auf ganze Zeilen. Aber das importieren von row könntest du doch in der Klassendefinition auch machen, das müsste gehen.

Code: Alles auswählen.

CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS:

    on_link_click
    FOR EVENT link_click OF cl_salv_events_table
    IMPORTING row column.

ENDCLASS.

Code: Alles auswählen.

CLASS lcl_handle_events IMPLEMENTATION.

  METHOD on_link_click.

    READ TABLE gt_auswertung INTO wa_auswertung INDEX row.

    IF sy-subrc = 0.

      CASE column.
         ...
         WHEN 'MATNR'.
            IF wa_auswertung-matnr IS NOT INITIAL.
               SET PARAMETER ID 'MAT' FIELD wa_auswertung-matnr.
               CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
             ENDIF.
         ...
      ENDCASE.

    ENDIF.

  ENDMETHOD.

ENDCLASS.
Bei dir also dann in etwa so:

Code: Alles auswählen.

CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS:

    on_double_click
    FOR EVENT double_click OF cl_salv_events_table
    IMPORTING row column.

ENDCLASS.

CLASS lcl_handle_events IMPLEMENTATION.

  METHOD on_link_click.

    READ TABLE it_output INTO wa_output INDEX row.
 
    SET PARAMETER ID: 'CV1' FIELD wa_output-doknr,
                                  'CV2' FIELD wa_output-dokar.

    gw_bdcdata-program = 'SAPLCV110'.
    gw_bdcdata-dynpro = '100'.
    gw_bdcdata-dynbegin = 'X'.
    APPEND gw_bdcdata TO gt_bdcdata.

    CALL TRANSACTION 'CV03N' USING gt_bdcdata MODE 'E'.

  ENDMETHOD.
ENDCLASS.

Folgende Benutzer bedankten sich beim Autor Legxis für den Beitrag:
Chopper

( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »
ewx hat geschrieben:In der SE24 im Editor ist das im Methoden-Tab das kleine unscheinbare blaue Böppel-Icon, dass die Eventparameter übernimmt.
In etwas moderneren Systemen ist das "unscheinbare Böppel-Icon" sogar beschriftet. Nur durch die Beschriftung habe ich es letztens selber erst entdeckt und dann auf einem älteren System gesehen, dass es wohl schon länger vorhanden ist. Für diejenigen, die nicht wissen was ewx meint:
Unbenannt.png
Und noch ein Hinweis: Der Böppel übenimmt nicht das "SENDER"-Attribut
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
ewx hat geschrieben: Aber nicht automatisch; Das muss extra deklariert werden!
In der SE24 im Editor ist das im Methoden-Tab das kleine unscheinbare blaue Böppel-Icon, dass die Eventparameter übernimmt.
Ansonsten in der Methodendefinition die Code-Vervollständigung nutzen; da zeigt der Editor die möglichen Parameter an.
Ja ich hab den Importingparameter vergessen anzugeben :oops:
Es gibt 10 Menschen die binär verstehen :)

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von Chopper (ForumUser / 8 / 5 / 0 ) »
Danke für die schnellen Antworten. In meiner Klassendefinition habe ich jetzt die Klasse cl_salv_events_table implementiert.
Aber an welcher Stelle muss ich dann das Objekt erzeugen? Muss ich im PAI-Modul mein ok_code dann auch nach dem Doppelklick ('&IC1') abfragen?

Das wäre mein Code gewesen.

Code: Alles auswählen.

  DATA: gr_events TYPE REF TO lcl_handler.
DATA: lr_events TYPE REF TO cl_salv_events_table.

CREATE OBJECT gr_events.
SET HANDLER gr_events->on_double_click FOR lr_events. 
Lg Chopper

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
Ich erzeuge das Objekt an der Stelle, an der ich auch das ALV erzeuge.
Im PAI Block wird dann nicht nach dem Doppelklick abgefragt. Der Event Handler "hört" darauf, ob jemand " Hallo ich hab doppel auf das ALV geklickt" schreit. Der Event Handler merkt dann:"Super dann bin ja ich damit gemeint. Ich kann mein Coding ausführen".

Ich sehe Events immer so: Einem der rum schreit(ALV) und Zuhörer(Handler) der dann auf ein Schlüsselwort(double_click) reagiert.

Deswegen(Bitte micht korrigieren) sind die EVENTS entkoppelt von den PAI und PBO Bereichen.

EDIT: NEIN sind sie ja nicht, da ich ja den ok_code vom doppelklick event im PAI Bereich abfangen kann??
Es gibt 10 Menschen die binär verstehen :)

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von Chopper (ForumUser / 8 / 5 / 0 ) »
4byte hat geschrieben:Ich erzeuge das Objekt an der Stelle, an der ich auch das ALV erzeuge.
Also vor dem set table for first Display? Dann gibt er mir die Fehlermeldung aus, dass die Referenz auf das Behandlerobjekt nicht NULL sein darf.
Muss ich das dann auch abfangen mit:

Code: Alles auswählen.

IF lr_events IS NOT INITIAL.
      SET HANDLER gr_events->on_double_click FOR lr_events.
      CREATE OBJECT gr_events.
    ENDIF.

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
Hallo Chopper,

nein nach dem

Code: Alles auswählen.

io_alv->set_table_for_first_display( .... )  .... 
Entschuldige das habe ich schlecht beschrieben , mein Fehler :x

Also du erzeugt dein ALV- Objekt.

Dann kommt dein

Code: Alles auswählen.

io_alv->set_table_for_first_display( )
Danach wird / werden Event Handler gesetzt:

Code: Alles auswählen.

SET HANDLER double_click FOR io_alv 

Folgende Benutzer bedankten sich beim Autor 4byte für den Beitrag:
Chopper

Es gibt 10 Menschen die binär verstehen :)

Re: Doppelklick-Event mit Transaktionsabsprung

Beitrag von Chopper (ForumUser / 8 / 5 / 0 ) »
Danke für die Hilfe, es hat geklappt :)
Habe jetzt aber wieder die Klasse cl_gui_alv_grid verwendet mit dem Parameter es_row_no.

Die salv-Klasse hat komischerweise immer einen Kurzdump geworfen.

Vielen Dank :D

Seite 1 von 1

Vergleichbare Themen

2
Antw.
5736
Views
Event (Doppelklick) im Tree auslösen
von easy123 » 13.08.2013 11:45 • Verfasst in ABAP® für Anfänger
4
Antw.
4957
Views
cl_salv_table: Simple ALV Anzeige mit Event Doppelklick
von hfahrian » 27.01.2014 16:17 • Verfasst in ABAP Objects®
0
Antw.
2295
Views
ALV GRID: Doppelklick-Event wird mehrfach gefeuert
von cosmo » 07.09.2007 09:30 • Verfasst in ABAP Objects®
13
Antw.
14520
Views
ALV Grid mit Transaktionsabsprung
von Adrian » 17.09.2012 14:22 • Verfasst in ABAP® für Anfänger
0
Antw.
1153
Views
WebDynpro: Event Handler für externes Event
von Tommy Nightmare » 20.06.2018 09:05 • Verfasst in ABAP Objects®

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.