Überprüfung Datumsfeld
Sie haben mittels dem Befehl „Inputfield“ ein eigenes Datumsfeld definiert. Sie möchten, dass sich dieses Feld möglichst so wie ein SAP Standard Feld vom Typ „Datum“ verhält. Das heisst :
- Sie möchten mit F4 ein Datum auswählen können.
- Falls Sie ein Datum manuell eingeben, so soll nach einem ENTER das Feld in die Standardform dd.mm.yyyy konvertiert werden
- Falls das Datum in einer falschen Form eingegeben wird soll es eine Fehlermeldung geben
- Falls das Datum ungültig ist, so soll eine Fehlermeldung erzeugt werden
Damit Sie mit F4 ein Datum auswählen können, müssen Sie bei dem InputField noch die Zusatzoption searchhelp=“GuiXT.DATE“ angeben. Siehe dazu auch Dokumentation des Befehls „InputField“.
Mit untenstehendem Script können Sie die ganze Prüfung / Konvertierung durchführen.
// ********************** Datumtest.txt ***********************
// Script zur Überprüfung des Datumsformates eines Eingabefeldes
// 14.06.2004 / Gérald Koehn / Koehn Consulting / www.guixt.ch
// ************************************************************
// Test der diversen möglichen Formen
if not V[Datum] // Datum wurde gar noch nicht gepflegt
goto Ende
endif
// An dritter Stelle ein Punkt ?
set V[k] &V[Datum](3-3)
if V[k=.]
// an 5. Stelle auch ein Punkt ?
set V[k] &V[Datum](6-6)
if V[k=.]
// an 3. Stelle und 6 er Stelle ein Punkt somit schon fast alles in Ordnung
// Ist Jahrzahl 4 stellig oder nur 2 stellig ?
set V[k] &V[Datum](9-10)
if not V[k] // Jahrzahl nur 2 stellig eingegeben
// Jetzt können wir das Datum neu zusammensetzen
// Jetzt muss noch entschieden werden ob 1900 oder 2000
// ab 00 bis 50 => 2000
// ab 51 bis 99 => 1900
set V[k] &V[Datum](7-8)
if V[k<51]
set V[Datum_neu](1-6) "&V[Datum]"
Set V[Datum_neu](7-8) "20"
Set V[Datum_neu](9-10) "&V[Datum](7-8)"
else
set V[Datum_neu](1-6) "&V[Datum]"
Set V[Datum_neu](7-8) "19"
Set V[Datum_neu](9-10) "&V[Datum](7-8)"
endif
else // Jahrzahl 4 stellig
// da brauchen wir gar nichts zu machen
Set V[Datum_neu] "&V[Datum]"
endif // Jahreszahl
else // an der 6. Stelle kein Punkt => Format nicht gültig
Return "E: Bitte Datum in der Form __.__.____ eingeben" -Statusline
endif
else // an der dritten Stelle kein Punkt
// somit darf an der 5. Stelle auch kein Punkt sein
Set V[k] &V[Datum](5-5)
if V[k=.]
Return "E: Bitte Datum in der Form __.__.____ eingeben" -Statusline
else // an 3 und 6 Stelle kein Punkt
set V[Datum_neu](1-2) "&V[Datum](1-2)"
set V[Datum_neu](3-3) "."
set V[Datum_neu](4-5) "&V[Datum](3-4)"
set V[Datum_neu](6-6) "."
// Ist Jahrzahl 4 stellig oder nur 2 stellig ?
set V[k] &V[Datum](7-8)
if not V[k] // Jahrzahl nur 2 stellig eingegeben
// Jetzt können wir das Datum neu zusammensetzen
// Jetzt muss noch entschieden werden ob 1900 oder 2000
// ab 00 bis 50 => 2000
// ab 51 bis 99 => 1900
set V[k] &V[Datum](5-6)
if V[k<51]
set V[Datum_neu](7-8) "20"
set V[Datum_neu](9-10) "&V[Datum](5-6)"
else
set V[Datum_neu](7-8) "19"
set V[Datum_neu](9-10) "&V[Datum](5-6)"
endif
else // Jahrzahl 4 stellig
set V[Datum_neu](7-10) "&V[Datum](5-8)"
endif
endif
endif
// Jetzt könnte man noch prüfen, ob Datum überhaupt zulässig
set V[Datum_Kontr] &V[Datum_neu] + 1
set V[Datum_Kontr] &V[Datum_Kontr] - 1
if not V[Datum_Kontr=&[Datum_neu]]
Return "E: Das eingegebene Datum ist nicht gültig !" -Statusline
else
// Übergabe des konvertierten Feldes an das ursprüngliche Feld
Set V[Datum] "&V[Datum_neu]"
endif
Label Ende
Return
Sie können das vorliegende Script mittels des Befehls include "Datumstest.txt" als erstes in ein von Ihnen erstelltes Script einbauen. Ihr Script sollte durch den Befehl On "Enter" Process="Ihr_Script.txt" gestartet werden.
