Kopie der Werte, nicht der Referenz. Objekt klonen?

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

Kopie der Werte, nicht der Referenz. Objekt klonen?

Beitrag von newbie007 (ForumUser / 31 / 1 / 0 ) »
Hey,

wenn ich ein Objekt klone, wird die entsprechende Referenz ja nicht kopiert. Ich bin davon ausgeganben, dass wenn ich objekt1 klone und dem objekt2 zuweise, Änderungen an einem Objekt sich nicht auf das andere Objekt auswirken.

Code: Alles auswählen.

CREATE OBJECT object1.
object2 ?= object1->if_os_clone~clone( ).
Aber das scheint nicht zu stimmen. Wenn ich nun object1 Werte zuweise, hat die object2 auch. Warum? Wie kann ich das verhindern?

Im Grunde möchte ich nur alle Werte des ersten Objekts in das zweite Objekt kopieren. Im ersten Objekt möchte ich dann Änderungen vornehmen. Wenn ich die Änderungen verwerfe soll object2 dazu da sein, die Werte von object1 wiederherzustellen.
Wie bekomme ich das hin?


Danke, Ciao!

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


Re: Kopie der Werte, nicht der Referenz. Objekt klonen?

Beitrag von ewx (Top Expert / 4848 / 311 / 642 ) »
Folgendes Beispiel widerlegt deine Behauptung:

Code: Alles auswählen.

REPORT.

*----------------------------------------------------------------------*
CLASS z1 DEFINITION .
  PUBLIC SECTION.
    INTERFACES if_os_clone.
    DATA test TYPE c LENGTH 2.
ENDCLASS.                    "z1 DEFINITION

*----------------------------------------------------------------------*
CLASS z1 IMPLEMENTATION.
  METHOD if_os_clone~clone.
    SYSTEM-CALL OBJMGR CLONE me TO result.
  ENDMETHOD.                    "IF_OS_CLONE~CLONE
ENDCLASS.                    "z1 IMPLEMENTATION

DATA r1 TYPE REF TO z1.
DATA r2 TYPE REF TO z1.

START-OF-SELECTION.
  CREATE OBJECT r1.

  r2 ?= r1->if_os_clone~clone( ).
  r1->test = 'A'.

  WRITE: / 'r1->test:', r1->test COLOR COL_GROUP.
  WRITE: / 'r2->test:', r2->test COLOR COL_GROUP.
Da muss ein anderer Fehler sein, denke ich...

Re: Kopie der Werte, nicht der Referenz. Objekt klonen?

Beitrag von newbie007 (ForumUser / 31 / 1 / 0 ) »
Dann schaue ich mir das gegen später mal an und gebe dann Rückmeldung.

Danke!

Re: Kopie der Werte, nicht der Referenz. Objekt klonen?

Beitrag von newbie007 (ForumUser / 31 / 1 / 0 ) »
Hab meinen Fehler gefunden. Die Referenz verfügt über eine Tabelle mit weiteren Referenzen einer anderen Klasse. Ich muss daher nicht nur das eine Objekt klonen, sondern auch die, welche sich in der internen Tabelle befinden.
Und da kommt auch schon ein neues Problem. Ich loope über meine interne Tabelle und klone eben jedes einzelne Objekt der Klasse class2. Diese füge ich nun an eine neue interne Tabelle an, die ich meinem Klon der Klasse class1 übergeben möchte. Allerdings bekomme ich das nicht hin mit der Typisierung zur Laufzeit. Klasse1 ist vom Typ Object zur Laufzeit, daher kann ich nicht auf die interne Tabelle der Klasse1 zugreifen. Ich hab versucht ein CASTING mittels

Code: Alles auswählen.

FIELD-SYMBOLS <fs> TYPE REF TO class1.
ASSIGN result TO <fs> CASTING.
durchzuführen, damit result über die Methoden und Attribute der Klasse class1 verfügt.
Als Meldung bekomme ich
"<FS>" und "RESULT" enthalten Referenzen oder interne Tabellen oder
Strings. Bei der aktuellen Anweisung müssen diese an der gleichen
Offset-Position stehen und kompatibel sein.
Wie kann man das lösen?

Seite 1 von 1

Vergleichbare Themen

10
Antw.
4888
Views
Objekt mit Referenz als Attribut auf DB speichern?
von dejo79 » 08.02.2017 17:00 • Verfasst in ABAP Objects®
0
Antw.
1271
Views
Kopie Smartforms ( wie weiss man das jetzt die Kopie druckt)
von Kleenmex » 21.01.2008 09:08 • Verfasst in Basis
3
Antw.
3489
Views
Referenz-Tabelle UND Referenz-Feld f.BRGEW und NTGEW
von bohne » 22.02.2007 10:52 • Verfasst in ABAP® für Anfänger
2
Antw.
6571
Views
Referenz-Tabelle und Referenz-Feld
von dyv » 28.08.2014 15:25 • Verfasst in ABAP® für Anfänger
3
Antw.
15202
Views
Dienste zum Objekt - Notizen zu Objekt holen
von gazzle » 26.01.2011 12:24 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor 28 Minuten von tar 26 / 1853
User Exit EXIT_RQCPRM10_001
vor 38 Minuten von Manfred K. 1 / 12
Trennen Strasse und Hausnummer
vor einer Stunde von payten 13 / 10298
Dialog-Container mit Toolbar/Status
vor 16 Stunden von DeathAndPain gelöst 22 / 3228
Daten an Tabelle binden
vor 21 Stunden von Lukas Sanders 2 / 1088

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

Eclipse - warum/wann verwendet ihr es [nicht]
vor 28 Minuten von tar 26 / 1853
User Exit EXIT_RQCPRM10_001
vor 38 Minuten von Manfred K. 1 / 12
Trennen Strasse und Hausnummer
vor einer Stunde von payten 13 / 10298
Dialog-Container mit Toolbar/Status
vor 16 Stunden von DeathAndPain gelöst 22 / 3228
Daten an Tabelle binden
vor 21 Stunden von Lukas Sanders 2 / 1088

Unbeantwortete Forenbeiträge

User Exit EXIT_RQCPRM10_001
vor 38 Minuten von Manfred K. 1 / 12
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2651
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9238