Hallo,
erstmal die erklärung für FORM's.
(Soweit ich es weiß. Lasse mich gern des besseren belehren)
Es gibt:
TABLES
USING var
USING VALUE(var)
CHANGING var
CHANGING VALUE(var)
*) TABLES [call by referenz]
sollte laut Hilfe nicht verwendet werden.
Tabellen könne auch mit USING und CHANGING übergeben werden.
zu beachten: wird eine itab ohne Kopfzeile übergeben, wird die itab in der FORM dynamisch um eine Kopfzeile erweiter.
*) USING var [call by referenz]
ist komischer weise das gleiche wie CHANGING var
*) USING VALUE(var) [call by value]
dem Unterprogramm wird eine Kopie der Variablen übergeben. Änderungen im Unterprogramm wirken sich auf die Variable im Programm nicht aus.
*) CHANGING var [call by referenz]
dem Unterprogramm wird die dereferenzierte Adresse des Aktualparameters übergeben.
Das Unterprogramm arbeitet direkt mit der original Variable. Wird die Variable im Unterprogramm geändert, ändert sie sich sofort im Programm mit.
*)CHANGING VALUE(var) [call by value and result]
Dem unterprogramm wird eine Kopie der Variablen zum ändern übergeben. Am Ende des Unterprogramm's wird die Kopie über die orig. Variable geschrieben.
by value: Vorteil: bricht das Unterprogramm ab, wird die orig. Variable nicht verändert.
by referenz: Vorteil. Kopieraufwand (lokale Kopie) entfällt, besonders große Tabellen sollten bei referenz übergeben werden.
das ist mal alles, was mir so auf die schnelle einfällt.
mfg
Richard