Rückgabe von Datenreferenzen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
10 Beiträge • Seite 1 von 1
10 Beiträge Seite 1 von 1

Rückgabe von Datenreferenzen

Beitrag von SaskuAc (Specialist / 321 / 37 / 43 ) »
Hi,

ich habe 2 (hier beispielhafte) Klassen ..

Code: Alles auswählen.

class lcl_testclass_1 definition
public section. 
private section. 
   Data: mv_Test type string. 
endclass. 
class lcl_testclass_2 definition
public section. 
  methods: write_in_data. 
endclass. 

nun möchte mit der Methode write_in_data etwas in mv_test schreiben. Allerdings möchte ich das nicht mit einer SET-Methode machen oder MV_test public setzen.

heißt ich möchte eigentlich eine Methode die eine Referenz auf mv_test zurückgibt, sodass ich in der Methode write_in_data direkt die Variable bearbeite.
Geht das in ABAP?

( Unterm strich, hat ABAP ein CALL by Reference oder nur ein CALL BY Value? - ich bräuchte nämlich 1. )

Edit: also Call by Reference bloß andersherum ... nicht die reference übergeben .. sondern wieder zurückliefern .. so in etwa statt Returnung Value() wäre Returning Reference() .

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


Re: Rückgabe von Datenreferenzen

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Du suchst GET REFERENCE OF.....


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

Re: Rückgabe von Datenreferenzen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Ein privates Attribut von außen zugreifbar machen durch Rausgabe einer Referenz darauf.
Es wundert mich, dass mein Vorposter als Mitglied des Clubs für nachvollziehbare Programmierung und als 2. Vorsiztender der OO-Polizei da nicht schon eingegriffen hat .
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Rückgabe von Datenreferenzen

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Die OO-Polizei ist zur Zeit einarmig unterwegs und hat das PRIVATE SECTION übersehen. Normalerweise probiere ich sowas aus, ehe ich antworte, aber einhändig ist das doof.

Ich weiß also nicht, ob mein Tipp funktioniert.


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

Re: Rückgabe von Datenreferenzen

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
Hallo,

ich würde das über das 'FRIENDS' Konzept der Klassen probieren.

https://help.sap.com/http.svc/rc/abapdo ... riends.htm

Code: Alles auswählen.

CLASS lcl_testclass_1 DEFINITION FRIENDS lcl_testclass_2
Dann kannst Du in lcl_testclass_2 auch auf private Attribute von lcl_testclass_1 zugreifen.

Viele Grüße, Tapio
...entwickelnder Berater...beratender Entwickler

Re: Rückgabe von Datenreferenzen

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Sei froh, dass die OO-Polizei im Lazarett liegt -- die würde dir was erzählen von wegen FRIENDS. LOL



Ralf *Kapselung ist Kapselung ist Kapselung ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Rückgabe von Datenreferenzen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
ralf.wenzel hat geschrieben:Ralf *Kapselung ist Kapselung ist Kapselung ;)
Amen.

Was die ursprüngliche Anforderung betrifft möchte ich folgendes Anmerken: Für mich klingt das Ganze nach einem Denkfehler im Design (oder fauler Programmierer).

Zum Beispiel eine Tabelle ist in einer Klasse gekapselt worden und anfangs hat das wahrscheinlich auch wunderbar funktioniert, aber nun soll auch möglichst effizient per LOOP oder READ TABLE darauf zugegriffen werden können. Dafür gibt es in OO bereits sehr gute Lösungsansätze ohne gleich die heilige Kuh der Kappselung zu schlachten. Einer wäre das aus DOM bekannt Iterator-Konzept (GET_FIRST, GET_NEXT) in Verbidnung mit einem Filter. Das lässt sich auch recht einfach in eine bestehende Klasse aufnehmen ohne das ursprüngliche Klassenkonzept allzusehr zu verändern.

SaskuAc hat im Beispiel zwar keine Tabelle erwähnt, aber auch für jegliche String-Manipulationen lassen sich bessere Ansätze schmieden anstatt gleich die Referenz durchzureichen. Auch wenn das bedeutet, dass man Funktionen wie CONCATENATE usw. als Methoden ausprogrammieren muss ist das immer noch besser als die Objektgrenzen aufzuweichen. Ein oder mehrere "nicht so sauber" programmierte Aufrufer könnten sich die Referenz intern (global) merken und während des Programmlaufs zu verschiedenen Zeitpunkten Änderugen darauf durchführen. Viel Spass wünsche ich dann jenem der das Debuggen muss um die Fehlerquelle zu finden, anstatt über den Verwendungsnachweis viel zielgerichteter suchen zu können.

lg ADT
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: Rückgabe von Datenreferenzen

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Aus Anlass dieses sehr hochwertigen Postings möchte ich mal sagen, dass ich es toll finde, dass einige hier unentwegt posten und diskutieren. Aufgrund dieser Spitzenkräfte hier (Namen nenne ich jetzt nicht, ich würde sicher wen vergessen und ihm damit Unrecht tun) bin ich nicht nur sehr gern hier, sondern empfehle das Forum auch sehr gern weiter. Für die gesamte Entwicklergemeinde, aber auch gerade für mich selbst ist dieses Forum ein absoluter Gewinn.

Daher mal ein Danke an das hiesige Foristen-Kollektiv!

Ralf *live vom Elbjazz-Festival ;) Das ist übrigens auch sensationell
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Rückgabe von Datenreferenzen

Beitrag von SaskuAc (Specialist / 321 / 37 / 43 ) »
Okay, da habt ihr natürlich recht .. Gut durchdacht war das nicht.

Über Friends habe ich auch schon nachgedacht, allerdings würde das meinen Kapselungsgedanken wieder über den Haufen werfen. ( zumindest im Bezug auf die testclass_2 - denn das Attribut für die testclass_1 ist auf public, daher hätte dann wieder jeder direkt zugriff ... ^^ )



Ich werde mir über die gesamte Architektur nochmal Gedanken machen! Danke euch!

Re: Rückgabe von Datenreferenzen

Beitrag von gtoXX (Specialist / 185 / 34 / 31 ) »
a-dead-trousers hat geschrieben:
ralf.wenzel hat geschrieben:Ralf *Kapselung ist Kapselung ist Kapselung ;)
Amen.

..... anstatt über den Verwendungsnachweis viel zielgerichteter suchen zu können.

lg ADT

Der Verwendungsnachweis ist ja auch nicht mehr, was er mal war.

Unabhängig davon : Keine Regel ohne Ausnahme m.E.

In meinem Beispiel benutze ich eine Referenz auf eine interne Tabelle, welche später über eine Factory an eine beliebige Konvertierung übergeben wird. Nur der Konverter kennt am Ende die tatsächliche Struktur der Input-Tabelle Wozu sollte ich nun hier mit einem Getter arbeiten ? Abgesehen davon, das es je nach Release nicht ginge, da Returning nicht generisch typisiert sein darf.
Die Source_tab ist danach irrelevant, wird allerdings in dem Konstrukt auch nicht verändert und auf die Laufzeit wirkt es sich positiv aus.

VG,

GTO
"Code lügt nicht ^^"

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2214
Views
Erneut Feldsymbole & Datenreferenzen
von Vrosk » 09.11.2005 14:40 • Verfasst in ABAP® Core
3
Antw.
4547
Views
Verbuchungsbaustein - Rückgabe?
von xJeNnYx » 21.09.2009 14:53 • Verfasst in ABAP® für Anfänger
2
Antw.
2883
Views
JCO - Rückgabe an SAP Dateiinhalt
von steffi_ma » 22.12.2004 14:40 • Verfasst in Java & SAP®
0
Antw.
635
Views
SMARTFORM Rückgabe des Druckoutputs
von SAP_ENTWICKLER » 12.12.2017 06:03 • Verfasst in ABAP® Core
15
Antw.
7321
Views
Perfrom und Rückgabe von Werten
von Steffi221185 » 05.11.2007 12:49 • Verfasst in ABAP Objects®

Aktuelle Forenbeiträge

Zugriff auf Daten via Webdav
vor einer Stunde von msfox 2 / 37
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 einer Stunde von msfox 2 / 37
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