EXPORT/RETURNING vs. CHANGING

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

EXPORT/RETURNING vs. CHANGING

Beitrag von ralf.wenzel (Top Expert / 3414 / 149 / 219 ) » 27. Feb 2019 08:07

Ich bin ja bekanntlich ein großer Fan von funktionalen Methoden, weil man die so schön an Operandenpositionen einsetzen kann. Angenommen, ich habe eine Methode, die die Variable var_a verändern soll, ergäben sich folgende Möglichkeiten:

Code: Alles auswählen.

var_a = obj->meth( var_a )
oder

Code: Alles auswählen.

obj->meth( changing var_a ).
Beides funktioniert und ist rein technisch richtig. Ich frage mich, wie verwirrend die erste Darstellung für andere sein könnte, weshalb ich das hier zur Diskussion stelle. Welche Variante findet ihr besser und warum?


Ralf


Re: EXPORT/RETURNING vs. CHANGING

Beitrag von Icke0801 (ForumUser / 91 / 50 / 2 ) » 27. Feb 2019 08:30

Obwohl ich selbst die Variante 1 immer nutze, muss ich doch zugeben, dass Variante 2 in diesem Zusammenhang aussagekräftiger ist.
--
Grüße aus der Endlosschleife
-= Icke0801 =-

Re: EXPORT/RETURNING vs. CHANGING

Beitrag von fr-g (ForumUser / 45 / 4 / 12 ) » 27. Feb 2019 08:58

Ich würde auch Variante 2 nehmen. Von einem IMPORTING-Parameter würde ich hier (zumindest in ABAP) erwarten, dass er nicht geändert wird. Und du gibst ja mit RETURNING auch in jedem Fall eine Kopie zurück.
CHANGING finde ich außerdem noch für Referenzübergaben bei bestimmten Konstellationen sinnvoll, auch wenn RETURNING sich netter schreibt.

Re: EXPORT/RETURNING vs. CHANGING

Beitrag von tm987456 (ForumUser / 19 / 13 / 8 ) » 27. Feb 2019 09:20

Mit returning bin ich flexibler als mit changing, denn ich kann sowohl eine Variable ändern, wie auch das Ergebnis in einer neuen Variable speichern.

Code: Alles auswählen.

DATA(selected_ids) = read_ids( ).
DATA(modified_ids) = modify_ids( selected_ids ).
Finde ich persönlich schöner, sauberer und lesbarer als das hier:

Code: Alles auswählen.

DATA( selected_ids ) = read_ids( ).
modify_ids( changing selected_ids ).
Die Variante mit returning bietet mir ausserdem die Möglichkeit von Method Chaining.

Code: Alles auswählen.

DATA(modified_ids) = modify_ids( read_ids( ) ).

Folgende Benutzer bedankten sich beim Autor tm987456 für den Beitrag:
ST22


Re: EXPORT/RETURNING vs. CHANGING

Beitrag von nickname8 (Specialist / 106 / 15 / 16 ) » 27. Feb 2019 09:44

Ich sehe es genauso wie tm987456. Ich habe noch nie CHANGING in einer eingenen Methode verwendet.

Anmerkung: man Darf nicht vergessen, dass RETURNING eine Kopie zurückgibt, und nicht die Variable an sich ändert (außer man übergibt Objekte oder sonstige Referenzen).

Dazu ein interessanter Artikel: https://blogs.sap.com/2017/07/30/the-my ... parameter/

Re: EXPORT/RETURNING vs. CHANGING

Beitrag von black_adept (Top Expert / 3243 / 54 / 568 ) » 27. Feb 2019 11:35

ralf.wenzel hat geschrieben: Angenommen, ich habe eine Methode, die die Variable var_a verändern soll
Die Methode soll die (übergebene) Variable ändern: --> CHANGING.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: EXPORT/RETURNING vs. CHANGING

Beitrag von AdrianSchm (ForumUser / 29 / 4 / 3 ) » 27. Feb 2019 15:43

Wusstest Ihr das man im Exporting einer Methode auch der Methode einen Wert Mitgeben könnt wenn ihr keine Wertübergabe macht.
Also ist Exporting auch sowas wie Changing :)

Re: EXPORT/RETURNING vs. CHANGING

Beitrag von ralf.wenzel (Top Expert / 3414 / 149 / 219 ) » 27. Feb 2019 17:16

AdrianSchm hat geschrieben:Wusstest Ihr das man im Exporting einer Methode auch der Methode einen Wert Mitgeben könnt wenn ihr keine Wertübergabe macht.
Also ist Exporting auch sowas wie Changing :)
Hä?


Ralf

Re: EXPORT/RETURNING vs. CHANGING

Beitrag von erp-bt (Specialist / 156 / 4 / 20 ) » 28. Feb 2019 06:42

AdrianSchm hat geschrieben:Wusstest Ihr das man im Exporting einer Methode auch der Methode einen Wert Mitgeben könnt wenn ihr keine Wertübergabe macht.
Also ist Exporting auch sowas wie Changing :)
Ja Exporting verhält sich wie Changing bei Referenzübergabe. Deswegen ist es auch eine gute Praxis den Export-Parameter zu Beginn der Methode zu initialisieren.

https://help.sap.com/doc/abapdocu_752_i ... _guidl.htm

Folgende Benutzer bedankten sich beim Autor erp-bt für den Beitrag:
fr-g

...entwickelnder Berater...beratender Entwickler

Re: EXPORT/RETURNING vs. CHANGING

Beitrag von a-dead-trousers (Top Expert / 3212 / 81 / 798 ) » 28. Feb 2019 07:32

erp-bt hat geschrieben:
AdrianSchm hat geschrieben:Wusstest Ihr das man im Exporting einer Methode auch der Methode einen Wert Mitgeben könnt wenn ihr keine Wertübergabe macht.
Also ist Exporting auch sowas wie Changing :)
Ja Exporting verhält sich wie Changing bei Referenzübergabe. Deswegen ist es auch eine gute Praxis den Export-Parameter zu Beginn der Methode zu initialisieren.

https://help.sap.com/doc/abapdocu_752_i ... _guidl.htm
Der erweiterte Syntaxcheck bzw. der Codeinspector warnt sogar, wenn eine als EXPORTING deklarierte Variable ohne entsprechender Initialisierung verwendet wird.
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.07
Basis: 7.40

Re: EXPORT/RETURNING vs. CHANGING

Beitrag von ralf.wenzel (Top Expert / 3414 / 149 / 219 ) » 28. Feb 2019 07:41

erp-bt hat geschrieben:
AdrianSchm hat geschrieben:Wusstest Ihr das man im Exporting einer Methode auch der Methode einen Wert Mitgeben könnt wenn ihr keine Wertübergabe macht.
Also ist Exporting auch sowas wie Changing :)
Ja Exporting verhält sich wie Changing bei Referenzübergabe. Deswegen ist es auch eine gute Praxis den Export-Parameter zu Beginn der Methode zu initialisieren.

https://help.sap.com/doc/abapdocu_752_i ... _guidl.htm
Jetzt verstehe ich auch, was mit dem Satz gemeint war.


Ralf

Re: EXPORT/RETURNING vs. CHANGING

Beitrag von AdrianSchm (ForumUser / 29 / 4 / 3 ) » 4. Mär 2019 17:05

Ja manchmal bin ich ein bisschen wirr im Kopf und kann dann keinen klaren Satz bilden :)

Seite 1 von 1

Aktuelle Forenbeiträge

Quellcodeänderung mehrerer Programme
vor 10 Minuten von Tron 11 / 307
BAPI_PO_CREATE1 und Einkaufsinfosatz
Gestern von SweetRuedi 1 / 55
Format xx oder xx-xx oder xx-xx-xx
vor 2 Tagen von black_adept 5 / 195
Salv Table - Layouts speichern
vor 2 Tagen von ewx 2 / 81
WCOCO: Gruppe für Betragsfelder 0S01
vor 3 Tagen von SAP_ENTWICKLER 1 / 41

Unbeantwortete Forenbeiträge

BAPI_PO_CREATE1 und Einkaufsinfosatz
Gestern von SweetRuedi 1 / 55
WCOCO: Gruppe für Betragsfelder 0S01
vor 3 Tagen von SAP_ENTWICKLER 1 / 41
CAS-Nr.: Chemical Abstracs Service
vor 5 Tagen von SAP_ENTWICKLER 1 / 76
Interaktives Skript, Rolle IC-Manager
vor einer Woche von erubadhron86 1 / 118
Wie findet man das Rahmenprogramm eines Infosets?
vor einer Woche von DeathAndPain 1 / 142