EXPORT/RETURNING vs. CHANGING


Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Moderatoren: Jan, Steff

EXPORT/RETURNING vs. CHANGING

Beitragvon ralf.wenzel » 27.02.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
ralf.wenzel
Top Expert
 
Beiträge: 3374
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 213 mal
Ich bin: Freiberufler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon Icke0801 » 27.02.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 =-
Icke0801
ForumUser
 
Beiträge: 91
Registriert: 28.12.2007, 19:08
Wohnort: Berlin
Dank erhalten: 2 mal
Ich bin: Entwickler/in

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon fr-g » 27.02.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.
fr-g
ForumUser
 
Beiträge: 45
Registriert: 26.05.2017, 15:25
Dank erhalten: 12 mal
Ich bin: Entwickler/in

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon tm987456 » 27.02.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( ) ).
 

Für diese Nachricht hat tm987456 einen Dank bekommen :
ST22
tm987456
ForumUser
 
Beiträge: 17
Registriert: 05.05.2017, 07:50
Dank erhalten: 7 mal
Ich bin: Entwickler/in

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon nickname8 » 27.02.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/
nickname8
Specialist
 
Beiträge: 100
Registriert: 18.07.2015, 08:22
Dank erhalten: 12 mal
Ich bin: Entwickler/in

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon black_adept » 27.02.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
black_adept
Top Expert
 
Beiträge: 3198
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 560 mal
Ich bin: Freiberufler/in

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon AdrianSchm » 27.02.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 :)
AdrianSchm
ForumUser
 
Beiträge: 28
Registriert: 23.03.2017, 19:59
Dank erhalten: 2 mal
Ich bin: Entwickler/in

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon ralf.wenzel » 27.02.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
ralf.wenzel
Top Expert
 
Beiträge: 3374
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 213 mal
Ich bin: Freiberufler/in

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon erp-bt » 28.02.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_index_htm/7.52/de-DE/abenref_transf_output_param_guidl.htm
...entwickelnder Berater...beratender Entwickler

Für diese Nachricht hat erp-bt einen Dank bekommen :
fr-g
erp-bt
Specialist
 
Beiträge: 156
Registriert: 14.05.2008, 10:49
Dank erhalten: 20 mal

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon a-dead-trousers » 28.02.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_index_htm/7.52/de-DE/abenref_transf_output_param_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
a-dead-trousers
Top Expert
 
Beiträge: 3185
Registriert: 07.02.2011, 13:40
Dank erhalten: 789 mal
Ich bin: Entwickler/in

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon ralf.wenzel » 28.02.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_index_htm/7.52/de-DE/abenref_transf_output_param_guidl.htm


Jetzt verstehe ich auch, was mit dem Satz gemeint war.


Ralf
ralf.wenzel
Top Expert
 
Beiträge: 3374
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 213 mal
Ich bin: Freiberufler/in

Re: EXPORT/RETURNING vs. CHANGING

Beitragvon AdrianSchm » 04.03.2019, 17:05

Ja manchmal bin ich ein bisschen wirr im Kopf und kann dann keinen klaren Satz bilden :)
AdrianSchm
ForumUser
 
Beiträge: 28
Registriert: 23.03.2017, 19:59
Dank erhalten: 2 mal
Ich bin: Entwickler/in


Zurück zu ABAP Objects®

  Aktuelle Beiträge   
gelöst Switchen via Radiobutton zwischen Parameter & Select-options
vor 5 Stunden von der_Schwede 2 Antw.
Klasse /SAPSLL/CL_PRCLS_API
vor 9 Stunden von SAP_ENTWICKLER 0 Antw.
SAP Sanbdox Zugriff
vor 10 Stunden von doorconfig 0 Antw.
WF - 'fehlender' Parameter in BO-Methode
vor 11 Stunden von bapimueller 0 Antw.
FS 'WS_UPLOAD' in Klasse umwandeln cl_gui_frontend_services
vor 12 Stunden von L0w-RiDer 0 Antw.

  Ähnliche Beiträge beta
Keine Beiträge gefunden - versuche es mit der erweiterten Suche.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder