Eigenen EventHandler bauen?

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

Eigenen EventHandler bauen?

Beitrag von RIG (Specialist / 110 / 30 / 1 ) »
Hallo mal wieder an alle Experten!

Ich muss in einem Programm eine Tabelle aufbauen, diese wird mit Select Options und anderen Dingen eingeschränkt und zusammengebaut.
Danach soll mit Doppelklick auf eine Zeile eine 2 Tabelle angezeigt werden, die abhängig vom wert in der Zeile ist UND auch von den Select Options.
Nun kann ich mit dem normalen Standard EventHandler die SO nicht übergeben und will mir deswegen selbst einen bauen.
Die Tabelle vorher komplett zu lesen und dann nicht benötigte werte löschen ist sehr Zeitaufwendig da es zu viele Daten sind.

Gefunden habe ich im Netz schon das:
http://www.apentia-forum.de/viewtopic.php?t=12336

aber mein Code ist bisher so:

Code: Alles auswählen.

class lcl_event_handler definition.
  public section.
    class-methods:
      on_double_click
        for event double_click of cl_salv_events_table
          importing
            row " type salv_de_row
            column.
endclass.               "LCL_EVENT_HANDLER


"-- Ausgabe Erste Ergebnisstabelle --------------------------------
  CALL METHOD cl_salv_table=>factory
    IMPORTING
      r_salv_table = gx_alv
    CHANGING
      t_table      = gt_erg1.

  gx_layout = gx_alv->get_layout( ).
  gs_key-report = sy-repid.
  gx_layout->set_key( gs_key ).

  gx_functions = gx_alv->get_functions( ).
  gx_functions->set_all( abap_true ).
  gx_functions->set_group_aggregation( abap_true ).

  gx_layout->set_initial_layout( gv_variant ).
  gx_layout->set_save_restriction( if_salv_c_layout=>restrict_user_dependant ).  "restrict_none
  gx_layout->set_default( abap_true ).

  gx_columns->set_optimize( ).

  gx_event = gx_alv->get_event( ).

  CREATE OBJECT gx_handler.

  SET HANDLER:
  gx_handler->on_double_click FOR gx_event.

  gx_alv->display( ).

Seh ich das richtig das ich mir ein eigenen Event Handler bauen sollte und wenn ja gibts sowas schon in der art? Ich habe bisher nur EventHandler für ALV Toolbars gebaut.


Vielen Dank und Viele Grüße

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


Re: Eigenen EventHandler bauen?

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

du könntest doch auch mit einem "dirty assign" auf die Select Option des Hauptprogrammes zugreifen und schon hast du die Daten !

Gruss Jens
thanks Jens

Re: Eigenen EventHandler bauen?

Beitrag von RIG (Specialist / 110 / 30 / 1 ) »
ist das denn nicht wie der name schon sagt nicht ganz sauber?
Kann ich denn meine verwendete Methode nicht erweitern?

Ich habe jetzt schon viel gegoogelt, aber find dazu nix passendes. Kann nicht glauben das dies so außergewöhnlich ist - oder doch?
Nimmt man immr den unveränderten Standard?

Wenn Dirty Assign die bessere Wahl ist, hat das ganze Nachteile?

VG und Danke

Re: Eigenen EventHandler bauen?

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

klingt "schmutzig" ist es so aber nicht - wird auch ein einigen Stellen von SAp selber so genutzt - einfach mal beim Tricktresor.de vorbeischauen und dort suchen . Oder aber du stellst die daten ins Memory und holst sie dort im Eventhandler einfach ab - ist auch nichts anderes wie der Dirty Assign - nur das du dort die dten "sauberer" im Memory balegst. Mit dem DA - werden die daten ja auch aus dem Memory geladen - denn dort befinde n sie sich ja nun mal wenn das Programm geladen ist - schau mal im Debugger was bei einem Programmaufruf sich dort so alles tummelt !
Nachteile sind mir nicht bekannt und funktionieren tut es gut !

Gruss Jens
thanks Jens

Re: Eigenen EventHandler bauen?

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
1. Also die Select-Options sind ja schon mal globale Variablen, in denen du auch in den Methoden zugreifen kannst. Okay, nicht ganz OO-sauber, aber es geht.
2. Du kannst dir einfach ein eigenes Event definieren, dass du per RAISE EVENT auslöst. Diesem Event kannst du jede Menge Daten übergeben: http://tricktresor.de/content/index.php ... 30&aID=524 Falls du wirklich die Select-options übergeben möchtest, musst du sie am besten in einer Tabelle ähnlicher dieser Struktur übergeben: RSSELECT
3. Jens: Nur weil die SAP das auch macht, heißt es nicht, dass das sauber ist! ;) Wir haben gerade irgendwo eine Diskussion darüber...

Re: Eigenen EventHandler bauen?

Beitrag von RIG (Specialist / 110 / 30 / 1 ) »
Habe es jetzt mit memory so versucht - geht leider nicht. Ich muss die select Options Daten wohl erst in Range Tables convertieren?

Code: Alles auswählen.


REPORT  ZTEST_IMP_EXP_MEMORY.

Data: MEMID(5) value 'MEMID',
      gv_carrid type S_CARR_ID,
      gv_connid type S_CONN_ID,

      gt_range_carrid TYPE RANGE OF S_CARR_ID,
      gt_range_connid TYPE RANGE OF S_CONN_ID.


SELECTION-SCREEN BEGIN OF BLOCK b1
  WITH FRAME TITLE text-001. "Test mit so

SELECT-OPTIONS: so_CARID FOR gv_CARRID.
SELECT-OPTIONS: so_CONID FOR gv_connid NO INTERVALS .

SELECTION-SCREEN END OF BLOCK b1.

    EXPORT so_CARID to MEMORY ID MEMID.
    skip.
    IMPORT gt_range_carrid from MEMORY ID MEMID.
    skip.

    FREE MEMORY ID MEMID.

    EXPORT so_CONID to MEMORY ID MEMID.
    skip.
    IMPORT gt_range_connid from MEMORY ID MEMID.
    skip.

    FREE MEMORY ID MEMID.

    clear gt_range_carrid.
    clear gt_range_connid.
    
    IMPORT gt_range_carrid from MEMORY ID MEMID.
    IMPORT gt_range_connid from MEMORY ID MEMID.
    
    skip.


Re: Eigenen EventHandler bauen?

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

nun das stimmt wohl soweit - aber es ist ja im Grunde nichts anderes als Daten ins Memory zu schreiben und dort auch wieder abzuholen - nur das es halt etwas anders abläuft und nicht so "schön" aussieht, aber wenn die Daten nicht im Memory stehen würden könnte man sie dort eh nicht abholen.
Ein Ansatz wäre ja vielleicht auch noch die SO als Variante im Hintergrund immer abzuspeichern und dann im Event Handler diese dann lesen - wäre etwas aufwendiger - aber viele Wege führen ja bekanntlich nach Rom.
Was die Diskussion zum DA angeht - wie / wo findet man dazu Meinungen ?


Gruss Jens
thanks Jens

Re: Eigenen EventHandler bauen?

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
jensschladitz hat geschrieben:Sali,

nun das stimmt wohl soweit - aber es ist ja im Grunde nichts anderes als Daten ins Memory zu schreiben und dort auch wieder abzuholen
Das sehe ich etwas anders. Immerhin kannst du mit EXPORT TO MEMORY keine Programmvariablen ändern. Mit dem Dirty-Assign sehr wohl.
Die erwähnte Diskussion finde ich nicht mehr... Sorry.

Re: Eigenen EventHandler bauen?

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

okay - ist wichtig und zu beachten - aber wenn der Exort to Memory z.Bsp. keine ID dabei hat - dann könnte ich "zufällig" wenn ich dieselbe Struktur hätte und diese ins Memory stelle das auch bewerkstelligen oder ?!
Na ja sind aber irgendwie dann ab einem Punkt - Glaubensfragen -auf jeden Fall finde ich den DA dann unter bestimmten Bedingungen doch "ganz okay "

Hruss Jens
thanks Jens

Re: Eigenen EventHandler bauen?

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
jensschladitz hat geschrieben:Sali,

okay - ist wichtig und zu beachten - aber wenn der Exort to Memory z.Bsp. keine ID dabei hat - dann könnte ich "zufällig" wenn ich dieselbe Struktur hätte und diese ins Memory stelle das auch bewerkstelligen oder ?!
Dafür müssten aber schon einige "Zufälle" aufeinander treffen. Klar, wenn ein Programm von SAP den EXPORT/ IMPORT benutzt, kann ich den überschreiben. Aber mit dem Dirty-Assign kann ich unter bestimmten Umständen immer einen Fehler oder "abnormes Verhalten" provozieren, weil ich auf Daten oder Referenzen im SAP-Programm zugreifen und diese ändern kann.
jensschladitz hat geschrieben:Na ja sind aber irgendwie dann ab einem Punkt - Glaubensfragen -auf jeden Fall finde ich den DA dann unter bestimmten Bedingungen doch "ganz okay "

Hruss Jens
Wenn der DA mir hilft, ein Problem unkompliziert und mit wenig Aufwand zu lösen, dann setze ich ihn auch ein...! :) Aber da sind wir dann wieder bei den Glaubensfragen...

Re: Eigenen EventHandler bauen?

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Wenn dein Eventhandler programmlokal definiert ist spricht doch nichts dagegen die global definierten SO zu verwenden. Alles andere wäre doch unnötiger Aufwand bloß um OO-sauber zu sein.
Im "echten" Einsatz sollte man immer den Aufwand zum Nutzen in Relation stellen - und hier wäre das in meinem Augen dann nicht mehr gegeben.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Eigenen EventHandler bauen?

Beitrag von RIG (Specialist / 110 / 30 / 1 ) »
black_adept hat geschrieben:Wenn dein Eventhandler programmlokal definiert ist spricht doch nichts dagegen die global definierten SO zu verwenden. Alles andere wäre doch unnötiger Aufwand bloß um OO-sauber zu sein.
Im "echten" Einsatz sollte man immer den Aufwand zum Nutzen in Relation stellen - und hier wäre das in meinem Augen dann nicht mehr gegeben.
Dies war ja mein erster Ansatz.
Nur leider weiß ich nicht genau wie und wo ich die so zum export mitgebe bzw. ob ich das mit dem verwendeten Eventhandler machen kann.

Viele Grüße und Danke

Re: Eigenen EventHandler bauen?

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Ehrlich gesagt verstehe ich dein Problem nicht. Setze einen Breakpoint in deinen Eventhandler. Wenn du dann im Debugger landest solltest du sehen, dass deine SO dir da zur Verfügung stehen ( so denn die o.a. Voraussetzungen gelten )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Eigenen EventHandler bauen?

Beitrag von RIG (Specialist / 110 / 30 / 1 ) »
Im Debugger ist tatsächlich noch alles da.

Aber ich bekomme beim Aktivieren ein Fehler wenn ich die so verwenden möchte....

auf den In Operator folg mit so_xx weder eine interne Tabelle noch eine Werteliste.

Ahhhhhh...
jetzt habe ich es endlich.

Ich muss erst im Top include die Variablen für die SelOptions definieren.
Dann meine Classe definieren.
Dann die data anweisung für mein Eventhandler schreiben.
und dann die implementierung.

Diese Reihenfolge hatte ich nicht eingehalten da ich unbedingt alles trennen wollte, Alle datendef im TopInclude, dann classendefinitionen, dann Rahmenprogramm mit SelOptions und dann implementation.

Danke für die vielen Tipps und viele Grüße - jetzt ist erstmal Feierabend für heute!

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1359
Views
Tabelle bauen
von phil1982 » 08.08.2007 14:23 • Verfasst in ABAP® für Anfänger
1
Antw.
1046
Views
Aus Form Script Fuba bauen ????
von MASTERmind » 13.09.2007 11:05 • Verfasst in ABAP® Core
0
Antw.
1263
Views
SAP BTP / Cloud Plattform: Connector bauen
von sap_koun » 15.07.2023 12:27 • Verfasst in SAP Cloud Platform
1
Antw.
3406
Views
BSP Eventhandler aufrufen
von Tommy Nightmare » 13.03.2018 08:48 • Verfasst in Web-Dynpro, BSP + BHTML
0
Antw.
2399
Views
PopUp Fenster aus Eventhandler
von F12_man » 15.06.2007 09:39 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 6 Stunden von DeathAndPain gelöst 22 / 2801
Daten an Tabelle binden
vor 11 Stunden von Lukas Sanders 2 / 877
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 431

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.

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 6 Stunden von DeathAndPain gelöst 22 / 2801
Daten an Tabelle binden
vor 11 Stunden von Lukas Sanders 2 / 877
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 431

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2468
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9050