dereferenzierung verständlich erklärt?

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

dereferenzierung verständlich erklärt?

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hallo Experten,

für ein Projekt muss ich wissen was Dereferenzierung ist und wie es funktioniert. Habe jetzt etliche Seiten im Netz dazu gelesen, nur irgendwie will mir das immer noch nicht so ganz einleuchten, wie das alles zusammenhängt und funktioniert. Ich habe es jetzt soweit verstanden, dass ich damit auf die Werte / Struktur eines Objektes zugreifen kann. Aber warum muss ich dann dereferenziern und weise das objekt nicht direkt nur einem Feldsymbol zu?
Vielleicht kann mir jemand von euch diese Thematik einmal verständlich und vllt. an nem nachvollziehbaren Beispiel (also nicht dieser Quark aus der SAP-Hilfe) erklären wie was zusammen hängt und wie ich das alles mache und was das überhaupt soll.
Ich hoffe, ihr könnt mir helfen!
Gruß,
der Matze

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


Re: dereferenzierung verständlich erklärt?

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
hi!

Du hast eine Klasse "Fahrzeug".
Dann eine Klasse "Auto".
Und schließlich eine Klasse "VW Golf"

Diese sind wie folgt vererbt: "Fahrzeug" -> "Auto" -> "VW Golf"

In "Fahrzeug" gibt des das Attribut "Geschwindigkeit"
In "VW Golf" gibt es das Attribut "Reifenbreite"

Dann gibt es noch die Verwaltungsklasse "Straße".
In dieser Straße dürfen mehrere "Fahrzeuge" gleichzeitg fahren.
Das heißt die "Straße" kennt nur "Fahrzeug" und ihr Attribut "Geschwindigkeit"
Hin und wieder muss man aber auch bestimmte Kontrollen durchführen. Nennen wir die zugehörige Methode "Polizeikontrolle".
Nun ist aber nicht nur die "Geschwindigkeit" wichtig, sondern auch evtl. ob bei einem "getunten VW Golf" die Reifenbreite mit dem Typenschein zusammenpasst.
Dann muss man aus dem "Fahrzeug"-Objekt ein "VW Golf"-Objekt machen. Das funktioniert über eine Zuweisung mit dem Cating-Operator ( ?= )
Erst jetzt kann man auch auf das Attribut "Reifenbreite" zugreifen.

Das Ganze geht dann natürlich noch viel weiter, vor allem wenn man z.B. Interfaces verwendet und dann ständig zwischen diesen hin- und herwechselt.
Man muss sich dann uU. auch eine Art von eigener "Klassifizierungslogik" überlegen, damit man die "generischen" Klassen (wie im Beispiel "Fahrzeug") einer tatsächlich instanzierbaren Klasse ("VW Golf") zuordnen kann.
(Beispiel in ABAP-OO Klasse CL_GUI_CONTAINER und Methode GET_CONTAINER_TYPE sowie die Konstanten CONTAINER_TYPE_*)

In ABAP gibt es auch noch zusätzlich die "Datenreferenzen".
Wenn man eine generische Datenreferenz (TYPE REF TO DATA) hat, kann man mit einer Zuweisung an ein Feld-Symbol (mit dem passenden Typ der Daten) ebenfalls eine "Dereferenzierung" durchführen.

Code: Alles auswählen.

data: lr_data type ref to data.
data: lr_vbrk type ref to vbrk.
field-symbols: <ls_vbrk> type vbrk.

create data lr_data type vbrk.

assign lr_data->* to <ls_vbrk>.
write <ls_vbrk>-mandt.
* oder Zugriff per typisierter Referenz
lr_vbrk = lr_data.
write lr_vbrk->mandt.
Der Unterschied zu den Objektreferenzen besteht darin, dass man die Daten nicht "vererben" kann.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Thanatos82

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: dereferenzierung verständlich erklärt?

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

also mit den Objekten: super erklärt! hab ich kapiert! :)

Nur die Datendereferenzierung leuchtet mir noch ned ein.

ich editier mal in deinem Code was ich denke verstanden zu haben, vielleicht kannst du ja ggf. ergänzen oder korrigieren?!

Code: Alles auswählen.

DATA: lr_data TYPE REF TO DATA. "Datenreferenz erzeugt, aber noch initial
DATA: lr_vbrk TYPE REF TO vbrk.  "ebenfalls eine Datenreferenz, aber eindeutig typisiert und somit nur mit den Daten der vbrk befüllbar
FIELD-SYMBOLS: <ls_vbrk> TYPE vbrk.

CREATE DATA lr_data TYPE vbrk. "hier bekommt die Referenz alle Daten der vbrk zugeschoben?

ASSIGN lr_data->* TO <ls_vbrk>. "auf eine Zeile der Daten wird ein Zeige gesetzt. Muss da nicht ein Loop oder sowas? in lr_data is doch die ganze tabelle, oder nicht?
WRITE <ls_vbrk>-mandt.
* oder Zugriff per typisierter Referenz
lr_vbrk = lr_data.
WRITE lr_vbrk->mandt.
Gruß,
der Matze

Re: dereferenzierung verständlich erklärt?

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Hinweis: VBRK ist keine Tabelle in deinem Kontext, sondern ein Zeilentyp für eine Tabelle. Somit ist lr_vbrk keine Tabelle, sondern ein strukturiertes Feld. Darum kannst du dieses strukturierte feld auch dem Feldsymbol fehlerfrei zuweisen. Da du die Struktur aber nicht füllst, kann auch nix ausgegeben werden (lr_data ist ja leer, du schreibst ja nix rein - und der Assign bringt auch nix, weil <ls_vbrk> ebenfalls leer ist.

Daher: Zur Frage, ob die Referenz alle Daten der vbrk zugeschoben bekommt, ein klares Nein, weil vbrk eben keine Tabelle ist. Wenn du das willst, musst du einen SELECT auf die VBRK in eine interne Tabelle machen. Diese ist dann wirklich eine Tabelle und hat auch die Eigenschaften einer Tabelle.

Das ist ein bisschen undurchsichtig, weil viele Anfänger nicht unterscheiden können zwischen der DB-Tabelle VBRK und der Struktur VBRK, die im DDIC hinterlegt ist.

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
Thanatos82

Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1155
Views
Dereferenzierung im BadI, Funktionsbaustein, ABAP
von klavinder » 21.08.2007 15:08 • Verfasst in ABAP Objects®
3
Antw.
1767
Views
Basis in wenigen Sätzen erklärt
von cschmoel » 23.01.2013 10:31 • Verfasst in Basis
2
Antw.
669
Views
Transparente Tabelle einfach und verständlich erklären
von ftmasd » 17.05.2023 13:04 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 11 Stunden von Bright4.5 3 / 1485
Regex in where
vor 13 Stunden von tar 6 / 158

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

Daten an Tabelle binden
vor 11 Stunden von Bright4.5 3 / 1485
Regex in where
vor 13 Stunden von tar 6 / 158

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821