Hallo,
einer unserer Kunden kann für einen bestimmten Artikel die Lagerregulierung zu fakturierten Einstandspreisen nicht mehr aufrufen. Es kommt diese Fehlermeldung (s.Anhang).
Dass die Lagerregulierung in einer Endlosschleife hängt, ist auf den ersten Blick jetzt nicht zu erkennen.
Beim Debuggen fällt auf, dass immer wieder die Funktionen ForwardCostToOutbndEntries und ForwardCostToInbndEntries in der CU 5895 aufgerufen werden. Ich konnte allerdings nicht erkennen, ob sich Artikelposten wiederholen (bin mir auch nicht sicher, ob das problematisch ist). Es scheint so, als wenn wie wild Posten gegeneinander ausgeglichen werden und irgendwann der Stapel überläuft.
Mir fällt allerdings gerade keine Möglichkeit ein, wie ich den problematischen Posten bzw. die problematischen Posten eingrenzen könnte. Hat irgendjemand hier eine Idee?
@Edit:
Für den Artikel gibt es momentan 520 Ausgleichsposten. Ich habe leider keine Vorstellung, was da normal ist. Im Moment sieht es so aus, als wenn schlicht und ergreifend zu viele Posten vorhanden sind. Aber eigentlich sollte doch programmseitig verhindert werden, dass die Anzahl der Rekursionen ein bestimmtes Level übersteigt (beim Abbruch beträgt der Wert für LevelNo[3] 42).
- Code:
LOCAL ForwardAppliedCost(ItemLedgEntry : Record "Item Ledger Entry";Recursion : Boolean) AppliedQty : Decimal
WITH ItemLedgEntry DO BEGIN
// Avoid stack overflow, if too many recursions
IF Recursion THEN
LevelNo[3] := LevelNo[3] + 1
ELSE
LevelNo[3] := 0;
IF LevelNo[3] = MaxLevels THEN BEGIN
SetAppliedEntryToAdjust(TRUE);
LevelExceeded := TRUE;
LevelNo[3] := 0;
EXIT;
END;
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von FragenFrager am 10. März 2026 13:44, insgesamt 2-mal geändert.