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

    1. Sie möchten mit F4 ein Datum auswählen können.
    2. Falls Sie ein Datum manuell eingeben, so soll nach einem ENTER das Feld in die Standardform dd.mm.yyyy konvertiert werden
    3. Falls das Datum in einer falschen Form eingegeben wird soll es eine Fehlermeldung geben
    4. 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.

Empfehlen