Hallo,
ich hab hier ein Problem, dessen lösung ich nicht finde. Ist auch etwas schwierig zu erklären. Ich hatte den Auftrag, in der Zukunft liegende Datensätze in den Infotypen 2001,2002 und 2004 automatisch zu sperren, wenn eine Krankheitsdatensatz angelgt wird (da dieser bei uns immer bis 31.12.9999 geht erstmal). Da müssen die Sachbearbeiter nicht alles manuell machen.
Besispiel:
Urlaub vom 1.8.-31.8.2024 im IT2001
Krankheit vom 1.4.24-31.9999 wird angelegt->Urlaub vom 1.8.-31.8.24 wird automatisch gesperrt
Ok, in der PA30 hab ich das auch gut hinbekommen. Läuft.
In der PTMW mithilfe von BADI Implementierungen auch, aber nur fast. Es fehlt noch das Sahnehäubchen.
Es handelt sich hier um eine Z-Implementierung der Badi Definition PT_BLP_USER. Filterausprägung ist SRP-Einzelsatzprozessierung. Das Ding war sogar schon da, musste da halt in der PROCESS_DATA-Methode der implementierenden Klasse nur mein Coding einbauen. Nur habe ich folgendes Problem:
Positivfall:
Wenn der User in der PTMW eine Krankheit eingibt, und direkt Sichern drückt: alles perfekt. Ich sperre im Hintergrund die entsprechenden Sätze, Kollisionsprüfung ohne Fehler wird durchlaufen, alles i.O.
Negativfall:
Wenn der User in der PTMW eine Krankheit eingibt, und erstmal ENTER drückt, wird mein Coding nicht durchlaufen, (da ich den SY-UCOMM für 'SAVE' abfrage-ich will ja andere Datensätze erst sperren, wenn der User wirklich SICHERN drückt. Ansonsten würde ja schon bei ENTER alles im Hintergrund entsprechend gesperrt, und da der User sich ja auch irren kann (z.b.falsche Personalnummer, etc.)), und die PTMW landet in der Kollisionsprüfung, und sagt: Error-Kollision mit anderen Sätzen. Und da sitzt es dann fest. Egal, was Du dann machst- wie komme ich da am besten an den Startpunkt zurück? Die Kollisonsprüfung auszuhebeln, macht wenig Sinn, da dann das System dir kollidierende Sätze in die Infotypen schiesst. Keine Ahnung, wie man die PTMW dazu bewegen kann, quasi nochmal von vorne zu beginnen.