Code: Alles auswählen.
DATA: lr_alv_tree_control TYPE REF TO cl_gui_alv_tree.
DATA: lr_gui_container TYPE REF TO cl_gui_simple_container.
DATA: l_node TYPE lvc_nkey.
DATA: l_falnr TYPE falnr.
DATA: lr_parent TYPE REF TO cl_gui_container.
DATA: lr_cont TYPE REF TO cl_gui_custom_container.
DATA: l_cont TYPE sdydo_value.
CLEAR: l_patnr,
l_falnr.
CREATE OBJECT lr_cont
EXPORTING
container_name = l_cont
EXCEPTIONS
others = 1.
IF sy-subrc <> 0.
EXIT.
ENDIF.
lr_parent = lr_cont.
CREATE OBJECT lr_alv_tree_control
EXPORTING
parent = lr_parent.
CALL METHOD lr_alv_tree_control->get_selected_item
IMPORTING
e_selected_node = l_node
EXCEPTIONS
no_item_selection = 1
cntl_system_error = 2
failed = 3
OTHERS = 4.
Bingo!sapdepp hat geschrieben:Habt ihr das so gemacht, indem ihr von eurer neu angelegten Z-Klasse eine neue Public-Methode ähnlich GET_SELECTED_NODES zündet und dort das von Protected auf Public gesetzte Attribut GT_TREERECORD abgrast mit READ TABLE?
Code: Alles auswählen.
CALL METHOD l_treerecord-objref->supply_data
EXPORTING
it_n1popakte = lt_n1popakte
i_viewid = l_treerecord-viewid
i_wplaceid = g_wplaceid
ir_patorg = me
IMPORTING
et_supply = lt_supply.
Ich würd sagen: Du hast einen Schuh.sapdepp hat geschrieben:Sorry, ihr habt die Z-Klasse natürlich von CL_ISHMED_PATORG geerbt und nicht kopiert. Das meintest du mit ableiten.
Die Attributsichtbarkeit von GT_TREERECORD habt ihr dann auch nicht geändert von Protected auf Public, weil das ja nicht geht und nicht mehr sein muss, wenn man jetzt mit einer eigenen Public-Methode auf dieses geerbte Attribut zugreifen kann. Es müsste ja innerhalb einer (vererbten) Klasse und durch die Instanzen der (vererbten) Klasse sichtbar sein. Wird jetzt ein Schuh draus, oder habt ihr wirklich ein neues Public-Attribut analog GT_TREERECORD angelegt?
Das geht hier aber nicht. Schade, dass du kein System zur Hand hast. Es handelt sich nicht um Aspektbuttons, sondern um Kundenbuttons im HTML-Header (Kopfdaten ein/aus) ganz oben. Die HANDLE_USER_COMMAND wird gar nicht angesprungen, um auch nur ansatzweise die selektierte Zeile auszulesen. Alles schon probiert. Kann sogar sein, dass wir hier die Klassen CL_GUI_DATAMANAGER oder CL_GUI_EVENT anzapfen müssen, also sehr nahe schon am System/Kernel dran. Bei der ersten Klasse gibt es die Methode ON_INPUT, die den geklickten Zeilenindex als xml-String enthält in Variable DATASTREAM, bei letzterer Klasse gibt es die Methode GET_EVENT_PARAM, die die Tabellenstruktur Params enthält. Dort müsste quasi die markierte Zeile mit den Werten PID und VALUE rein, dann hätten wir's. Bloß, wie verheiratet man das Ganze: Klick auf Kundenbutton, Übergabe markierte Zeile an OO-Referenz, welche auch immer, Ausgabe der Zeilen-ID bzw. PID und VALUE, rein ins Read Table.a-dead-trousers hat geschrieben:Im Grunde haben wir das gemacht, was auch im HANDLE_USER_COMMAND gemacht wird (Hab leider grad kein System zur Hand zum Nachschauen)