EXPORTING = IMPORTING?

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

Re: EXPORTING = IMPORTING?

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
ewx hat geschrieben:Mönsch Jungs, nu macht mal wieder halblang!


Exporting verhält sich wie Changing. Der Meinung bin ich auch, denn ich kann den per "Exporting" angegebenen Parameter ändern:
Aber doch nur IN der Methode. Einen CHANGING-Parameter kann ich außerhalb der Methode vorgeben. DAS meine ich mit "ist nicht vergleichbar". Ich dachte, meine Schirm-Metapher hätte das erklärt.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: EXPORTING = IMPORTING?

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
EXPORTING wird doch auch von aussen vorgegeben?!

Code: Alles auswählen.

REPORT zzenno21.

*----------------------------------------------------------------------*
*       CLASS l DEFINITION
*----------------------------------------------------------------------*
CLASS l DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS x EXPORTING a TYPE c.
ENDCLASS.                    "l DEFINITION

*----------------------------------------------------------------------*
*       CLASS l IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS l IMPLEMENTATION.
  METHOD x.
    IF a IS INITIAL.
      a = '1'.
    ELSE.
      a = '2'.
    ENDIF.
  ENDMETHOD.                    "x
ENDCLASS.                    "l IMPLEMENTATION

PARAMETERS v1 TYPE c LENGTH 1 DEFAULT space.
PARAMETERS v2 TYPE c LENGTH 1 DEFAULT 'X'.

START-OF-SELECTION.

  l=>x( importing a = v1 ).  WRITE: / 'V1 =', v1.
  l=>x( importing a = v2 ).  WRITE: / 'V2 =', v2.
Damit ist das quasi ein CHANGING-Parameter.

Re: EXPORTING = IMPORTING?

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Ach du liebe Sch......, du hast recht.

Es wird wirklich der Wert IN der Methode verändert, wenn man ihn außen ändert. Das habe ich für so unmöglich gehalten, dass ich das nichtmal ausprobiert habe.

Ich habe dein Beispiel abgeändert der Art, dass ich beide Aufrufe mit V1 gemacht und V1 zwischen den beiden Aufrufen außerhalb der Methode verändert habe. Im Debugger zeigt sich, dass das den Wert IN der Methode verändert. DAS ist in der Tat das Verhalten eines Changing-Parameters! Und: Das geht gar nicht, da gebe ich dir vollkommen recht. Selbst bei einer Referenzübergabe darf EXPORTING nichts von außen in die Methode übergeben, sondern nur umgekehrt.

Mea culpa - wie gesagt: Ich hab das für so undenkbar gehalten, dass ich es nichtmal getestet habe. Und jetzt bin ich zutiefst erschüttert, möglicherweise werde ich das mal im SCN zur Sprache bringen.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: EXPORTING = IMPORTING?

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
ewx hat geschrieben:Grade in dem Fall ist es halt ein nicht zu unterschätzender Stolperstein. Denn wenn ich eine Methode von RETURNING auf EXPORTING ändere, weil z. B. ein zweiter EXPORTING-Parameter dazu kommen muss, dann kann sich das rufende Programm deutlich anders verhalten als vorher.
Aber nur wenn du auf "alten" Systemen rumturnst bist zu gewzungen von RETURNING auf EXPORTING umzustellen. Auf "neuen" Systemen können Methoden inwzischen zusätzlich zum Returning-Parameter auch Exporting Parameter haben.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: EXPORTING = IMPORTING?

Beitrag von larsi (ForumUser / 47 / 2 / 11 ) »
black_adept hat geschrieben:Auf "neuen" Systemen können Methoden inwzischen zusätzlich zum Returning-Parameter auch Exporting Parameter haben.
"Neu" heißt dann in dem Fall vermutlich wieder mal >=7.40, oder?

Viele Grüße,
Lars

Re: EXPORTING = IMPORTING?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Hmmm... das ist das erste Mal, dass ich gesehen habe wie Ralf einknickt :wink:
Und so geht mir ein wichtiger Mitstreiter verloren :cry:

Ich bin nach wie vor der Meinung, dass CHANGING und EXPORTING nicht gleichzusetzen sind. Bei "per Reference" wird ja nicht der Wert selbst, sondern nur ein Zeiger darauf übergeben. Wie schon festgehalten, wird bei EXPORTING/IMPORTING erst am Ende der Methode der Wert (die Referenz?) tatsächlich an den Aufrufer übergeben. Meine Vermutung ist, dass genau hier der Unterschied liegt weil bei CHANGING die Änderung der Variable explizit erwünscht und jederzeit möglich ist. Theoretisch also auch bei einem Abbruch z.B. bei einer Exception. Ich glaube in diesem Fall bleibt eine per EXPORTING/IMPORTING übergebene Variable unverändert, während bei CHANGING die Variable aber sehrwohl verändert wird.
Bin leider nicht mehr im Büro, werd aber morgen das als erstes mal ausprobieren. Die Hoffnung stirbt zuletzt. :wink:

lg und gute n8
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: EXPORTING = IMPORTING?

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Erstens: Ich knicke nicht ein, sondern ich sehe, dass jemand faktisch recht hat - das ist (auch hier) schon öfters passiert. Stell mich nicht als rechthaberisch hin ;)

Zweitens: Mein Test ergab, dass der Wert am Anfang der Methode übergeben wird (bei EXPORTING).

Tut mir leid, aber einmal ein Schalker, immer ein Schalker. Die werden nie die Hoffnung verlieren, aber immer nur die Meister der Herzen sein.... ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: EXPORTING = IMPORTING?

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
a-dead-trousers hat geschrieben:Ich glaube in diesem Fall bleibt eine per EXPORTING/IMPORTING übergebene Variable unverändert, während bei CHANGING die Variable aber sehrwohl verändert wird.
Eben nicht. Bei Referenzübergabe verhalten sich exporting und changing absolut gleich so weit ich das bisher gesehen habe
larsi hat geschrieben:"Neu" heißt dann in dem Fall vermutlich wieder mal >=7.40, oder?
7.40, SP2
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: EXPORTING = IMPORTING?

Beitrag von larsi (ForumUser / 47 / 2 / 11 ) »
a-dead-trousers hat geschrieben:Ich bin nach wie vor der Meinung, dass CHANGING und EXPORTING nicht gleichzusetzen sind. Bei "per Reference" wird ja nicht der Wert selbst, sondern nur ein Zeiger darauf übergeben. Wie schon festgehalten, wird bei EXPORTING/IMPORTING erst am Ende der Methode der Wert (die Referenz?) tatsächlich an den Aufrufer übergeben. Meine Vermutung ist, dass genau hier der Unterschied liegt weil bei CHANGING die Änderung der Variable explizit erwünscht und jederzeit möglich ist. Theoretisch also auch bei einem Abbruch z.B. bei einer Exception. Ich glaube in diesem Fall bleibt eine per EXPORTING/IMPORTING übergebene Variable unverändert, während bei CHANGING die Variable aber sehrwohl verändert wird.
Bin leider nicht mehr im Büro, werd aber morgen das als erstes mal ausprobieren. Die Hoffnung stirbt zuletzt. :wink:
Ich fürchte, ich muss Dich enttäuschen. In meinem Test habe ich den Baustein bzw. die Methode mit einem RAISE verlassen. Dennoch war die Änderung des "by reference" übergebenen EXPORTING-Parameters auch danach beim Aufrufer sichtbar. Ergo: EXPORTING und CHANGING verhalten sich bei Übergabe per Referenz wohl doch gleich :wink:

Viele Grüße,
Lars

Re: EXPORTING = IMPORTING?

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
larsi hat geschrieben:In meinem Test habe ich den Baustein bzw. die Methode mit einem RAISE verlassen. Dennoch war die Änderung des "by reference" übergebenen EXPORTING-Parameters auch danach beim Aufrufer sichtbar.
Das ist allerdings übel!

Re: EXPORTING = IMPORTING?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Habs grad ausprobiert und auch mit GET REFERENCE die jeweiligen Variablen geprüft:
CHANGING und EXPORTING verhalten sich wirklich ident. :cry: :cry: :cry:
Somit der gleiche S...... wie CHANGING und USING in Form-Routinen.
Was mich aber noch mehr schockt ist der Umstand, dass so bei einer Exception trotzdem Daten verändert werden, bei denen man es nicht erwarten würde.
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: EXPORTING = IMPORTING?

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Da sind wir uns einig -- das geht gar nicht.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Vergleichbare Themen

5
Antw.
2062
Views
Programmverständnis II - importing- exporting
von Jan_M. » 20.05.2004 14:59 • Verfasst in ABAP® für Anfänger
2
Antw.
188
Views
IMPORTING und EXPORTING bei Schnittstellen-Methoden
von mrsecret2307 » 26.04.2023 21:56 • Verfasst in ABAP® für Anfänger
11
Antw.
3258
Views
...using/importing value(xxx) type c[(n)]???
von Gast » 09.06.2005 18:47 • Verfasst in ABAP® für Anfänger
5
Antw.
2861
Views
I_TAB als IMPORTING Parameter
von abap-strizi » 19.12.2005 11:18 • Verfasst in ABAP Objects®
3
Antw.
1898
Views
Methodenparameter Importing TYPE Textelement
von snooze2 » 19.01.2006 14:22 • Verfasst in ABAP Objects®

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 72
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141