Das Erstellen von Produktionsaufträgen sollte an sich kein Problem darstellen. Leider ist dem nicht ganz so.
Anders als in anderen Modulen (z.B. Aufträge) von Dynamics AX, existiert hierfür keine Klassenstruktur, welche die entsprechenden Funktionen bereit stellt.Der Dynamics AX Standard erstellt Produktionsaufträge immer über die Maske „ProdTableCreate“. Es gibt aber Situationen, wo für die Erstellung eines Produktionsauftrages keine Maske verwendet werden kann. Ein Beispiel hierfür könnte eine Schnittstelle sein, welche über eine Textdatei die zu produzierenden Waren einließt und entsprechende Produktionsaufträge im System generiert.
Die Frage ist nun, wie erstellt man Produktionsaufträge per Quellcode, damit diese auch „richtig“ im System erzeugt werden (inkl. Stückliste, Arbeitsplan und Lagerbuchung).
Hierbei gilt es aber zu beachten, dass die Erstellung (Speichern in der Datenbank) nicht mit der Methode „insert“ der Tabelle „ProdTable“ geschieht, sondern dass hierfür die Klasse „ProdTableType“ und deren Methode „insert“ verwendet wird. Nur so wird die entsprechende Lagerbewegung / Lagerbuchung im System erzeugt und wenn notwendig Referenzen zu einem Verkaufsauftrag oder einer anderen Produktion hinterlegt.
Um dies zu veranschaulichen ein kurzes Beispiel, in welchem ein neuer Produktionsauftrag erstellt wird.
static void CreateProductionOrder(Args _args){ //Die zu produzierende Menge ProdQtySched productionQty = 1; //Der zu produzierende Artikel ItemId productionItem = "Artikelnummer"; ProdTable prodTable; InventTable inventTable; ; inventTable = InventTable::find(productionItem); //Initialisierung des Produktionsauftrags prodTable.initValue(); prodTable.ItemId = inventTable.ItemId; prodTable.initFromInventTable(inventTable); //Lieferdatum festlegen prodTable.DlvDate = today(); prodTable.QtySched = productionQty; prodTable.RemainInventPhysical = prodTable.QtySched; //Die zu verwendende Stückliste und Arbeitsplan bestimmen prodTable.initRouteVersion(); prodTable.initBOMVersion(); //Produktionsauftrag erstellen prodTable.type().insert();}
Selbstverständlich sind auch weitere Angaben bei der Erstellung des Produktionsauftrags möglich.Z.B. kann ein Produktionsauftrag auch aus einer Verkaufsauftragsposition erzeugt werden (bei Verwendung der Methode "initFromSalesLine").
Remember Me
Subscribe in a reader