KHKVKBelegeStuecklisten - unnötige Speicherung

mgosx

Aktives Mitglied
Hallo zusammen,
wir sind ein Hersteller, daher haben praktisch alle unsere Verkaufsartikel Fertigungsstücklisten.
Unsere Datenbank ist inzwischen auf knapp 30 GB gewachsen (Officeline Nutzer seit 1999). Bei genauerer Betrachtung habe ich festgestellt, dass die Tabelle KHKVKBelegeStuecklisten ca. 12 GB belegt.

Die Speicherung einer Kopie der Stückliste in der Tabelle KHKVKBelegeStuecklisten ist aus meiner Sicht nur bei Handelsstücklisten notwendig und sinnvoll, da die Stückliste beim Andrucken der Stückliste bzw. beim Erzeugen der Lagerbuchungen notwendig ist.
Bei Fertigungsstücklisten ist eine Speicherung nicht notwendig und kostet unnötig Speicherplatz UND Performance, da ja bei jeder Beleg-Operation wie Beleg anzeigen, drucken, übernähme ... die kompletten Stücklisten-Infos mit gelesen werden müssen.

Als Beispiel:
Wir haben im Schnitt ca. 10 Stücklistenpositionen pro Artikel.
Bei 50 Vorgängen => 150 Belege (Auftragsbestätigung, Lieferschein, Rechnung) mit durchschnittlich 8 Positionen ergeben sich:
8 x 10 = 80 Stücklisten-Einträge / Auftrag => 12.000 Zeilen / Tag

Ich habe Sage auf diesen "Fehlverhalten" hingewiesen und auch schon mal ein Customer Voice eingereicht, aber es gab kein Interesse daran dies zu lösen, stattdessen kam der Vorschlag dies könne der Professional Service als Individual-Programmierung lösen.


Ich habe dies nun als DCM wie folgt umgesetzt:

case DcmDefinitionManager.DcmListId.VKBelegPositionGetStuecklisteArtikel:
Sagede.OfficeLine.Wawi.BelegEngine.DcmContextBelegPosition p2context = (Sagede.OfficeLine.Wawi.BelegEngine.DcmContextBelegPosition)context;
BelegPosition pos = p2context.BelegPosition;
if (pos.Stuecklistentyp != Stuecklistentyp.Handel)
{
pos2.Stueckliste.Clear();
}
break;

Die DCM VKBelegPositionGetStuecklisteArtikel wird beim Einfügen einer Position nachdem der Artikel festgelegt ist und die Stückliste eingelesen wurde aufgerufen. Ich entferne dann einfach die Stückliste.
Nach ersten Tests sieht es soweit gut aus.

Leider weiß ich nicht, inwieweit dieses Vorgehen irgendwelche unerwarteten Nebenwirkungen hat. Nach Verständnis müsste dann alles sauber laufen, da es für das System so aussieht als ob zum Zeitpunkt der Erfassung des Auftrages der Artikel keine Stückliste hatte.

Hat jemand von Euch schon mal Einträge (bei Fertigungsstücklisten) der Tabelle KHKVKBelegeStuecklisten gelöscht und sind dabei irgendwelche Probleme entstanden?

Grüsse Mark
 
Was Sage genau mit den Stücklistenpositionen im VK-Beleg macht kann ich nicht sagen.
Das müsste ein Entwickler im Quellcode mal schauen.

Aber ich könnte mir da vorstellen das die eine oder andere Auswertung bezüglich Dispo oder/und Kalkulation da rein schaut.
 
Dispo dürfte ja Fertigungsstücklisten nicht betreffen, Aktualisierungen der Kalkulation sind bei Fertigungsstücklisten aus meiner Sicht ebenfalls unnötig / falsch, da ja die Rohstoffe eventuell zu einem anderen MEK eingekauft und verbaut wurden als dem nun aktuell erfassten.
Genau deshalb hatte ich mich auch zuerst an Sage gewandt, da ich hier durchaus Fehlerpotential (in der aktuellen Umsetzung) sehe.
 
Hallo,
"Dispo dürfte ja Fertigungsstücklisten nicht betreffen"
doch, die Dispo ermittelt anhand der Fertigungsstücklisten und des Lagerbestands des Fertigartikels den Bedarf an internen Fertigungsaufträgen. Allerdings scheint sie hierfür auf die im Artikelstamm hinterlegten Stücklistenelemente zuzugreifen, nicht auf die Infos aus dem Beleg (so zumindest ein kurzer Test gerade eben). Könnte also auch nach Löschen der Stücklisteninfos noch funktionieren, habe ich aber nicht näher geprüft.

Die Führung der Stücklisteninfos in den Bewegungsdaten halte ich trotzdem für sinnvoll, da so nachvollzogen werden kann, wie die Stückliste sich zum Zeitpunkt der Belegerstellung zusammensetzte. Außerdem sind über die Stücklisteninfos im Beleg eine (einfache) Preisberechnung, Roherlösauskünfte, etc. möglich und man kann die Stücklisten (auch Fertigungsstücklisten) auf dem Beleg drucken, wofür die Informationen aus den Bewegungsdaten verwendet werden (Screenshots aus Sage Demodatenbank).
1749118360425.png
1749119439916.png
 
Zurück
Oben