Alle Fallbeispiele
Fallbeispiel · Programmierung · ERP

Set-based statt zeilenweise

Eine ERP-Standardfunktion wurde bei grossem Artikelstamm zum Flaschenhals der Planung. Der Nachbau in SQL ist schneller – und kann mehr als das Original.

10–50×schneller (geschätzt)
+ UndoSnapshot vor jedem Lauf
+ Toleranzbei zirkulären Stücklisten

Ausgangslage

Die Stücklistenebene eines Artikels (Low-Level-Code) steuert die Reihenfolge im gesamten Planungslauf. Die Standardfunktion des ERP-Systems berechnet sie zeilenweise – ein Durchlauf pro Artikel. Bei einem grossen Artikelstamm wurde das spürbar langsam. Zudem bricht das Original bei einer zirkulären Stückliste hart ab.

Lösung

Ich habe die fachliche Logik der Standardfunktion eins zu eins nachgebaut, aber als set-based T-SQL-Prozedur:

  • Graph statt Schleife: Artikel sind Knoten, zertifizierte Stücklistenzeilen sind Kanten. Eine rekursive CTE durchläuft den Graphen von oben nach unten; bei Mehrfachverwendung gilt die tiefste Ebene (MAX).
  • Snapshot und Undo: Vor jedem Lauf werden die alten Werte gesichert und lassen sich jederzeit zurückspielen.
  • Zyklus-Toleranz: Zirkuläre Stücklisten werden erkannt und protokolliert – der Lauf geht für alle übrigen Artikel sauber weiter.

Ergebnis

Die Berechnung ist geschätzt 10- bis 50-mal schneller als der Standard. Dazu kommen zwei Funktionen, die das Original nicht bietet: Rückgängigmachen und Fehlertoleranz. Die Lösung ist technisch vollständig dokumentiert.