Ü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.