[gelöst] Kann C/SIDE Rekursion?

3. Juli 2012 17:40

Folgende Fragestellung:

Da Stücklisten als Komponenten Stücklisten enthalten können, habe ich für die Bedarfsermittlung eine rekursive Funktion geschrieben, um für alle Komponenten den Bedarf ermitteln zu können. Das Funktioniert prinzipiell, allerdings nicht vollständig:
Artikel A hat die Komponenten B, C und D.
Artikel C hat die Komponenten X und Y.
Die Bedarfsberechnung von A, B, (C), X und Y funktioniert, aber D nicht mehr.

Da ich in meinem Code keinen Fehler entdecken kann, stellt sich die Frage, ob C/SIDE keine Rekursion beherrscht und beim Sprung von C "zurück" nicht mehr weiß, wo es die Funktion verlassen hatte und daher "D" nicht mehr abarbeitet.
Zuletzt geändert von tepler am 4. Juli 2012 09:58, insgesamt 1-mal geändert.

Re: Kann C/SIDE Rekursion?

3. Juli 2012 17:46

C/Side beherrscht Rekursionen bis zum Stackfehler :wink:

Gruß, Fiddi

Re: Kann C/SIDE Rekursion?

3. Juli 2012 17:48

tepler hat geschrieben:...
Da ich in meinem Code keinen Fehler entdecken kann ...

_Du_ nicht. Poste ihn und wir finden den Fehler gemeinsam.

Re: Kann C/SIDE Rekursion?

3. Juli 2012 19:41

fiddi hat geschrieben:C/Side beherrscht Rekursionen bis zum Stackfehler :wink:

Gruß, Fiddi


Ich habe mal in der Produktionsschulung gehört, dass NAV bei den Stücklistenebenen maximal 50 beherrscht. D.h. Stücklisten mit mehr als 50 Ebenen führen zu einem Runtime Error.

Re: Kann C/SIDE Rekursion?

3. Juli 2012 19:43

Bei der 50ten Ebene wird (gewollt) zur Sicherheit abgebrochen, sonst nichts.

Re: Kann C/SIDE Rekursion?

4. Juli 2012 09:27

Danke, mit der Info, dass es eigentlich gehen muss, habe ich mir den Code noch einmal genauer angesehen.

Meine Variable für den Record "BOM Component" war eine Globale Variable. Da ich in der Funktion einen Filter darauf setze, habe ich in der Rekursion den Filter für den vorherigen Aufruf ersetzt. Ich habe daraus eine lokale Variable gemacht und nun funktioniert es.
Zuletzt geändert von tepler am 4. Juli 2012 09:57, insgesamt 1-mal geändert.