[gelöst] Rekursive Stücklisten

19. Oktober 2010 11:34

Hi,

hat jemand Erfahrung mit rekursiven Stücklisten? Gemeint ist, wenn ich durch das Anlegen von Stücklisten eine Art endlos Schleife baue..
Beispiel:

Artikel ; Menge ; Stückliste
A ; 1 ; B,C,D
B ; 2 ; E
C ; 3 ; -
D ; 1 ; A,F
F ; 2 ; -

Wenn die Artikel nun Preise besitzen und ich probiere eine Preisermittlung für A zu machen, bekomme ich ein Problem, da man von A nach D kommt und D aber wiederum A beinhaltet usw...
Sollte man es generell verhindern, dass man so etwas konstruieren kann? Gibt es eine Art "best practice", wie ich so Sachen berechne? Was mich etwas verwundert hat ist, dass ich eine Preisberechnung in Excel gesehen habe, wo etwas ähnliches mit einem Zirkelbezug gebaut wurde und Excel dies durch 100 Iterationen "berechnet".

Jemand Erfahrungen bei dem Thema?

Grüße,
Daniel
Zuletzt geändert von dr am 25. Oktober 2010 09:03, insgesamt 1-mal geändert.

Re: Rekursive Stücklisten

19. Oktober 2010 11:38

Nur mal interessehalber gefragt: wie willst du etwas aus sich selbst bauen? :roll:

Re: Rekursive Stücklisten

19. Oktober 2010 11:42

Hm. Es gibt wohl Branchen wo es in gewissen Kontexten Sinn macht. Bei der "Stückliste" handelt es sich nicht um eine Produktionsstückliste, sondern es geht um Kostenermittlung.

Hm Beispiel... sowas wie:
Man will die genauen Kosten für Produkt A wissen. Während des Herstellungsprozesses muss man irgendwelche Tests durchführen, so dass für die Herstellung von A in irgend einem Schritt ein winzig kleiner Teil von A für Tests verbraucht wird. Der kleine Teil fließt aber dennoch in die Gesamtkosten ein.

Daniel

Re: Rekursive Stücklisten

19. Oktober 2010 11:57

Klingt ja interessant.

Ich denke, man müsste in diesem Beispiel unterscheiden, ob man sich in der höchsten Ebene der Stückliste befindet, in der A vorkommt, oder einer der darunter liegenden und danach unterscheidet, ob man in die Rekursion springt oder einen wie auch immer fest gelegten Preis nimmt. Möglich wäre vielleicht auch, das Vorkommen von A in den tieferen Ebenen zu Beginn als Null zu bewerten, danach die Kosten für A wie üblich zu summieren, und danach diese zuerst ermittelte in einem folgenden Durchlauf für A in den tieferen Ebenen einzusetzen, so dass dann als Beispiel 1/10 von A in die Berechnung einfließt. Nach x Durchläufen der Berechnung wächst das Ergebnis der obersten Ebene dann nur noch so gering, dass man abbrechen kann und eine einigermaßen gute Annäherung bekommen hat. Wenn das nicht eintritt, bricht man nach einer festglegten Max-Zahl von Durchläufen ab.

Re: Rekursive Stücklisten

19. Oktober 2010 12:23

dr hat geschrieben:Hm. Es gibt wohl Branchen wo es in gewissen Kontexten Sinn macht. Bei der "Stückliste" handelt es sich nicht um eine Produktionsstückliste, sondern es geht um Kostenermittlung.

Hm Beispiel... sowas wie:
Man will die genauen Kosten für Produkt A wissen. Während des Herstellungsprozesses muss man irgendwelche Tests durchführen, so dass für die Herstellung von A in irgend einem Schritt ein winzig kleiner Teil von A für Tests verbraucht wird. Der kleine Teil fließt aber dennoch in die Gesamtkosten ein.

Daniel


Wenn du mir das Controlling-Verfahren nennst, sag ich dir wo du eine Lösung nachschlagen kannst. Das klingt nach einem Problem aus dem Bereich Produktionscontrolling. Sobald du die Lösung auf dem Papier siehst, wirst du das ganze auch per C/AL abbilden können.
Ist das irgendwie Prozesskostenrechnung?

Re: Rekursive Stücklisten

19. Oktober 2010 13:44

Hallo dr,

das ist sicher kein ganz leichtes Unterfangen.
Man müsste Iteration für Iteration vorgehen und so die Menge bestimmen die das Produkt von sich selbst benötigt.
Problematischer wenn es sich um mehrere Produkte mit rekursiven Stücklisten handelt.
Wichtig sind hier meiner Meinung vor allem die Abbruchbedingungen, ab wann man die Rekursion sich nicht auflösen lässt.

SAP ist in dieser Hinsicht IMHO schon etwas weiter.
Vielleicht kannst du ja ein Modul für Navision diesbezüglich nachbauen? :wink:

Einige Anregungen/Anforderungen hierfür könnte man evtl. aus deren Hilfe entnehmen.
Dafür wird einerseits ein Mengengerüst angelegt(Stückliste) und andererseits ein Kalkulationslauf (Kalkulationsstufen angeben bzw. Iterationen).
Dort werden dann Schwellwerte angegeben und überprüft, ab wann eine rekursive Berechnung nur Sinn macht:

Voraussetzungen für eine erfolgreiche Kalkulation sind:

die Lösung ist positiv
der Verbrauch ist kleiner als die Ausbeute
die Ausbeute ist signifikant größer als der Verbrauch


Ein weiteres Beispiel für eine rekursive Stückliste wäre auch ein Kuppelprodukt.
Bei chemischen Reaktionen ist das wohl auch häufig der Fall.

Zur Produktion von 50 kg A und 200 kg B werden 100 kg A verwendet.

Die Kosten werden laut Aufteilungsschema im Verhältnis 1:1 zwischen A und B aufgeteilt.
Das System kann nicht kalkulieren und gibt eine entsprechende Fehlermeldung aus.

Die Kosten werden im Verhältnis 1:2 aufgeteilt.
Das System kann kalkulieren.

http://help.sap.com/saphelp_46c/helpdata/de/f8/a3e333bf3d11d189900000e8214595/content.htm

Vielleicht gibt dir das eine kleine Hilfestellung oder ein paar Denkanstöße.

Zur rein mathematischen Lösung sind hier sicherlich die linaren Gleichungssysteme zu nennen (Gauß-Verfahren):
http://de.wikipedia.org/wiki/Gau%C3%9Fsches_Eliminationsverfahren

Für eine Optimierungsbetrachtung im Nachgang das Simplexverfahren für Restriktionen (Ungleichungen):
http://de.wikipedia.org/wiki/Simplex-Verfahren

mfg,
winfy

Re: Rekursive Stücklisten

25. Oktober 2010 09:03

also ich mag ja eigentlich mathe aber die links/ansätze sind mir hier jetzt irgendwie zu theoretisch. bis ich das ganz durchgelesen, verstanden und in nav gebaut habe... das bezahlt ja keiner.

den sap ansatz habe ich auch mal gesehen, letztendlich ist meine lösung aber nun für den kunden genau genug. dabei mache ich es so, dass ich einen artikel, der selbst eine stückliste besitzt, nur exakt 1x auflöse. finde ich einen bereits aufgelösten artikel in einer unteren ebene wieder, fliegt er an dieser stelle raus. lediglich das erste auflösen des stücklistenartikels zu dem ich den preis abfrage, merke ich mir nicht als bereits aufgelöst.

daniel