Aus der Praxis
Eigene Auswertungen aus Landwehr L3.
Wie man aus einem L3 eigene Auswertungen zieht, ohne am ERP selbst etwas zu ändern — und ohne dass die Abfragen jemandem im laufenden Betrieb im Weg stehen.
· Werner Laude
Jedes Warenwirtschaftssystem hat Berichte, und irgendwann braucht man einen, den es nicht gibt. Die Zahlen liegen alle im System — nur eben nicht in der Form, in der man sie bräuchte.
Dann beginnt meistens dasselbe Spiel: Jemand exportiert, jemand baut daraus eine Tabelle, jemand macht das jeden Monat wieder. Das funktioniert, bis es nicht mehr funktioniert.
Wie es vorher lief
Bei einem Agrarhändler, für den ich arbeite, gab es für genau diese Lücke schon eine Anwendung — in PHP, über Jahre gewachsen, auf einem Server mit einer Firebird-Version von vorgestern und einer Sammlung von Treibern und Hilfsprogrammen drumherum, die jeder kennt, der an so einem System einmal etwas ändern musste.
Sie funktionierte. Aber der Weg zu den Daten war umständlich, und das merkte man ihr an: Die Zahlen waren immer so aktuell, wie der letzte Lauf es zuließ, und wer wissen wollte, wann der war, musste jemanden fragen.
Das ist kein Vorwurf an die alte Anwendung. Sie war gebaut worden, als es die Wege noch nicht gab, die es heute gibt.
Zwei Wege zu den Daten, und die Version entscheidet
Wer heute an ein Landwehr L3 heran will, hat zwei Möglichkeiten:
Über eine JSON-Schnittstelle des ERP selbst. Neuere Versionen geben Daten in diesem Format heraus. Das ist der saubere Weg, weil er vom Hersteller vorgesehen ist und die Schnittstelle auch über Versionswechsel hinweg hält.
Über einen direkten Zugriff auf die Firebird-Datenbank. L3 speichert in Firebird, und dafür gibt es fertige Bibliotheken — in meinem Fall ein Ruby-Gem. Das ist der Weg, der immer funktioniert, auch bei älteren Installationen. Er bringt allerdings Eigenheiten mit, die man kennen muss: SQL-Dialect 1, Latin-1-Kodierung, CHAR-Felder mit nachlaufenden Leerzeichen. Wie eine Anbindung an Landwehr L3 grundsätzlich aufgebaut ist, steht auf einer eigenen Seite.
Welcher Weg in Frage kommt, hängt an der L3-Version. Das ist die erste Frage, die man klärt — und sie entscheidet über den Aufwand.
Die eigentliche Entscheidung kommt danach
Beide Wege führen zu den Daten. Aber keiner von beiden beantwortet die Frage, die danach wichtig wird: Wie oft darf man fragen?
Eine Auswertung, die bei jedem Aufruf dreißig Abfragen an die ERP-Datenbank schickt, funktioniert tadellos — bis zehn Leute sie gleichzeitig öffnen und im Lager jemand merkt, dass das L3 hakt.
Wir haben uns deshalb gegen den direkten Zugriff aus jeder Anwendung entschieden und für Spiegeldatenbanken: Die Daten, die wir brauchen, liegen in eigenen PostgreSQL-Datenbanken — die trägen nachts, die beweglichen im Zehn-Minuten-Takt.
Die beiden Gründe dafür:
Die ERP-Datenbank schonen. Wenn die Auswertungen gegen den Spiegel laufen, merkt das L3 von ihnen nichts. Statt vieler kleiner Abfragen aus jeder Anwendung gibt es einen Abgleich, der zu einem festen Takt läuft — egal, wie viele Leute gleichzeitig auf eine Auswertung schauen.
Die Zugriffswege klein halten. Nur eine Stelle spricht mit dem L3. Alle Anwendungen sprechen mit dem Spiegel. Das bedeutet: ein Zugang statt fünf, eine Stelle, an der etwas schiefgehen kann, statt fünf — und eine Stelle, an der die Firebird-Eigenheiten gelöst sind.
Nicht alles gehört in den Spiegel
Die Trennung, die sich bewährt hat:
Stammdaten gehen nachts. Kunden, Artikel, Lieferanten. Die ändern sich selten, und ob ein Kunde seit gestern eine neue Telefonnummer hat, ist für eine Auswertung ohne Belang. Der nächtliche Abgleich holt nur, was sich seit dem letzten Lauf geändert hat — dafür führt L3 ein Änderungsdatum je Datensatz.
Bewegungsdaten gehen im Zehn-Minuten-Takt. Offene Aufträge, Lieferscheine, laufende Touren. Hier wäre ein nächtlicher Stand wertlos: Wer wissen will, was heute rausgeht, darf keine Zahl von gestern Nacht sehen. Dazu gibt es einen Knopf, der den Abgleich sofort auslöst, wenn jemand nicht auf den nächsten Lauf warten will.
Diese Trennung ist die wichtigste Entscheidung beim Entwurf — und sie ist keine Frage von „gespiegelt oder nicht”, sondern von „wie oft”. Sie später zu verschieben ist aufwendig, weil jede Auswertung davon abhängt.
Was dadurch möglich wird
Sobald die Daten in einer eigenen Datenbank liegen, sind Auswertungen kein ERP-Thema mehr, sondern ein normales Thema der Anwendungsentwicklung. Man kann rechnen, gruppieren, darstellen und exportieren, ohne dabei das ERP zu belasten und ohne dass jemand fragt, ob das die Warenwirtschaft verträgt. Und man kann es Leuten zugänglich machen, die keinen L3-Zugang haben — im Browser, mit eigenen Rechten, ohne eine zusätzliche ERP-Lizenz.
Die Grenzen, die man benennen muss
Jeder Spiegel hinkt hinterher, es fragt sich nur wie weit. Die Stammdaten sind bis zu vierundzwanzig Stunden alt — belanglos, solange niemand erwartet, dass eine heute Mittag geänderte Lieferanschrift sofort in der Auswertung steht. Bei den Bewegungsdaten sind es bis zu zehn Minuten. Das reicht für alles, was man sich ansieht, um zu entscheiden; es reicht nicht, wenn jemand an der Waage steht und erwartet, die Lieferung von vor einer Minute zu sehen. Wer diese Grenze nicht von Anfang an klar zieht, bekommt irgendwann den Anruf „die Zahl stimmt nicht” — und sie stimmte, nur eben von vorhin.
Der Abgleich braucht ein Zeitfenster. Viele L3-Installationen starten nachts Dienste neu. Der Abgleich gehört nicht in dieses Fenster, sondern davor. Bei uns läuft er eine knappe Stunde früher.
Der Spiegel ist eine zweite Wahrheit. Solange nur gelesen wird, ist das unkritisch. Sobald irgendwo auch geschrieben wird, muss klar sein, welches System führt — und das ist immer das ERP.
Was Sie klären sollten, bevor Sie anfangen
- Welche L3-Version? Davon hängt ab, ob eine JSON-Schnittstelle zur Verfügung steht oder ob es über die Datenbank geht.
- Wie frisch muss welche Zahl sein? Das entscheidet nicht, ob gespiegelt wird, sondern in welchem Takt — und davon hängt ab, wie stark das ERP belastet wird.
- Wie viele Leute sollen die Auswertung sehen? Wenn es mehr sind als die Zahl der ERP-Lizenzen, ist das oft schon das halbe Argument.
- Gibt es ein nächtliches Wartungsfenster, und wann?
Wer diese vier Fragen beantworten kann, weiß meistens schon, welcher Weg für den eigenen Betrieb in Frage kommt.