Ich habe auf einem Dynpro ein Eingabefeld für ein Datum (Typ DATS).
Gibt der User zB 300217 ein so ist dies ein ungültiges Datum. Die entsprechende SAP-Fehlermeldung erscheint ja auch. Kann ich die unterdrücken um eine eigene Fehlermeldung zu formulieren?
In einem Z-Programm kannst Du machen was Du willst....
Anstatt ein DATS-Type kannst Du 8 oder 10 Character Feldnehmen, eben was Du willst. Und dann kannst Du pruefen und ausgeben, was Du willst.
Aber warum vom Standard abweichen? Wenn ein Datum falsch/ungueltig ist... ist ein Datum eben falsch/nicht gueltig.
Sollte es ein SAP Standardprogramm sein: Warum den Standard verbiegen, wenn die Meldung das anzeigt, was sie anzeigen soll?
Tja. Genau das werde ich wohl machen. Und zum "Warum?": Du sprichst mir aus der Seele. Aber der Kunde weigert sich die Standardprüfung von SAP zu akzeptieren. Laaaange Diskussionen um Peanuts.
Biete doch dem Kunden an, die Fehlermeldung systemweit ( nicht nur für das eine Programm ) zu ändern, in dem du die Nachricht modifizierst.
Was will denn der Kunde drin stehen haben? "Du Trottel - das Datum ist doch totaler Quatsch" oder so?
"Werter Kollege. Mitarbeiter, die zu blöd sind, ein Datum einzugeben, können wir nicht gebrauchen."
Daran einen Workflow hängen, der das Zeugnis per Mail zustellt, die Personalabteilung informiert und den SAP-Benutzer sperrt. Was glaubst du, wie vorsichtig die verbliebenen Kollegen zukünftig die Eingaben prüfen? LOL
Ich kann verstehen, wenn in bestimmten Anwendungen zusätzliche Dinge geprüft werden müssen:
- Datum darf nicht in der Zukunft liegen
- Datum darf nicht in der Vergangenheit liegen
- Datum darf nicht mehr als 10 Jahre vom heutigen Tag abweichen
Aber dass die Prüfung selbst nicht ausreicht, verstehe ich nicht...
@Ralf: Das automatische Erstellen einer Kündigung finde ich ein bisschen übertrieben!
Eine Abmahnung reicht!
ab 7.02:
eine weitere Möglichkeit zur Überprüfung besteht durch den MOVE Zusatz EXACT. Dadurch erfolgt bei der Zuweisung eine Prüfung auf die Gültigkeit des Datums (bzw. auch z.B. Uhrzeit). Sollte der Wert nicht gültig sein, wird die abfangbare Ausnahme CX_SY_CONVERSION_NO_DATE ausgelöst:
data l_datum type d.
try.
move exact '20120230' to l_datum.
catch cx_sy_conversion_no_date.
...
endtry.