Wie übergebe ich Parameter an eine FORM-Routine?


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

Wie übergebe ich Parameter an eine FORM-Routine?

Beitragvon DRABAP » 07.01.2003, 20:17

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
Dr. ABAP

Für diese Nachricht hat DRABAP einen Dank bekommen :
erzoo24
DRABAP
ForumUser
 
Beiträge: 30
Registriert: 02.01.2003, 15:10
Wohnort: Walldorf
Dank erhalten: 1 mal

Sponsor

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

Beispiel zum PERFORM mit Parameterübergabe

Beitragvon gse » 10.01.2003, 09:47

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

Für diese Nachricht hat gse einen Dank bekommen :
erzoo24
gse
ForumUser
 
Beiträge: 97
Registriert: 02.01.2003, 16:54
Dank erhalten: 1 mal


Zurück zu ABAP® Core

  Aktuelle Beiträge   
Application Log von mehreren Reports zusammenfassen
vor 12 Stunden von geo2k 2 Antw.
Material_maintain_dark
vor 9 Stunden von ralf.wenzel 2 Antw.
Entsperren & Passwort zurücksetzen via BSP
vor 15 Stunden von BasisGuy 0 Antw.
Textkonvertierung von SAP nach .txt
vor 13 Stunden von a-dead-trousers 3 Antw.
Speichern-Dialog bei der Bestellung
vor 16 Stunden von Sebastian82 0 Antw.

  Ähnliche Beiträge beta
form-Routine und interne Tabellen
06.07.2004, 17:59 von babap 6 Antw.
Übergabe einer SELECT-OPTIONS Tabelle an FORM Routine
20.09.2006, 08:30 von DeathGuardian 3 Antw.
Dynamisch Form eine FB hinzufügen
19.03.2008, 15:04 von andipesel 0 Antw.
C Routine im Report
10.10.2016, 13:10 von JohnLocklay 0 Antw.
ABAP Routine Fortschreibungsregel im BW
30.04.2007, 12:45 von gruftassel 16 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron