Show TOC Anfang des Inhaltsbereichs

Eingabeüberprüfungen in der Ablauflogik  Dokument im Navigationsbaum lokalisieren

Um bei der PAI-Verarbeitung, die Werte von Dynpro-Feldern in der Dynproablauflogik zu überprüfen kann man zwei spezielle Varianten der FIELD-Anweisung verwenden. Diese Art der Eingabeüberprüfung wird noch aus Kompatibilitätsgründen unterstützt und sollte nicht mehr verwendet werden.

Überprüfung gegen Werteliste

Ein Dynpro-Feld läßt sich wie folgt mit einer Werteliste vergleichen:

FIELD f VALUES (v1, v2,...).

Die einzelnen Einträge v1, v2,... der Liste können folgendes Format haben:

·        [NOT] val

·        [NOT] BETWEEN val1 AND val2

Es kann gegen einzelne Vergleichsfelder val oder Intervalle zwischen val1 und val2 geprüft werden. Die Vergleichsfelder müssen den Wertebereich des Datentyps CHAR oder NUMC haben, müssen in Hochkommata eingeschlossen werden und müssen in Großschreibung angegeben werden. Falls die Überprüfung einen ungültigen Wert ergibt, wird eine Fehlernachricht gesendet und das entsprechende Eingabefeld wieder eingabebereit gemacht.

Die Eingabehilfe für f kann ebenfalls die Werteliste hinter FIELD verwenden und unterstützt den Benutzer dadurch bei der richtigen Eingabe.

Die Funktionalität der FIELD-Anweisung zur Steuerung des Datentransports gilt auch mit dem Zusatz VALUES.

Überprüfung gegen Datenbanktabellen

Ein Dynpro-Feld läßt sich wie folgt mit einer Datenbanktabelle vergleichen:

FIELD f SELECT   *
            FROM  dbtab
            WHERE k1 = f1 AND k2 = f2 AND...
            [INTO  tables_area]
            WHENEVER [NOT] FOUND SEND ERRORMESSAGE|WARNING
                                      [num [WITH h1 ... h4]].

Die FIELD-Anweisung wird mit einer SELECT-Anweisung kombiniert. Die Syntax dieser SELECT-Anweisung muss genauso eingegeben werden, wie hier gezeigt. Insbesondere sind in der WHERE-Bedingung keine anderen Vergleichsoperatoren als das Gleichheitszeichen erlaubt (auch EQ ist nicht möglich). In der WHERE-Bedingung werden die Felder des Primärschlüssels k1 k2 ... der Einträge in der Datenbanktabelle dbtab mit Dynpro-Feldern f1 f2 ... verglichen. Falls ein Eintrag gefunden wird, kann er in den Tabellenarbeitsbereich eines Dynpro-Felds geschrieben werden, das durch Übernahme aus dem ABAP Dictionary definiert wurde. Je nach Ergebnis der Abfrage kann eine Fehlernachricht oder eine Warnung gesendet werden, die das Eingabefeld zu f wieder eingabebereit macht.

Mit num kann eine Nachrichtennummer angegeben werden, deren hier nur zweistellige Nachrichtenklasse im Zusatz MESSAGE-ID der programmeinleitenden Anweisung des ABAP-Programms angegeben sein muss. Ohne Angabe einer Nachrichtenklasse wird eine Standardnachricht gesendet. Mit WITH kann der Inhalt von Literalen oder Dynpro-Feldern an eventuelle Platzhalter (&) der Nachricht übergeben werden.

Die Eingabehilfe für f kann ebenfalls die SELECT-Anweisung hinter FIELD verwenden und unterstützt den Benutzer dadurch bei der richtigen Eingabe.

Die Anweisung SELECT kann auch in der Dynproablauflogik stehen ohne mit FIELD kombiniert zu sein. Dies erlaubt es, Dynpro-Felder ohne den Aufruf von ABAP-Modulen mit Inhalten aus Datenbanktabellen zu füllen. Die Funktionalität der FIELD-Anweisung zur Steuerung des Datentransports gilt auch in Kombination mit SELECT.

Beispiel

Eingabeüberprüfungen in der Ablauflogik.

PROGRAM demo_dynpro_value_select MESSAGE-ID dw.

DATA: ok_code TYPE sy-ucomm,
      carrier TYPE spfli-carrid,
      connect TYPE spfli-connid.

CALL SCREEN 100.

MODULE init_screen_0100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.
ENDMODULE.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE module_1 INPUT.
  MESSAGE i888(sabapdocu) WITH text-001 carrier
                        text-002 connect.
ENDMODULE.

MODULE module_2 INPUT.
  MESSAGE i888(sabapdocu) WITH text-001 carrier
                        text-002 connect.
ENDMODULE.

Die statische Folgedynpronummer von Dynpro 100 ist 100 und sein Layout ist wie folgt:

Diese Grafik wird im zugehörigen Text erklärt

Den Eingabefeldern sind die aus dem Programm übernommenen Felder carrier und connect zugeordnet. Der Funktionscode der Drucktaste ist EXECUTE.

Im GUI-Status STATUS_100 ist das Symbol Diese Grafik wird im zugehörigen Text erklärt (F12) durch den Funktionscode CANCEL mit dem Funktionstyp E aktiviert. Weiterhin ist der Funktionstaste F8 der Funktionscode EXECUTE zugeordnet.

Die Bildschirmablauflogik ist:

PROCESS BEFORE OUTPUT.
  MODULE init_screen_0100.

PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  FIELD carrier VALUES (NOT 'AA', 'LH', BETWEEN 'QF' AND 'UA').
  MODULE module_1.
  FIELD connect SELECT  *
                  FROM  spfli
                  WHERE carrid = carrier AND connid = connect
                  WHENEVER NOT FOUND SEND ERRORMESSAGE 107
                                          WITH carrier connect.
  
MODULE module_2.

Der Benutzer muss erst einen zur Werteliste hinter VALUES passenden Wert für carrier eingeben, bevor das Modul module_1 aufgerufen wird. Beim Aufruf von module_1 ist connect noch nicht transportiert.

Dann kann der Benutzer nur einen Wert für connect eingeben, der zusammen mit carrier als Primärschlüssel in der Datenbanktabelle SPFLI vorhanden ist. Falls nicht erscheint Nachricht 107 aus der Nachrichtenklasse AT als Fehlermeldung in der Statusleiste:

E: Keine Einträge zum Schlüssel & & gefunden.

Erst bei Eingabe eines richtigen Wertes wird connect transportiert und Modul module_2 aufgerufen.

 

 

Ende des Inhaltsbereichs