Referenzierung auf Attribute einer internen Tabelle von Objekten

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

Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von Kudert777 (ForumUser / 12 / 0 / 0 ) »
Guten Tag,

ich habe eine interne Tabelle von Objekten. Nun weiß ich nicht wie ich referenzieren kann.

Ich hätte es so erwartet:

Code: Alles auswählen.

data children type standard table of ref to class1.
children[ 1 ]->data = 'text'.
Erhalte allerdings eine Fehlermeldung "Unerwarteter Operator "->"".

Hier die Klasse:

Code: Alles auswählen.

class class1 DEFINITION.
 
 data: data type string.
 data: parent type ref to class1.
 data: children type standard table of REF TO class1 with empty key.
...
 START-OF-SELECTION.

data data type string.
  
data children type standard table of ref to class1.
  
children[ 1 ]->data = 'text'.
Vielen Dank im Voraus!

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


Re: Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Deine Tabelle "children" ist leer, daher funktioniert ein Zugriff mittels "children[ 1 ]" nicht.
Das sollte funktionieren, solange "data" als PUBLIC-Attribut definiert ist:

Code: Alles auswählen.

append new #( ) to children. "Eine neue Zeile mit einer leeren Instanz einfügen
children[ 1 ]->data = 'text'. "Die erste Zeile einlesen und einen Wert zuweisen.

EDIT: Fehlendes #-Zeichen im Code ergänzt.
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: Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ich habe mit sowas keine Übung, aber rein von der Theorie her ist children doch nicht als Tabelle von Objekten, sondern als Tabelle von Referenzen auf Objekte definiert. Kann man da trotzdem mit children[ 1 ]->data auf die Attribute zugreifen? Ich hätte erwartet, dass man das Objekt erst mal dereferenzieren muss, bevor man an den Inhalt rankommt.

Re: Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
DeathAndPain hat geschrieben:
07.01.2020 10:49
Ich habe mit sowas keine Übung, aber rein von der Theorie her ist children doch nicht als Tabelle von Objekten, sondern als Tabelle von Referenzen auf Objekte definiert. Kann man da trotzdem mit children[ 1 ]->data auf die Attribute zugreifen? Ich hätte erwartet, dass man das Objekt erst mal dereferenzieren muss, bevor man an den Inhalt rankommt.
Das ist die Aufgabe von "->".
Eine explizite Dereferenzierung bzw. ein explizites Casting benötigt man nur, wenn man die Tabelle mit "ref to data" bzw. "ref to object" defineirt hat.
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: Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von Kudert777 (ForumUser / 12 / 0 / 0 ) »
Bei mir erscheint in der Zeile:

Code: Alles auswählen.

append new #( ) to children.
,die Fehlermeldung: Der obligatorische Parameter "DATA" wurde nicht versorgt.

Re: Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von gtoXX (Specialist / 185 / 34 / 31 ) »
Hi,

also erstmal ist data: data type string. ganz schlechter Stil.

DATA ist ein reserviertes Wort. Es sollte nicht als Variablenname verwendet werden.

Wozu deklarierst du die Variable DATA noch mal nach Start-of-Selection ?

START-OF-SELECTION.

data data type string.

Die Meldung ,die Fehlermeldung: Der obligatorische Parameter "DATA" wurde nicht versorgt. lässt sich so nicht ganz erklären. Da fehlt mehr vom Coding.

Hast Du das eventuell im Constructor als Importparameter ?
"Code lügt nicht ^^"

Re: Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von Kudert777 (ForumUser / 12 / 0 / 0 ) »
Ja ich habe "data" als Importparameter im Konstruktor.

Re: Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Dann so

Code: Alles auswählen.

append new #( data = 'test' ) to children.
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: Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von Kudert777 (ForumUser / 12 / 0 / 0 ) »
Ich kann leider nicht

Code: Alles auswählen.

write children[ 1 ]->data.
schreiben aufgrund von Versionsproblemen.

Mir wurde gesagt ich soll es so machen:

Code: Alles auswählen.

DATA(child) = children[ 1 ].
WRITE child->data.
Nun hätte ich noch zwei Fragen: Mit append hänge ich Zeilen an, kann ich hier bei meinem Bsp. auch insert verwenden um Spalten hinzuzufügen?

Wie kann ich die gesamte Tabelle ausgeben?
Wenn ich

Code: Alles auswählen.

DATA(child) = children[ 1 ].


verwende habe ich die Tabelle ja nur zeilenweise.

Re: Referenzierung auf Attribute einer internen Tabelle von Objekten

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Kudert777 hat geschrieben:
11.01.2020 15:48
Mit append hänge ich Zeilen an, kann ich hier bei meinem Bsp. auch insert verwenden um Spalten hinzuzufügen?
Wie willst du mit INSERT Spalten hinzufügen? Damit kann man, ebenso wie mit APPEND, nur Zeilen hinzufügen. Einziger Unterschied ist, dass man sich den "Einfügepunkt" aussuchen kann.

Kudert777 hat geschrieben:
11.01.2020 15:48
Wie kann ich die gesamte Tabelle ausgeben?
So

Code: Alles auswählen.

LOOP AT children INTO child.
  write child->data.
ENDLOOP.
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

Seite 1 von 1

Vergleichbare Themen

6
Antw.
353
Views
neues Attribute einer int. Tabelle hinzufügen und mit Festwert vorbelegen
von MarkusW » 04.01.2024 15:56 • Verfasst in ABAP Objects®
3
Antw.
5245
Views
Inhalt einer internen Tabelle in eine transparente Tabelle?
von Gast » 19.10.2004 14:23 • Verfasst in ABAP® Core
2
Antw.
3334
Views
Daten aus internen Tabelle in Tabelle speichern
von Stahle71 » 03.06.2015 11:03 • Verfasst in ABAP® für Anfänger
4
Antw.
4376
Views
DELETE aus internen Tabelle
von meistercoach » 15.04.2015 09:09 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Zugriff auf Daten via Webdav
vor 53 Minuten von msfox 2 / 34
Interne Tabelle
vor 18 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

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

Zugriff auf Daten via Webdav
vor 53 Minuten von msfox 2 / 34
Interne Tabelle
vor 18 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141