Report: DataItem nochmal durchlaufen wenn..

11. November 2008 17:54

Hallo,

ich habe einen Report, der die DataItem Item, Production BOM Header und Production BOM Lines enthält. Dieser Report soll die Fertigungsstücklistenzeilen für den ausgewählten Artikel ausdrucken.

Code:
Item   <Item>
  Production BOM Header   <Production BOM Header>
   Production BOM Line   <Production BOM Line>
  Product Passport Header   <Product Passport Header>
   Product Passport Line   <Product Passport Line>


Das funktioniert auch soweit so gut. Ich möchte aber, dass der Report den Production BOM Header und die Production BOM Line nochmals durchläuft, wenn in den Production BOM Lines im ersten Durchlauf im Feld "Nr." ein Wert gefunden wurde, der mit "XY" beginnt. Alle Nr., die mit "XY" beginnen haben alle eine eigene Fertigungsstückliste. Die soll zusätzlich zur ersten mit angedruckt werden. Und das bevor die DataItem Product Passport durchlaufen werden.

Wie stelle ich das grundsätzlich an? Oder gibt es Report, die ähnlich funktionieren? Ich bin so gänzlich ratlos. Weiss auch nicht genau, wonach ich suchen soll.

Gruß
Sandra

Re: Report: DataItem nochmal durchlaufen wenn..

11. November 2008 18:05

Du kannst doch noch 2 DataItems für den BOM Header und die Lines dazwischen bauen. Dort kannst du ein CurrReport.break setzen, wenn es keinen XY-Artikel in der Stückliste gibt.

Wenn in den Stücklisten der XY-Artikel aber noch weitere Unterstücklisten sind, hast du das selbe Problem eine Ebene tiefer. Dann ist es sicher besser, die Stücklisten rekursiv zu durchlaufen und ein temporäres Record in der richtigen Reihenfolge zu füllen.

Re: Report: DataItem nochmal durchlaufen wenn..

12. November 2008 18:07

McClane hat geschrieben:...die Stücklisten rekursiv zu durchlaufen und ein temporäres Record in der richtigen Reihenfolge zu füllen.


hallo,
gibt's dafür im standard was vergleichbares? so ohne weiteres weiß ich nicht, wie ich das anstellen soll. :arrow: :idea:

Re: Report: DataItem nochmal durchlaufen wenn..

12. November 2008 18:27

Weiß gar nicht auf die Schnelle. Ich meine, dass das Berechnen der Stücklisteneben rekursiv laufen würde (muss aber nicht stimmen).

Gemeint war jedenfalls eine Funktion, die stupide Stücklistenzeilen der Reihe nach in eine temporäre Tabelle schreibt. In der Folge, in der sie gefunden werden. Wenn nun in einer Stückliste ein weiterer Artikel gefunden wird, dem eine Stückliste hinterliegt, ruft man dieselbe Funktion mit geänderten Parametern einfach nochmal auf. Solange diese "Tochter"-Funktion arbeitet, wartet die "Mutter". Der Vorteil an der Sache ist, dass sich so eine Funktion unendlich oft aufrufen kann, und man jede Stücklistenebene erwischt, egal, wie viele es gibt (theoretisch zumindest; irgendwann ist der Speicher natürlich voll. Mit den üblichen 5-10 Ebenen klappt´s problemlos).

Man muss eigentlich nur eine maximale Rekursionstiefe als Abbruchkriterium festlegen, da sich das ganze sonst totläuft, falls eine Stückliste sich selbst enthält und immer wieder auf sich verweist.