Code: Alles auswählen.
"Methode A:
Select ..........
...
..
INTO TABLE @DATA(lt_result).
GET REFERENCE OF lt_result INTO mt_output. " die Tabelle zeigt jetzt in die Datenreferenz und die Datenreferenz ist ja als Attreibut gespeichert
Code: Alles auswählen.
"Methode B:
FIELD-SYMBOLS: <ft_result> TYPE STANDARD TABLE.
ASSIGN mt_result->* TO <ft_result>.
Code: Alles auswählen.
ASSIGN mt_result->* TO <ft_result>.
Code: Alles auswählen.
ASSIGN mt_output->* TO <ft_result>.
Hallo,LeMinion hat geschrieben: ↑16.09.2022 15:05Hast Du Dich hier einfach verschrieben? Im zweiten Teil schreibst DuMüßte das nicht so heißen?Code: Alles auswählen.
ASSIGN mt_result->* TO <ft_result>.
Code: Alles auswählen.
ASSIGN mt_output->* TO <ft_result>.
ZF_SAPler hat geschrieben: ↑16.09.2022 14:57Hallo,
ich habe ein generisches Attribut erstellt in einer Klasse: mt_output type ref to data.
Wie bekomme ich in Methode B jetzt die Daten von mt_output?Code: Alles auswählen.
"Methode A: Select .......... ... .. INTO TABLE @DATA(lt_result). GET REFERENCE OF lt_result INTO mt_output. " die Tabelle zeigt jetzt in die Datenreferenz und die Datenreferenz ist ja als Attreibut gespeichert
Mitfunktioniert es leider nicht. Die Daten sind nicht im Feldsymbol.Code: Alles auswählen.
"Methode B: FIELD-SYMBOLS: <ft_result> TYPE STANDARD TABLE. ASSIGN mt_output->* TO <ft_result>.
Das Feldsymbol würde ich dann in der Methode B ausgeben. Dump, weil das Feldsymbol nicht zugewiesen ist, die Datenreferenz ist auch leer!
----------------------------------------------------------------------------------
Wenn ich alles in Methode A lasse, funktioniert es
Weil Datenreferenz einer Zeiger ist und nicht wirklich die Daten enthält, richtig?
Code: Alles auswählen.
"Methode A
INTO TABLE @DATA(lt_result).
FIELD-SYMBOLS: <ft_result> TYPE STANDARD TABLE.
ASSIGN mt_output->* TO <ft_result>.
<ft_result> = lt_result.
Code: Alles auswählen.
"Methode B
FIELD-SYMBOLS: <ft_result> TYPE STANDARD TABLE.
ASSIGN mt_output->* TO <ft_result>.
nickname8 hat geschrieben: ↑16.09.2022 16:55klar:
"Methode A
INTO TABLE @DATA(lt_result).
FIELD-SYMBOLS: <ft_result> TYPE STANDARD TABLE.
ASSIGN mt_output->* TO <ft_result>.
<ft_result> = lt_result.
"Methode B
FIELD-SYMBOLS: <ft_result> TYPE STANDARD TABLE.
ASSIGN mt_output->* TO <ft_result>.
So ungefähr, hab grad kein SAP zum Testen da.
Code: Alles auswählen.
CLASS main DEFINITION.
PUBLIC SECTION.
METHODS read.
METHODS show.
METHODS get_ref
RETURNING
VALUE(result) type REF TO data.
PRIVATE SECTION.
DATA datref TYPE REF TO data.
ENDCLASS.
CLASS main IMPLEMENTATION.
METHOD read.
SELECT * FROM t000 INTO TABLE @DATA(clients).
FIELD-SYMBOLS: <data> TYPE STANDARD TABLE.
CREATE DATA datref LIKE clients.
ASSIGN datref->* TO <data>.
<data> = clients.
ENDMETHOD.
method get_Ref.
result = datref.
ENDMETHOD.
METHOD show.
FIELD-SYMBOLS: <data> TYPE STANDARD TABLE.
ASSIGN datref->* TO <data>.
cl_demo_output=>display_data( name = 'Inside class' value = <data> ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(appl) = NEW main( ).
appl->read( ).
appl->show( ).
data(datref) = appl->get_ref( ).
FIELD-SYMBOLS <tab> type ANY TABLE.
ASSIGN datref->* to <tab>.
cl_demo_output=>display_data( name = 'outside class' value = <tab> ).
Danke!ewx hat geschrieben: ↑16.09.2022 17:17aber so:danke nickname8 für den Denkanstoß! ich hatte schon wieder zu kompliziert gedacht...Code: Alles auswählen.
CLASS main DEFINITION. PUBLIC SECTION. METHODS read. METHODS show. METHODS get_ref RETURNING VALUE(result) type REF TO data. PRIVATE SECTION. DATA datref TYPE REF TO data. ENDCLASS. CLASS main IMPLEMENTATION. METHOD read. SELECT * FROM t000 INTO TABLE @DATA(clients). FIELD-SYMBOLS: <data> TYPE STANDARD TABLE. CREATE DATA datref LIKE clients. ASSIGN datref->* TO <data>. <data> = clients. ENDMETHOD. method get_Ref. result = datref. ENDMETHOD. METHOD show. FIELD-SYMBOLS: <data> TYPE STANDARD TABLE. ASSIGN datref->* TO <data>. cl_demo_output=>display_data( name = 'Inside class' value = <data> ). ENDMETHOD. ENDCLASS. START-OF-SELECTION. DATA(appl) = NEW main( ). appl->read( ). appl->show( ). data(datref) = appl->get_ref( ). FIELD-SYMBOLS <tab> type ANY TABLE. ASSIGN datref->* to <tab>. cl_demo_output=>display_data( name = 'outside class' value = <tab> ).