← Alle Fehlermeldungen
JTL-Wawi // fehlermeldung

Error converting value {null} to type 'System.Decimal'

Kurz gesagt

Amazon hat ein Feld leer gelassen, in dem eine Zahl erwartet wird. JTL-Wawi versucht daraus einen Dezimalwert zu machen und bricht ab. Ihre Daten sind in Ordnung, und einstellen lässt sich dagegen nichts: Es fehlt eine Absicherung im Code gegen einen Fall, den Amazon zulässt. Typische Auslöser sind Bestellungen ohne Gebührenbetrag, ohne Versandkosten oder ohne Steuerbetrag, etwa bei Stornierungen, Nullbeträgen oder unvollständig übermittelten Vorgängen. Praktisch bleibt Ihnen, die auslösende Bestellung zu finden und den Abgleich um sie herum zu führen.

Die Meldung stammt weder von Amazon noch von JTL im engeren Sinn, sondern aus der Laufzeitumgebung, in der JTL-Wawi läuft. Es ist eine durchgereichte .NET-Ausnahme, und wörtlich heißt sie: Es wurde versucht, den Wert null in einen Dezimalwert umzuwandeln, und das geht nicht.

Übersetzt: Amazon hat ein Zahlenfeld leer gelassen, in dem der Code eine Zahl erwartet.

Der Unterschied zwischen null und 0 ist dabei entscheidend. Null ist ein Betrag. null ist die Aussage, dass es keinen Betrag gibt. Für die Buchhaltung läuft das oft aufs Gleiche hinaus, für den Programmcode nicht.

Warum ein einzelner Datensatz alles stoppt

Der Schaden entsteht nicht durch das leere Feld, sondern durch die Bauweise ringsherum. Der Abgleich verarbeitet die Bestellungen als einen zusammenhängenden Vorgang, und wirft eine davon eine Ausnahme, endet der gesamte Lauf.

Daraus wird das Bild, das Sie sehen: Es kommen keine Bestellungen mehr an, obwohl neunundneunzig von hundert völlig in Ordnung sind. Eine einzige unvollständige Bestellung hält den kompletten Auftragseingang auf, so lange, bis jemand sie findet.

Aus Betriebssicht ist das der eigentliche Befund. Der fehlende Wert ist ein Ärgernis. Dass er den Rest blockiert, ist das Problem.

Wann Amazon Zahlenfelder leer lässt

SituationFeld, das leer bleiben kann
Stornierte BestellungGebühren, Steuerbetrag
Erstattung ohne BetragErstattungsbetrag
Bestellung mit Wert null (Ersatzlieferung, Werbeaktion)Verschiedene Betragsfelder
Vorgang noch nicht vollständig verarbeitetGebühren werden nachgereicht
Bestimmte Versand- und ErfüllungsartenVersandkosten
Änderung in der Selling Partner APIEin Feld wird optional, das vorher immer kam

Der letzte Fall ist der unangenehmste. Er trifft alle Anwender gleichzeitig und sieht aus wie ein plötzlicher Defekt.

Was Sie praktisch tun können

Stellen Sie den Zeitpunkt des Abbruchs fest und sehen Sie sich im Seller Central die unmittelbar davor liegenden Vorgänge an. Suchen Sie dort nach dem Sonderfall: Stornierung, Erstattung, Betrag null, ungewöhnlicher Marktplatz oder Versandweg.

Grenzen Sie dann den Abgleichzeitraum ein, um die auslösende Bestellung zu isolieren, statt immer wieder denselben großen Lauf zu starten. Prüfen Sie dabei, ob der Vorgang bei Amazon inzwischen vollständig ist, denn manche Beträge werden nachgereicht und derselbe Abgleich läuft am Folgetag ohne jede Änderung durch.

Arbeiten Sie auf aktueller Version, weil solche Fälle typischerweise per Update abgesichert werden. Bleibt der Fehler reproduzierbar, geben Sie ihn mit Zeitstempel und Bestellnummer an den JTL-Support.

Konfigurieren können Sie ihn nicht. Diese Einstellung existiert nicht.

Was wir strukturell anders bauen

Fehlende Zahlenwerte behandeln wir beim Einlesen definiert. Ein nicht geliefertes Gebührenfeld ist ein bekannter, entschiedener Fall, keine Ausnahme, die nach oben durchschlägt.

Ein unverdaulicher Datensatz blockiert bei uns nie den Rest. Er geht in eine Fehlerwarteschlange, wird benannt gemeldet, und die anderen Bestellungen laufen. Das entscheidet darüber, ob Sie morgens eine betroffene Bestellung vorfinden oder einen stehenden Auftragseingang.

Die Selling Partner API beobachten wir täglich auf Änderungen. Wird ein Feld optional, sehen wir das an der Spezifikation und nicht an einem abgebrochenen Lauf. Und ein Rückstand wird kontrolliert aufgeholt, gedrosselt und ohne Dubletten, statt in die nächste Sperre zu laufen.

Häufig gestellte Fragen

Sind meine Daten kaputt?
Nein. Der Fehler entsteht auf dem Weg von Amazon nach JTL, nicht in Ihrer Datenbank. Es geht um einen Wert, der bei Amazon leer ist, wo der Programmcode eine Zahl erwartet. Ihre Bestände und bestehenden Bestellungen sind davon nicht berührt.
Wie finde ich heraus, welche Bestellung es auslöst?
Über den Zeitpunkt. Sehen Sie im Seller Central nach, welche Vorgänge unmittelbar vor dem Abbruch liegen, und achten Sie auf Auffälligkeiten: Stornierungen, Erstattungen, Bestellungen mit Betrag null, ungewöhnliche Versandarten, ein Marktplatz mit wenig Volumen. Meist ist es eine einzelne Bestellung, und danach läuft alles wieder.
Kann ich das in JTL einstellen?
Nein, und das ist der frustrierende Teil. Es gibt keine Option, die aus einem leeren Feld eine Null macht. Die Behandlung dieses Falls liegt im Programmcode. Sie können den Zeitraum umgehen, warten, bis Amazon den Vorgang vollständig bereitstellt, oder den Fall an den JTL-Support melden.
Es tritt seit einem Amazon-Update auf. Zufall?
Eher nicht. Wenn Amazon ein Feld optional macht, das vorher immer gefüllt war, trifft das jede Anbindung, die diesen Fall nicht abgesichert hat. Solche Änderungen stehen in den Release Notes der Selling Partner API, und kaum jemand liest sie, bevor es knallt.
Was würden Sie anders bauen?
Zwei Dinge. Ein fehlender Zahlenwert wird beim Einlesen definiert behandelt, statt eine Ausnahme auszulösen. Und wichtiger: Ein einzelner unverdaulicher Datensatz stoppt niemals den ganzen Lauf. Er landet in einer Fehlerwarteschlange, wird gemeldet, und die übrigen Bestellungen laufen normal weiter.
// anfrage

Sie sehen das im Livebetrieb und möchten, dass es nicht mehr Ihr Problem ist? Wir konzipieren, bauen und betreiben die Schnittstelle dauerhaft, inklusive der Validierung und Wiederholungslogik, die diese Art von Fehler gar nicht erst bei Ihnen ankommen lässt. Festpreis-Angebot zur Aufwandsabschätzung innerhalb von 48 Stunden.

Wir melden uns innerhalb eines Werktags. Kein Newsletter, keine Vertriebsstrecke.