Stücklisten-Buch.-Bl. und Chargenverfolgung

11. August 2005 15:08

Jetzt hänge ich hier vor einem kleinen Problem, wo ich gerne wissen möchte, ob ihr da eine elegante Lösung für habt:

Im Stücklisten-Buch.-Bl. kann man den zu erzeugenden Stücklisten-Artikeln eine Chargennummer zuweisen. Sowie, sogut.
Wie stelle ich es aber am elegantesten an, die verwendeten Chargennummern der verwendeten Komponenten einzugeben?

Beispiel:
Artikel 1000 (die Stückliste mit Chargennr.) besteht aus
- Artikel 1001
- Artikel 1002 (mit Chargennr.-Verfolgung)
- Artikel 1003

Ich gebe jetzt im Stücklisten-Buch.-Bl. den Artikel 1000 ein und weise ihm die (neu zu erstellende) Charge AB-4711 zu.
Wie kann ich festlegen, dass bei dieser Buchung der Artikel 1002 aus der Charge XY-1234 verwendet werden soll?

Ich bin für jeden Tipp und / oder Programmiervorschlag dankbar.

12. August 2005 13:18

ICh würde beim checken der Positionen im Code prüfen, ob es chargennummern gibt, wenn ja dann einen requester zur Auswahl anzeigen, wo der Mensch dann díe Numemr wählt, die kannst du dann hinterlegen....
oder hab ich dich jetzt falsch verstanden?

15. August 2005 21:45

Ich habe das Problem jetzt wie folgt "umgangen":
Vor dem buchen des Stücklisten-Buch.-Bl. prüfe ich alle Stücklisten-Artikel, ob eine ihrer Komponenten eine Artikelverfolgung erfordert.
Sollte eine Komponente dies erfordern, so wird der gesamte Stücklisten-Artikel in ein spezielles Artikel-Buch.-Bl. verschoben und dort entfaltet.
In dem Stücklisten-Buch.-Bl. wird die entsprechende Stückliste gelöscht, da sie sowieso nicht gebucht werden könnte.
Der Anwender wird mittels einer Message darüber informiert und nach dem Buchen öffnet sich das Artikel-Buch.-Bl. automatisch, so dass der Anwender sofort die "problematischen" Stücklisten bearbeiten kann.

16. August 2005 09:18

greifen die beiden Buch.-Blätter denn auf unterschiedliche Tabellen zu?
wenn nicht, könnten die Stücklisten ja auch im herkömmlichen Buch.-Blatt gebucht werden, wo dann nur bei den artikelverfolgungsrelevanten
Stücklisten ein Requester zur Abfrage der nötigen Informationen hochkommt. In der Fibu greifen ja alle Buch.-Blätter auf die gleiche Tabelle Fibu-Buch.-Blatt-Zeile zu, daher meine Rückfrage...

16. August 2005 10:44

Nein, die Buch.-Blätter sind technisch schon in derselben Tabelle, allerdings unterscheiden sie sich im Feld "Type". Da ich die Stücklisten sowieso entfalten muss, verschiebe ich sie in ein spezielles Artikel-Buch.-Bl., welches in einer Einrichtungstabelle hinterlegt wird.
Anschließend rufe ich dann das Artikel-Buch.-Bl. mit der in der Buch.-Bl.-Vorlage hinterlegten Form auf.

16. August 2005 11:02

Ich glaube, dann hast du bereits die eleganteste Lösung gefunden, mir fällt zumindest nichts besseres ein ;-)

16. März 2006 14:05

Hallo Timo,
Da wir jetzt bei einigen Kunden vor dem selben Problem stehen (Vaterartikel hat Seriennummer, soweit noch kein Problem, und Söhne haben teilweise Chargennr.), möchte ich Dich fragen, ob Du Deine Lösung evtl mit uns teilen möchtest.

16. März 2006 18:39

Die Lösung habe ich bereits vier Beiträge weiter oben erklärt.
Hier wäre vielleicht noch anzumerken, dass ich in einer der vorhandenen Einrichtungstabellen (z. B. Lager Einrichtung) zwei neue Felder angelegt habe, in der ich das zu verwendende Buch.-Blatt (sowie die Buch.-Blatt-Vorlage) hinterlegen kann.
Darüber hinaus kennzeichne ich die (entfalteten) Zeilen - welche eine Artikelverfolgung haben - mit einem Zeichen am Anfang der Beschreibung (z. B. mit einer #), dann kann der Anwender einfach per Filter (z. B. #*) die nachzuarbeitenden Zeilen eingrenzen.
Zum Buchen muss allerdings der Filter vorher wieder aufgehoben werden.
Eventuell könnte man dies vor dem Buchen prüfen (ob ein Filter auf "Beschreibung" gesetzt ist), denn Anwender sind gerne mal vergesslich ;-)

17. März 2006 09:27

den Beitrag hatte ich gesehen, aber mir ist noch nicht ganz klar geworden, wie dieses spezielle Buchblatt dann gefüllt werden muss. schreibst du den Vater 2 mal rein und lässt ihn einmal entfalten? der Vater muss ja mit der Menge ein- und die Söhne mit den entsprechenden Mengen ausgebucht werden. kann man nach dem entfalten denn noch die ganze Buchungsmimik des Stücklistenbuchblatts verwenden? Ich habe da gestern mal angefangen, nachzuvollziehen, was da alles passiert. Nach dem dritten störenden Telefonat mit anderen Kunden hab ich aber entnervt aufgegeben, weil ich jedesmal von vorne beginnen musste, mich durch die mindestens 5 verwendeten CU's zu hangeln, werden aber wohl 20 oder nochmehr sein ;-)

17. März 2006 12:54

An der richtigen Stelle angesetzt, brauchst du nur in eine Codeunit eingreifen (CU32?).
Das Stücklisten-Buch.-Blatt kannst du nicht für entfaltete Stücklisten verwenden.
Sowohl der Hauptartikel (der ja "produziert" wird), als auch die Komponenten (welche "verbraucht" werden) müssen (unter Berücksichtigung der Komponenten-Menge) in ein Artikel-Buch.-Blatt übertragen werden.
Zuletzt geändert von Timo Lässer am 17. März 2006 19:01, insgesamt 1-mal geändert.

17. März 2006 14:04

ich denke, ich werde da wohl mal nen support-call bei ms aufmachen, tät mich ja doch mal interessieren, wie die sich das so vorstellen... ;-)

Ansonsten werde ich mich da wohl mal durchwurschteln müssen. Im Prinzip ist mir ja klar, was passieren muss, es wär halt schön gewesen, wenn mir die Suche nach den Hebeln erspart geblieben wäre, bin halt ne faule Socke ;-)

28. März 2006 20:15

Ich versuche mich gerade an der Umsetzung, das ist echt eine Aufgabe an der man wachsen kann.
Ich greife nicht in Codeunits ein, sondern schon auf der Form in den Aufruf zum Buchen, zuerst erfolgt der Check auf Itemtracking und wenn dann noch Zeilen übrig sind, wird der ursprüngliche Code im OnPush trigger bei Buchen bzw Buchen und Drucken ausgeführt. Anschließend wird die Form für das spezielle Artikelbuch.-Blatt mit Runmodal geöffnet.

Jetzt habe ich noch ein paar Fragen dazu:
Wie hast du das gemacht bei wiederkehrenden Stücklistenbuchblättern?
da bleiben die Zeilen ja normalerweise stehen. Wenn ich den Check und Transfer ins spezielle Stücklistenbuchblatt gemacht habe, sind die entsprechenden Zeilen ja gelöscht.
Und was ist mit Ressourcen in der Stückliste? Wie hast du die dann gebucht?

28. März 2006 20:57

In meinem speziellen Fall waren keine wiederkehrende Stücklisten-Buch.-Blätter betroffen, daher hatte ich das Problem nicht.
Ganz grob skizziert würde ich bei der Prüfung der Zeilen die buchbaren mit einer Satzmarke versehen (Rec.MARK := TRUE;) und die nicht buchbaren in das normale Artikel Buch.-Blatt kopieren (und dort entfalten).
In dem Stücklisten Buch.-Blatt buchst du dann nur noch die markierten Datensätze (Rec.MARKEDONLY := TRUE;).

Bei Ressourcen wird die ganze Sache dann noch schwieriger, da diese ja nicht im Artikel Buch.-Blatt, sondern im Ressourcen Buch.-Blatt gebucht werden müssen.
Hier müsstest du also zusätzlich das Ressourcen Buch.-Blatt füllen.

29. März 2006 09:59

Timo Lässer hat geschrieben:Ganz grob skizziert würde ich bei der Prüfung der Zeilen die buchbaren mit einer Satzmarke versehen (Rec.MARK := TRUE;) und die nicht buchbaren in das normale Artikel Buch.-Blatt kopieren (und dort entfalten).
In dem Stücklisten Buch.-Blatt buchst du dann nur noch die markierten Datensätze (Rec.MARKEDONLY := TRUE;).


Das ist eine gute Idee, da könnte ich wohl ansetzen, der ganze Aufwand ist ja nur nötig, wenn bei Recurring im Template ein Häkchen steht....

Bei Ressourcen wird die ganze Sache dann noch schwieriger, da diese ja nicht im Artikel Buch.-Blatt, sondern im Ressourcen Buch.-Blatt gebucht werden müssen.
Hier müsstest du also zusätzlich das Ressourcen Buch.-Blatt füllen.

Eben genau das habe ich beim verfolgen der Buchung festgestellt,....
Dann muss ich auch dafür sorgen, dass beim Buchen dieses spezielles Artikelbuchblatts auch das Ressourcenbuchblatt mit gebucht wird, beim Löschen der Zeilen im Artikelbuchblatt, weil der Kunde es sich anders überlegt, muss dann auch das Ressourcenbuchblatt gelöscht werden, und bei einem Fehler beim Buchen des Ressourcenbuchblatts muss auch die Buchung im Artikelbuchblatt wieder zurückgesetzt werden, d.h. ich muss aufpassen, ob irgendwo ein Commit im Code steht.... wenn ja muss ich entweder CU's ändern, was ich ungern tue angesichts der erwarteten beiden Servicepacks, oder die Routinen kopieren in die Form für das spezielle Buchblatt (CodeUnits sind ja in der NFKU nicht enthalten) und dort entsprechend modifizieren.

Ich wollte beim durchforsten des Codes eigentlich nur herausfinden, mit welcher Methode und wann Navision feststellt, dass eine Seriennummer erforderlich ist, um den Code evtl selbst nutzen zu können. Leider ist der Aufruf der entsprechenden CU so aufwendig, dass ich da wieder von ab bin, zumal ich dann nur die ausgeworfen bekomme, wo die Nummer erzwungen werden soll, Vorgabe ist hier aber, dass auch die zur Seriennummerneingabe vorgeschlagen werden, wo es möglich ist aber nicht erzwungen wird. Ich werde hier also einfach die Items der Component-Liste auf einen Eintrag im Feld Serial No. Code bzw. Lot No. Code untersuchen und wenn was drinsteht, diese Stückliste kopieren.

6. Februar 2007 12:54

Hallo Ihr beiden!

Ich habe ja genau die gleiche Frage wie Timo, kann allerdings mit den Antworten an dieser Stelle nicht wirklich was anfangen. Mir fehlt die konkrete Umsetzung mit Codebeispielen. Wäre nett wenn vielleicht jemand von euch mir da ein wenig auf die Sprünge helfen könnte. Mein Problem ist eigentlich, die mir noch fehlende Erfahrung in Bezug auf die Buchblatterstellung und der Zusammenhang der ganzen Codeunits.

PS: Sorry für die Erstellung des neuen Themas an anderer Stelle, nächstes Mal guck ich vorher genauer.

6. Februar 2007 14:37

Zuerst musst du prüfen, ob einer der Komponenten eine Seriennummer braucht, wenn jemand auf buchen klickt. Wenn nicht, läßt du die ganz normale Funktion weiterlaufen.
Wenn doch, erzeugst du ein Artikelbuchblatt, und löschst die Zeile aus dem Stücklistenbuchblatt

Die Codeschnipsel stellt Navision bereits zur verfügung.
Schau Dir die Codeunit an, die beim Verbuchen des Buchblatts aufgerufen wird.
Navision kopiert den Stücklistenvater als Zugang in ein Artikelbuchblatt und die Komponenten als Abgang. DIese Funktionen musst du Dir nehmen um das Artikelbuchblatt zu füllen, und anschließend dieses Buchblatt aufrufen. Hier kann der Anwender dann die Serien und Chargennummern eingeben und buchen.

6. Februar 2007 15:01

Danke für die Antwort, Michael.
Bei den Artikeln in der Stückliste wird immer eine Chargennummer gebraucht. Deshalb habe ich die Stückliste um das Feld "Chargennummer", die ich mir über Lookup aus der entspr. Tabelle holen will, erweitert. Dann will ich das Stücklistenbuchblatt mit dem "Vaterartikel" buchen. Dabei packt ja Navision die Kinderartikel aus der Stückliste in ein Artikelbuchblatt; und anhand der Chargennummer, die ich als Info ja habe, erzeuge ich eine Artikelverfolgungszeile mit Spezifikation usw. genauso als würde ich in einem Buchblatt die Funktion Zeile -> Artikelvefolungszeilen aufrufen. Damit das dann auch sauber gebucht wird. Ist meine Idee umsetzbar? Oder übersehe ich da irgendwas?
Um das eventuell umzusetzen muss ich, wie du bereits erwähnt hast, erstmal genau schauen was Navision beim Buchen überhaupt so macht. Wird zwar eine fitzlige Sache, aber man kann ja nur dabei lernen.

6. Februar 2007 15:59

könntest Du auch so machen, wenn alle Kinder aus der gleichen Charge sind (extrem selten), aber einfacher ist es, nach dem Füllen des Artikelbuchblatts dieses aufzurufen und dort die Chargennummern mit der Funktion Artikelverfolgungszeilen (Taste Zeile) zuzuweisen.
Ich habe für die Umsetzung dieses Projekts knapp 2 Wochen gebraucht, bei uns sind aber auch noch einige Sonderfälle mit implementiert, daher kann ich Dir auch nicht einfach den Code geben, weil der zu sehr verändert wurde und auf weitere Änderungen in Navision zurückgreift....

6. Februar 2007 17:46

Danke für die schnelle Antwort!
Das mit den unterschiedlichen Chargen hab ich nicht bedacht. Deswegen werd ich deinen Vorschlag versuchen umzusetzen.