Hallo,
ja aber an den Lücken im Nummernkreis können sie erkannt werden.
Gute Idee, aber: ;-)
Klappt nicht bei ext. Nummernvergabe :P
Und lückenlos muss auch die interne Nummernvergabe ohnehin nicht sein, gibt ja zum Beispiel auch Pufferung etc.
Nicht falsch verstehen, will hier niemandem was böses oder andere hier belehren aber ein Anfänger zieht sonst schnell den Schluss das Nummern immer lückenlos sind.
Naja, die Externe NR. Vergabe bei Liefernummern ist extrem selten (bzw. wenn ein Unternehmen das für Lieferungen nutzt ist es so speziell, dass es nicht für "Verallgemeinerungen" geeignet ist) und der Nr. Puffer selbst mach meist mehr Ärger / Arbeit als die Effekte die entstehen wenn man auf diesen verzichtet.
Der Vorgang "get next nr." ist ja nur für den erneuten Aufruf gesperrt, ab dem Zeitpunkt ab dem die Liefernummer "gezogen" wird bis zum Commit, Nur innerhalb dieses sehr kurzen Zeitraums kann der Puffer "aushelfen".
Da get next nr auch erst sehr spät im Sicherungsablauf gezogen wird, ist der Zeitraum auch nicht durch "Fehlverhalten" negativ beeinflussbar; vorausgesetzt neiman hat zwischen get next nr. und dem Commit etwas zu "Tode programmiert". Deshalb macht das in er Praxis bei Lieferungsanlagen eigentlich nie Probleme.
Auch wenn der Puffer (mal die HANA ignorierend) angeblich 1000 mal schneller sein soll als das lesen von der DB, habe ich das in einem realen System noch nie als messbare Bremse erleben können; also dass ohne Puffer etwas messbar langsamer sein soll!?
In der Praxis wird man daher das von Wolfgang beschriebene, dass eine Nummernkreislücke mit hoher Wahrscheinlichkeit ein gelöschter Beleg sein könnte, doch bei recht vielen Kunden so vorfinden und kann das mit der von mir beschriebenen VL22N (welche die Änderungsbelege liest) untersuchen.
Das geht im Zweifel mit den Nummernkreislücken und VL22N schneller als "von Hand" die CDHDR zu durchsuchen.
Daher würde ich einem Anfänger im ersten Schritt das beibringen und die Sonderfälle für später aufheben. 😉
*... who can do field replacements in the debugger can do anything in the system
*so this check can not stop (him) anyway.