Wie übergebe ich Parameter an eine FORM-Routine?

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

Wie übergebe ich Parameter an eine FORM-Routine?

Beitrag von DRABAP (ForumUser / 30 / 0 / 1 ) »
Bei der Typisierung von Parametern für eine FROM-Routine hat man die Qual der Wahl. Leider bietet die Freiheit an dieser Stelle auch Anlaß zur Verwirrung. Man hat insgesamt 4 Möglichkeiten.
Einerseits kann man zwischen Referenz- und Wertparameter wählen, anderseits kann man als Zugriff "ändernd" und "nichtändernd" wählen. Ändernd bezieht sich dabei auf den Aktualparameter, als das was man beim Aufruf angibt. Eine Unschönheit ist, dass USING nicht unbedingt das bedeuted was man erwartet. Wählt man einen USING Referenzparameter (also ohne VALUE), so passiert genau daselbe wie bei CHANGING. Ändert man den Formalparameter so ändert sich auch sofort der Aktualparameter (man ändert also, ohne das man "ändernd" also CHANGING angeben hat). Wählt man also einen USING-Referenzparameter, so sollte man den Formalparameter innerhalb der Routine nicht ändern. Ansonsten greift man lieber zu einem USING VALUE. Man arbeit dann quasi auf einer lokalen Kopie. Der wesentliche Unterschied zwischen VALUE oder nicht VALUE besteht darin, dass bei VALUE kopiert wird. Dies kann bei großen Datenvolumina tuer sein. Zudem kann man keine generischen Typen für Value-Parameter angeben. Will man ändern, so empfehlen sich in der Regel CHANGING-Referenzparameter. Der Unterschied zu CHANGING VALUE ist, dass die Änderungen sofort aktiv werden. Bei VALUE werden die Änderungen erst nach ordungsgemäßem Verlassen der Routine wirksam (also nicht bei vorzeitigem Abbruch).
Abschließend kann man eigentlich sagen:
  • Will man ändern, so sollte man CHANGING verwenden.
  • Will man nicht ändern, hat keine "großen" Datenvolumina und benötigt keine generische Parametertypen, so sollte man USING VALUE verwenden.
  • ansonsten sollte man USING verwenden und den Formalparameter nicht ändern.
  • CHANGING VALUE sollte man eigentlich vermeiden

Folgende Benutzer bedankten sich beim Autor DRABAP für den Beitrag:
erzoo24

Dr. ABAP

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


Beispiel zum PERFORM mit Parameterübergabe

Beitrag von gse (ForumUser / 97 / 0 / 2 ) »
Hallo DRABAP,

erlaube mir noch ein kleines Beispiel zum Thema Parameterübergabe beizusteuern. ;)

Code: Alles auswählen.

PARAMETERS :
   p_gdat  TYPE syst-datum,                   " Gültig ab Datum
   p_gzeit TYPE syst-uzeit.                   " Gültig ab Zeit

DATA:  datum                 TYPE d,
           zeit                     TYPE t,
           zeitstempel_akt   TYPE yrdsdwk0_zeitpunkt_fmt,
           tzonref                TYPE tzonref,
           mein_zeitstempel TYPE timestamp.

*Datum und Zeit konvertieren in Zeitstempel
  PERFORM convert_date
                          USING    p_gdat
                                       p_gzeit
                   CHANGING    zeitstempel_akt.


*&---------------------------------------------------------------------*
*&      Form  CONVERT_DATE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_DATUM  text
*      -->P_ZEIT  text
*      <--P_ZEITSTEMPEL_AKT  text
*----------------------------------------------------------------------*
FORM convert_date USING    p_datum
                           p_zeit
                  CHANGING p_zeitstempel_akt.

  CLEAR tzonref-tzone.

  CONVERT DATE            p_gdat
          TIME            p_gzeit
          INTO TIME STAMP tzonref-tstamps
               TIME ZONE  tzonref-tzone.


  zeitstempel_akt = tzonref-tstamps.


ENDFORM.                    " CONVERT_DATE
weiterhin frohes schaffen! gse

Folgende Benutzer bedankten sich beim Autor gse für den Beitrag:
erzoo24


Seite 1 von 1

Vergleichbare Themen

3
Antw.
3683
Views
Selektionstabelle als Parameter an Form Routine übergeben
von ronin » 01.08.2008 17:00 • Verfasst in ABAP® für Anfänger
2
Antw.
1504
Views
Änderung per Form Routine
von thr74 » 23.07.2011 00:48 • Verfasst in ABAP® für Anfänger
6
Antw.
3341
Views
form-Routine und interne Tabellen
von HR-SAPLER » 06.07.2004 11:09 • Verfasst in ABAP® Core
5
Antw.
7857
Views
Form-routine dynamisch aufrufen
von Pyro » 20.08.2010 09:20 • Verfasst in ABAP® für Anfänger
4
Antw.
3758
Views
dynamische Maßnahme in externe Form-Routine
von donny » 06.04.2006 17:38 • Verfasst in Human Resources

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

(Lange) Gedankenstriche in ABAP
vor 5 Stunden von fr-g 9 / 148
Länge von Datenelement
Gestern von DeathAndPain gelöst 8 / 159

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

(Lange) Gedankenstriche in ABAP
vor 5 Stunden von fr-g 9 / 148
Länge von Datenelement
Gestern von DeathAndPain gelöst 8 / 159

Unbeantwortete Forenbeiträge

SAP GUI Script bei mehreren Systemen
vor einer Woche von i34V 1 / 94
Equipment ALE Integration
vor einer Woche von Prego 1 / 95