Event wird nicht ausgelöst

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

Event wird nicht ausgelöst

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
Hallo zusammen.
so was hatte ich noch nie... ich hoffe ihr könnt mir weiterhelfen.
Habe in meinem tree 3events registriert, die allerdings nicht reagieren/"anspringen". ich kann die aktionen ausführen (z.b. drag/drop) aber er springt nicht in die dafür vorgesehene methode, sprich das event wird nicht ausgelöst.

....
* create empty tree-control
ref_tree->set_table_for_first_display(
EXPORTING
is_hierarchy_header = lv_treev_hhdr
CHANGING
it_outtab = gt_sflight_tree
it_fieldcatalog = gt_fieldcat_tree ).

**INHALT-TREE**
***************
DO 2 TIMES.
*-- Node with key 'Root'
CALL METHOD ref_tree->add_node
EXPORTING
i_relat_node_key = lv_carrid_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = gt_sflight
i_node_text = 'Ich muss...'
IMPORTING
e_new_node_key = lv_last_key.

*-- Node with key 'Root'
CALL METHOD ref_tree->add_node
EXPORTING
i_relat_node_key = lv_last_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = gt_sflight
i_node_text = 'auf Promo...'
is_node_layout = gs_node_layout.

*-- Node with key 'Root'
CALL METHOD ref_tree->add_node
EXPORTING
i_relat_node_key = lv_last_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = gt_sflight
i_node_text = 'in die Schweiz ^^'
is_node_layout = gs_node_layout.

*-- Node with key 'Root'
CALL METHOD ref_tree->add_node
EXPORTING
i_relat_node_key = lv_last_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = gt_sflight
i_node_text = 'schreibs in gold'
is_node_layout = gs_node_layout.
ENDDO.

*-- Drag'n'Drop-Ereignisse erzeugen
DATA dragdrop TYPE REF TO lcl_dragdrop_receiver.
CREATE OBJECT dragdrop.
SET HANDLER dragdrop->tree_drag FOR ref_tree.
SET HANDLER dragdrop->tree_drop FOR ref_tree.
SET HANDLER dragdrop->drop_complete FOR ref_tree.
SET HANDLER dragdrop->handle_double_click FOR ref_tree.

* Send data to frontend.
CALL METHOD ref_tree->frontend_update.



CLASS lcl_dragdrop_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
*-- Drag'n'Drop: DRAG
tree_drag
FOR EVENT on_drag
OF cl_gui_alv_tree
IMPORTING node_key fieldname drag_drop_object,

*-- Drag'n'Drop: DROP
tree_drop
FOR EVENT on_drop
OF cl_gui_alv_tree
IMPORTING node_key drag_drop_object,

*-- Drag'n'Drop: DROP COMPLETE
drop_complete
FOR EVENT on_drop_complete
OF cl_gui_alv_tree
IMPORTING node_key drag_drop_object,

* double click item
handle_double_click
FOR EVENT node_double_click OF cl_gui_alv_tree
IMPORTING node_key.
ENDCLASS. "lcl_dragdrop_receiver DEFINITION



Wisst ihr woran das liegen könnte, bzw fehlen euch informationen zur fehleranalyse?

mfg olli
thx im voraus

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


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Olli,

probier es mal, wenn Du die SET HANDLER-Anweisungen vor den SET_TABLES_FOR_FIRST_DISPLAY platzierst...
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
hab ich gemacht, funktioniert nun leider aber immer noch nicht.

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Olli,

kann es sein, dass für Drag&Drop noch zusätzlich die Events über REGISTER_EVENTS (ö.ä.) zu registrieren sind?
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
habe....

DATA: LT_EVENTS TYPE CNTL_SIMPLE_EVENTS,
L_EVENT TYPE CNTL_SIMPLE_EVENT.
* define the events which will be passed to the backend
CLEAR L_EVENT.
L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_NODE_DOUBLE_CLICK.
L_EVENT-APPL_EVENT = 'X'.
APPEND L_EVENT TO LT_EVENTS.
CLEAR L_EVENT.
L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_EXPAND_NO_CHILDREN.
APPEND L_EVENT TO LT_EVENTS.
CLEAR L_EVENT.
L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_HEADER_CLICK.
APPEND L_EVENT TO LT_EVENTS.
CLEAR L_EVENT.
* register events
CALL METHOD ref_tree->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = LT_EVENTS
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
ILLEGAL_EVENT_COMBINATION = 3.
IF SY-SUBRC <> 0.
MESSAGE X534(0K).
ENDIF.


Über meine "SET HANDLER..." geschrieben. druch die REGISTER_EVENTS klappt zwar nun die registrierung des events doppelklick, dass mir aber nichts bringt, weil ich dieses event nur zum testen eingebaut habe und überhaupt nicht benötige. drag and drop events werden weiterhin nicht angesprochen/angesprungen.

Re: Event wird nicht ausgelöst

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
dawns hat geschrieben: Wisst ihr woran das liegen könnte, bzw fehlen euch informationen zur fehleranalyse?
Es währe hilfreich wenn du dazu schreiben würdest welche Tree-Klasse du verwendest. Sonst ist das immer ein wenig gesuche. Wenn ich richtig geraten habe verwendest du CL_COLUMN_TREE_MODEL für ref_tree.

Bei den Nodes mußt du das Drag und Drop Verhalten mit angeben

Code: Alles auswählen.

    CALL METHOD ref_tree->add_node
      EXPORTING
        i_relat_node_key = lv_carrid_key
        i_relationship   = cl_gui_column_tree=>relat_last_child
        is_outtab_line   = gt_sflight
        i_node_text      = 'Ich muss...'
*     Drag and Drop Verhalten mit geben
        drag_drop_id = drag_drop_id
      IMPORTING
        e_new_node_key   = lv_last_key.
für darg_drop_id mußt du ein Handle auf ein Objekt der Klasse cl_dragdrop angeben.

Beispiel aus der Hilfe:
1. Definieren Sie das Drag&Drop-Verhalten:
DATA behaviour_left TYPE REF TO cl_dragdrop.
CREATE OBJECT behaviour_left.
CALL METHOD behaviour_left->add
EXPORTING
flavor = 'Tree_move_to_Edit'
dragsrc = 'X'
droptarget = ' '
effect = cl_dragdrop=>copy.

2. Besorgen Sie sich mit der Methode get_handle ein Handle auf das Drag&Drop-Verhalten:
CALL METHOD behaviour_left->get_handle
IMPORTING handle = handle_tree.

Schau dir mal das Beispiel-Programm: SAPSIMPLE_TREE_DRAG_DROP_DEMO an. Insbesondere die Form: BUILD_NODE_TABLES.
Gruß Hendrik

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
das iss ja das problem, diese klasse benutze ich nicht.
man konnte dem ersten post die klasse entnehmen:
METHODS:
*-- Drag'n'Drop: DRAG
tree_drag
FOR EVENT on_drag
OF cl_gui_alv_tree
IMPORTING node_key fieldname drag_drop_object,
also: cl_gui_alv_tree

1. Definieren Sie das Drag&Drop-Verhalten:
2. Besorgen Sie sich mit der Methode get_handle ein Handle auf das Drag&Drop-Verhalten:
hab ich, iss im layout ;) :

*-- Definition Drag'n'Drop-Verhalten: Quelle
CREATE OBJECT ref_drag_tree.
CALL METHOD ref_drag_tree->add
EXPORTING
flavor = 'DragAndDrop'
dragsrc = 'X'
droptarget = ' '
effect = effect.

CALL METHOD ref_drag_tree->get_handle
IMPORTING
handle = handle_drag.

*-- Definition Drag'n'Drop-Verhalten: Ziel
CREATE OBJECT ref_drop_tree.
CALL METHOD ref_drop_tree->add
EXPORTING
flavor = 'DragAndDrop'
dragsrc = ' '
droptarget = 'X'
effect = effect.

CALL METHOD ref_drop_tree->get_handle
IMPORTING
handle = handle_drop.

*************************************
gs_node_layout-dragdropid = handle_drag. "<--- das layout übergeb ich:
*************************************
....
*-- Node with key 'Root'
CALL METHOD ref_tree->add_node
EXPORTING
i_relat_node_key = lv_last_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = gt_sflight
i_node_text = 'auf Promo...'
is_node_layout = gs_node_layout.

das einzige beispielprogramm das ich gefunden habe mit dieser klasse ist: BCALV_GRID_DND_TREE

aber es hilft mir leider auch nicht weiter...
ps: mir iss gerade aufgefallen das ich " handle_drop" überhaupt nich verwende, aber daran kanns ja nich liegen. müsste ja zumindest das dragereigniss anspringen... :? :?:

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
hab den fehler mittlerweile selbst herausbekommen:

CREATE OBJECT ref_tree
EXPORTING
parent = ref_bottom_tree
no_html_header = 'X'
node_selection_mode =
cl_gui_column_tree=>node_sel_mode_multiple.



habe die falschen events angesprochen ;). so ist es richtig:

CLASS lcl_dragdrop_receiver DEFINITION.
PUBLIC SECTION.
METHODS:

*-- Drag'n'Drop: DRAG
tree_drag
FOR EVENT on_drag_multiple
OF cl_gui_alv_tree
IMPORTING node_key_table drag_drop_object,
*-- Drag'n'Drop: DROP
tree_drop
FOR EVENT on_drop
OF cl_gui_alv_tree
IMPORTING node_key drag_drop_object,
*-- Drag'n'Drop: DROP COMPLETE
drop_complete
FOR EVENT on_drop_complete_multiple
OF cl_gui_alv_tree
IMPORTING node_key_table drag_drop_object.
ENDCLASS. "lcl_dragdrop_receiver DEFINITION


nun werden die events auch wieder angesprungen. und die entsprechenden methoden abgearbeitet :)

Seite 1 von 1

Vergleichbare Themen

6
Antw.
4465
Views
cl_gui_alv_grid: TOP OF PAGE wird nicht ausgelöst
von ralf.wenzel » 10.01.2014 13:54 • Verfasst in ABAP Objects®
1
Antw.
1025
Views
Batch Input wird nicht ausgelöst...
von Nici » 10.06.2005 11:29 • Verfasst in ABAP® für Anfänger
0
Antw.
1625
Views
Workflow: beendendes Ereignis wird nicht ausgelöst!
von Frank Zet. » 29.10.2006 15:49 • Verfasst in ABAP® Core
5
Antw.
886
Views
Event startet Job, wie ein weiteres Event verarbeiten?
von Romaniac » 28.09.2022 15:47 • Verfasst in ABAP® Core
0
Antw.
1441
Views
WebDynpro: Event Handler für externes Event
von Tommy Nightmare » 20.06.2018 09:05 • Verfasst in ABAP Objects®

Über diesen Beitrag


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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 510
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2145
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8741