ALV_Event DOUBLE_CLICK

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

Getting started ... Alles für einen gelungenen Start.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

ALV_Event DOUBLE_CLICK

Beitrag von Boon (ForumUser / 12 / 4 / 0 ) »
Hi,

ich würde gerne etwas ausgeben lassen, wenn ich auf eine Zeile doppelt klicke. Leider erhalte ich immer folgende Fehlermeldung:
"Die Ausnahme 'CX_SALV_OBJECT_NOT_FOUND' wurde ausgeöst." Leider fällt mir zur Fehlerbehebung kein Ansatz ein.

Implementierung des Codes zum Event Handling:

Code: Alles auswählen.

METHODS:
        on_double_click FOR EVENT double_click OF cl_salv_events_table
          IMPORTING row column.
METHOD on_double_click.
    DATA: message TYPE string
         ,row_c(4) TYPE c.

    row_c = row.

    CONCATENATE 'ROW' row_c 'Column' column
     INTO message SEPARATED BY space.
    MESSAGE i001(00) WITH 'You double-clicked-on ' message.

  ENDMETHOD.
Hier der Code zur Definition des auszugebenden ALVs:

Code: Alles auswählen.

 METHODS show_hierachy
      IMPORTING
        VALUE(pi_objpack) TYPE gt_objpack .
METHOD show_hierachy.
    DATA:
*          Objects
          gr_table TYPE REF TO cl_salv_table
         ,gr_selections TYPE REF TO cl_salv_selections
         ,gr_functions TYPE REF TO cl_salv_functions_list
         ,gr_events TYPE REF TO cl_salv_events_table
         ,lo_event_handler TYPE REF TO zdbs_azubi_eventhandler_cl.

    TRY.
        CALL METHOD cl_salv_table=>factory
          IMPORTING
            r_salv_table = gr_table
          CHANGING
            t_table      = pi_objpack.
      CATCH cx_salv_msg.
    ENDTRY.

    gr_table->set_screen_status(
              pfstatus        = 'SALV_TABLE_STANDARD'
              report          = sy-repid
              set_functions  = gr_table->c_functions_all ).
    gr_events = gr_table->get_event( ).

    CREATE OBJECT lo_event_handler TYPE zdbs_azubi_eventhandler_cl.

    SET HANDLER lo_event_handler->on_double_click FOR  gr_events.

*   Set up selections
    gr_selections = gr_table->get_selections( ).
    gr_selections->set_selection_mode( 1 ). "Single

    gr_table->display( ).
  ENDMETHOD.
Die Methode show_hierachy wird von einer anderen Methode aufgerufen innerhalb der Klasse. Bevor der Implementierung des Doppeltklicksevents wurde as ALV ohne Fehler angezeigt:

Code: Alles auswählen.

CREATE OBJECT lo_cdatelement TYPE zdbs_azubi_pck_root.

  CALL METHOD lo_cdatelement->object_hierachy( EXPORTING pi_tadir = lt_tadir ).
Entschuldigt bitte den doppelten Beitrag. Das war nicht beabsichtigt.

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


Re: ALV_Event DOUBLE_CLICK

Beitrag von Pyro (Specialist / 121 / 14 / 18 ) »
Falls es dir hilft, kann ich dir sagen, wie es beim CL_GUI_ALV_GRID geht, beim CL_SALV* habe ich leider keine Ahnung, wie ähnlich sich das mit dem anderen ist.

Re: ALV_Event DOUBLE_CLICK

Beitrag von Boon (ForumUser / 12 / 4 / 0 ) »
ja gerne da würde ich schon Mal einen Ansatz haben

Re: ALV_Event DOUBLE_CLICK

Beitrag von Pyro (Specialist / 121 / 14 / 18 ) »
Ok, aber vorher versuch ich trotzdem mal eine hilfreiche Antwort;)

Ich hätte anhand deines Codings jetzt vermutet, dass du deine Daten in der GR_TABLE hast, diese auch anzeigst und hier den Doppelklick ausführen willst, oder?
Müsste dann nicht eigentlich dieses Objekt beim registrieren des Event-Handlers angegeben werden?
Anstatt:
SET HANDLER lo_event_handler->on_double_click FOR gr_events.
Dann:
SET HANDLER lo_event_handler->on_double_click FOR gr_table.

Wofür ist dein GR_EVENTS überhaupt? (Wie gesagt, mit CL_SALV* kenn ich mich leider nicht so gut aus, daher die Frage)

Beim OOALV ist das ganze relativ simpel:

Code: Alles auswählen.

"Deklarieren der Instanzvariable
DATA: go_grid TYPE REF TO cl_gui_alv_grid,
          go_event_handler TYPE zdbs_azubi_eventhandler_cl.

CREATE OBJECT go_grid
      EXPORTING 
           parent = go_cc. "(entweder das CustomControl-Objekt welches auf dem Dynpro angezeigt werden soll oderw ie du das auch immer machen willst)

CREATE OBJECT go_event_handler.

SET HANDLER go_event_handler->on_double_click FOR  go_grid.

und der Rest dann ziemlich ähnlich

Code: Alles auswählen.

METHODS:
        on_double_click FOR EVENT double_click OF cl_gui_alv_Grid
          IMPORTING row COLUMN.
METHOD on_double_click.
    DATA: MESSAGE TYPE STRING
         ,row_c(4) TYPE c.

    row_c = row.

    CONCATENATE 'ROW' row_c 'Column' COLUMN
     INTO MESSAGE SEPARATED BY SPACE.
    MESSAGE i001(00) WITH 'You double-clicked-on ' MESSAGE.

  ENDMETHOD.
Ich habs jetzt nicht getestet, aber so in etwa müsste es eigentlich funktionieren.

Hilft dir das evtl. etwas weiter?

Folgende Benutzer bedankten sich beim Autor Pyro für den Beitrag:
Boon


Re: ALV_Event DOUBLE_CLICK

Beitrag von a-dead-trousers (Top Expert / 4483 / 231 / 1205 ) »
Pyro hat geschrieben:Wofür ist dein GR_EVENTS überhaupt? (Wie gesagt, mit CL_SALV* kenn ich mich leider nicht so gut aus, daher die Frage)
Nur zur Info:
CL_SALV_TABLE ist IMHO der heilige Gral der OO-Programmierung unter ABAP. Für jeden Furz gibts da eigene Klassen, so auch für die Events.

@Boom
Zum Problem:
Ich finde auf die Schnelle keinen Fehler im Coding. Hast du schon mal nachgeschaut im Debugger warum der Fehler ausgelöst wird? Einfach wenn der Kurzdump passiert oben auf "Debugger" klicken und du gelangst dorthin wo der Fehler aufgetreten ist. Vermutlich muss aber auch das "Systemdebugging" eingeschalten sein.
Wenn der Fehler an einer anderen Stelle aufgetreten ist (falls PREVIOUS einen Wert hat), kannst du dich über die Exceptions dorthin hangeln wo der ursprüngliche Fehler ausgelöst wurde.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Boon

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ALV_Event DOUBLE_CLICK

Beitrag von Boon (ForumUser / 12 / 4 / 0 ) »
Die Lösung ist, dass ich die Anzeige des ALV in den Report auslagern muss, da ich den GUI STATUS "SALV_TABLE_STANDARD" nur dem Programm hinzufügen kann. Das double klick Event ist nun in einer lokalen Klasse.

Re: ALV_Event DOUBLE_CLICK

Beitrag von Boon (ForumUser / 12 / 4 / 0 ) »
Die Lösung ist, dass ich die Anzeige des ALV in den Report auslagern muss, da ich den GUI STATUS "SALV_TABLE_STANDARD" nur dem Programm hinzufügen kann. Das double klick Event ist nun in einer lokalen Klasse.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
3991
Views
ALV TREE | Positionsänderung nach Double Click Event
von Lukas R. » 17.10.2017 10:07 • Verfasst in ABAP® für Anfänger
5
Antw.
13130
Views
Handle Double Click for ALV Grid
von PeterPaletti » 15.06.2018 08:40 • Verfasst in ABAP Objects®
0
Antw.
1974
Views
1
Antw.
2578
Views
Double click absprung aus input/output field
von guidoH » 16.05.2008 11:51 • Verfasst in ABAP® für Anfänger
2
Antw.
5663
Views
single click event im tree control (cl_gui_list_tree)?
von ernst » 21.08.2007 17:08 • 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.