Die PARAMETERS Anweisung in ABAP: Syntax, Optionen & Beispiele

kategorie
ABAP-Statements
Veröffentlicht
autor
Johannes

Die PARAMETERS-Anweisung ist ein ABAP-Schlüsselwort, das Du ausschließlich im Deklarationsteil von ausführbaren Programmen (REPORT), Funktionsgruppen oder Modulpools verwendest. Ihr Zweck ist es, ein einzelnes Eingabefeld auf dem Standard-Selektionsbild (Dynpro 1000) des Programms zu definieren.

Über dieses Feld kann der Benutzer genau einen Wert eingeben, der dann im Programm in einer globalen Variablen mit demselben Namen wie der Parameter zur Verfügung steht.

Wichtige Abgrenzung zu SELECT-OPTIONS:

  • PARAMETERS: Für die Eingabe eines einzelnen Wertes (z. B. eine Kundennummer, ein Datum, ein Werk). Erzeugt eine Variable.
  • SELECT-OPTIONS: Für komplexe Abgrenzungen (z. B. ein Bereich von Kundennummern, mehrere einzelne Materialien, Ausschluss bestimmter Werte). Erzeugt intern eine Tabelle (Ranges-Tabelle).

Syntax

PARAMETERS <param_name> { {TYPE <datentyp> [LENGTH <länge>] [DECIMALS <nachkommastellen>]} | {LIKE <datenobjekt>} }
[DEFAULT <standardwert>]
[OBLIGATORY]
[LOWER CASE]
[AS CHECKBOX [USER-COMMAND <funktcode>]]
[RADIOBUTTON GROUP <gruppenname> [USER-COMMAND <funktcode>]]
[MEMORY ID <pid>]
[NO-DISPLAY]
[VISIBLE LENGTH <sichtbare_länge>]
[MODIF ID <modifikationsgruppe>]
[VALUE-REQUEST] " Für benutzerdefinierte F4-Hilfe
[HELP-REQUEST]. " Für benutzerdefinierte F1-Hilfe
" Ältere / Seltenere Zusätze wie MATCHCODE OBJECT, AS SEARCHPATTERN etc.

Bestandteile

  • <param_name>: Der Name des Parameters. Unter diesem Namen wird eine globale Variable im Programm angelegt, und ( wenn nicht NO-DISPLAY) ein Eingabefeld auf dem Selektionsbild erzeugt.
  • TYPE <datentyp> ... oder LIKE <datenobjekt>: (Obligatorisch) Definiert den Datentyp des Parameters und der zugehörigen Variablen.
    • TYPE: Bevorzugt! Kann ein eingebauter ABAP-Typ (I, D, STRING, C, P…), ein Datenelement aus dem ABAP Dictionary (kunnr, matnr, werks_d…) oder ein lokaler Typ sein. Bei Bezug auf Dictionary-Typen werden oft automatisch Eingabeprüfungen, F1- und F4-Hilfen bereitgestellt.
    • LIKE: Ältere Syntax, bezieht sich auf ein bereits deklariertes Datenobjekt. Sollte durch TYPE ersetzt werden.
  • DEFAULT <standardwert>: (Optional) Gibt einen Wert an, mit dem das Eingabefeld auf dem Selektionsbild vorbelegt wird.
  • OBLIGATORY: (Optional) Macht das Feld zu einem Pflichtfeld. Der Benutzer muss einen Wert eingeben, bevor er das Programm ausführen kann.
  • LOWER CASE: (Optional) Erlaubt die Eingabe von Kleinbuchstaben und verhindert die automatische Umwandlung in Großbuchstaben (Standardverhalten bei vielen Datentypen).
  • AS CHECKBOX: (Optional) Stellt den Parameter als Ankreuzfeld (Checkbox) dar. Die Variable <param_name> sollte dann TYPE c LENGTH 1 sein ('X' = angekreuzt, ' ' = nicht angekreuzt).
  • RADIOBUTTON GROUP <gruppenname>: (Optional) Stellt den Parameter als Auswahlknopf (Radiobutton) dar. Alle Parameter mit derselben <gruppenname> bilden eine Gruppe, von der nur eine Option ausgewählt werden kann. Erfordert mindestens zwei Radiobuttons pro Gruppe. <param_name> oft TYPE c LENGTH 1.
  • MEMORY ID <pid>: (Optional) Verknüpft den Parameter mit einer SAP Memory ID. Das Feld wird mit dem Wert aus dem SAP Memory vorbelegt (GET PARAMETER), falls vorhanden.
  • NO-DISPLAY: (Optional) Die Variable <param_name> wird zwar deklariert, aber es wird kein Eingabefeld auf dem Selektionsbild angezeigt. Nützlich für “versteckte” Parameter, die z. B. über Varianten oder SUBMIT ... WITH ... übergeben werden.
  • VISIBLE LENGTH <sichtbare_länge>: (Optional) Steuert die sichtbare Breite des Eingabefeldes auf dem Bildschirm ( kann kürzer sein als die tatsächliche Feldlänge).
  • MODIF ID <modifikationsgruppe>: (Optional) Weist dem Parameter eine Modifikationsgruppe zu. Dies erlaubt die dynamische Manipulation des Feldes (z. B. Ausblenden, Deaktivieren) im Ereignis AT SELECTION-SCREEN OUTPUT.

Funktionsweise

  1. Das Programm liest beim Start die Deklarationen.
  2. Für jeden PARAMETERS-Befehl wird eine globale Variable angelegt.
  3. Das System generiert automatisch das Standard-Selektionsbild (Dynpro 1000) mit den entsprechenden Eingabefeldern ( außer bei NO-DISPLAY).
  4. Der Benutzer gibt Werte in die Felder ein und führt das Programm aus (F8).
  5. Nach der Verarbeitung des Selektionsbildes stehen die eingegebenen (oder Standard-) Werte in den globalen Variablen ( <param_name>) zur Verfügung und können im weiteren Programmverlauf (z. B. ab START-OF-SELECTION) verwendet werden.

Beispiele

REPORT z_parameter_demo.
" --- Deklarationsteil ---
TABLES: spfli. " Für Dictionary-Bezug
" Einfacher Parameter mit Typisierung über Dictionary
PARAMETERS p_carrid TYPE spfli-carrid.
" Pflichtparameter Datum mit Standardwert (heute)
PARAMETERS p_date TYPE d OBLIGATORY DEFAULT sy-datum.
" Checkbox für Testlauf
PARAMETERS p_test AS CHECKBOX.
" Radiobuttons für Ausgabemodus
PARAMETERS: p_list RADIOBUTTON GROUP mode DEFAULT 'X' USER-COMMAND radio,
p_grid RADIOBUTTON GROUP mode.
" Parameter, der nicht angezeigt wird
PARAMETERS p_intern TYPE i NO-DISPLAY.
" Parameter, der Kleinbuchstaben erlaubt
PARAMETERS p_text TYPE c LENGTH 40 LOWER CASE.
" --- Verarbeitungslogik ---
START-OF-SELECTION.
WRITE: / 'Fluggesellschaft:', p_carrid.
WRITE: / 'Datum:', p_date.
IF p_test = 'X'.
WRITE: / 'Testlauf ist aktiv.'.
ELSE.
WRITE: / 'Echtlauf.'.
ENDIF.
IF p_list = 'X'.
WRITE: / 'Ausgabe als Liste gewählt.'.
ELSE.
WRITE: / 'Ausgabe als Grid gewählt.'.
ENDIF.
WRITE: / 'Eingegebener Text:', p_text.
" p_intern könnte hier verwendet werden, wenn es z.B. über SUBMIT gefüllt wurde.

Wichtige Hinweise / Best Practice

  • PARAMETERS gehört immer in den Deklarationsteil eines Programms.
  • Nutze den TYPE-Zusatz mit Bezug auf Datenelemente oder Tabellenfelder aus dem ABAP Dictionary (SE11). Dadurch erhältst Du automatisch den korrekten Datentyp, Länge, F1-Hilfe, F4-Wertehilfe und ggf. Eingabeprüfungen.
  • Verwende PARAMETERS für einfache Eingaben, bei denen der Benutzer nur einen einzelnen Wert angeben soll. Für komplexere Abgrenzungen (Bereiche, Mehrfachwerte, Ausschlüsse) sind SELECT-OPTIONS vorgesehen.
  • Mache Felder mit OBLIGATORY zu Pflichtfeldern, wenn eine Eingabe für die Programmlogik unerlässlich ist.
  • Nutze AS CHECKBOX und RADIOBUTTON GROUP für einfache Ja/Nein-Entscheidungen oder exklusive Auswahlmöglichkeiten.