DeathAndPain hat geschrieben:
Eine andere Idee wäre, ein Framework zu bauen, bei dem all solche Änderungen in eine Z-Tabelle eingetragen werden, und einmal die Stunde startet ein Report und versucht, die Einträge abzuarbeiten. Letztlich wäre das so eine Art selbstgebauter asynchroner Verbucher. Wäre aber aufwendig.
Hat jemand noch andere Ideen? Gibt es Best Practices für das Problem?
Legxis hat geschrieben:Mein Vorschlag wäre folgender:
Wenn dein User-Exit getriggered wird könntest du die geänderten Personalnummern in eine Tabelle schreiben. Dann machen mehrere Änderungen an derselben Nummer nichts aus.
Die Nummern kannst du dann in einem Job lesen, der jede Nacht läuft und deine Pflege tätigt.
Ist ja beides im Prinzip das gleiche.
und um ehrlich zu sein, halte ich das für die beste Idee. Bzw. weiß ich dass das ganz gut funktioniert, weil wir exakt diese Lösung bei uns im Einsatz haben. Um alle zeitunkritischen Sachen, also Sachen die 1x pro Tag laufen können haben wir in eine Z-Tabelle geschrieben. Aufgrund von verschiedenen Abhängigkeiten bei verschiedenen Ländern haben wir hier auch Uhrzeiten ( bzw. die jeweilige Stunde ) wann der Report die jeweilige Änderung ausführen soll. Dann geht ein Report stündlich drüber, der die Änderung dann ausführt.
Der Report selber ist tatsächlich relativ einfach gestrikt, der liest einfach die Tabelle mit den Spalten "Aktion" "Uhrzeit" und "Parameter" ( Parameter ist ein XML String ) - dann ruft der Report einen BAdi auf der als Parameter die "Aktion" hat, anhand dieser Aktion wird dann die implementierung mit der "do_changes" Methode aufgerufen, welche als Parameter den XML String erwartet. Dort können dann Personalnummer, Infotyp, sonstiges hinterlegt sein. ( geht natürlich auch mit Materialnummern, etc. )
So behält man einen relativ guten Überblick für welche Zwecke was getan wird und hat keinen allzu großen Implementierungsaufwand.
Unterm strich also, ein Z-Report der einen Select auf eine Z-Tabelle macht und einen BAdi aufruft
Eine Z-Tabelle mit den Spalten "Aktion", "Uhrzeit", "Parameter" ( XML String )
Einen BAdi mit den Implementierungen was eigentlich gemacht werden soll
Und die User-Exits, BAdis oder sonstiges die du Anfangs auch implementiert hast, welche aber dieses Problem verursachen. Diese werden also abgeändert auf - Schreibe in die "Z-Tabelle" was gemacht werden soll
Mehr ist das bei uns nicht. Hoffentlich konnte ich dir damit weiterhelfen.
PS: Vergiss nicht die jeweiligen Aktionen zu dokumentieren, ansonsten darf man irgendwann mühevoll heraussuchen was für was genau war... und das will man niemals tun, insbesondere nicht, wenn man 20 - 30 solcher Fälle hat