Die Parameter von Form-Routinen generisch typisieren

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Siehe Dynamische/Generische Programmierung.

Siehe Kategorie: Dynamische/Generische Programmierung.

Die Parameter von Form-Routinen lassen sich vielfältig generisch typisieren. Es kann in Form-Routinen auch darauf verzichtet werden die Parameter zu typisieren. Aber es ist performanter und besser lesbar, wenn die Parameter möglichst genau typisiert werden. Der Entwickler wird jedoch nicht dazu gezwungen eine genaue Typisierung anzugeben und es kann Sinn machen, einzelne oder mehrere Parameter einer Form-Routine generisch zu typisieren.

Using-/Changing-/Value-Parameter

  • Sowohl Using-Parameter als auch Changing-Parameter werden als Referenz übergeben. Wird innerhalb der Routine ein Using-Parameter oder Changing-Parameter geändert, wird in beiden Fällen die Referenzvariable geändert.
  • Aus Lesbarkeitsgründen sollte ein Using-Parameter jedoch nie geändert werden. Der Entwickler erwartet beim Lesen der Schnittstelle, dass der Using-Parameter nicht geändert wird - auch wenn es technisch möglich ist.
  • Will man zwingend verhindern, dass eine mögliche Änderung eines Using-Parameter den Referenzparameter ändert, so kann man den Parameter mit Wertübergabe definieren
form test
  using value(pcv_variable) type c.

Generische Typisierung

  • keine Typisierung = Alle Datentypen sind erlaubt
  • type any = Alle Datentypen sind erlaubt (besser "type any" als keine Typisierung, da es besser lesbar ist)
  • type c, n, p, x = Datentyp c, n, p, x
  • type table = Eine Standardtablle wird erwartet
  • type any table = Eine interne Tabelle jeden Typs
  • type index table = Eine Standardtabelle oder sortierte Tabelle (keine Hash-Tabelle)
  • type sorted table = Eine sortierte Tabelle
  • type hashed table = Eine Hash-Tabelle
  • type line of <itab> = Eine Zeile einer internen Tabelle
  • type <type> = Ein Typ aus dem Data-Dictionary oder programmlokaler Typ
  • like <datenobjekt> = Typ wie programmlokales Datenobjekt oder Typ aus Data-Dictionary
  • type ref to <klasse> = Referenzvariable für die Klasse oder das Interface

Beispiel Coding

*----------------------------------------------------------------------*
*Einfügen Feld in eine Batch-Input-Mappe                               *
*----------------------------------------------------------------------*
FORM bdc_field
  USING fnam type bdcdata-fnam "Feldname
        fval type any.         "Feldwert 

  Data: ls_bdcdata type bdcdata.

  ls_bdcdata-fnam = fnam.
  ls_bdcdata-fval = fval.
  APPEND ls_bdcdata to gt_bdcdata.

ENDFORM.                    "BDC_FIELD

Web-Links