Показать сообщение отдельно
Старый 12.04.2008, 20:05   #1  
Blog bot is offline
Blog bot
Участник
 
25,486 / 846 (79) +++++++
Регистрация: 28.10.2006
jinx: Produktionsauftr?ge per Quellcode erstellen
Das Erstellen von Produktionsauftr?gen sollte an sich kein Problem darstellen. Leiderist dem nicht ganz so.
Anders als in anderen Modulen (z.B. Auftr?ge) von Dynamics AX, existiert hierf?r keineKlassenstruktur, 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 Maskeverwendet werden kann. Ein Beispiel hierf?r k?nnte eine Schnittstelle sein, welche?ber eine Textdatei die zu produzierenden Waren einlie?t und entsprechende Produktionsauftr?geim System generiert.
Die Frage ist nun, wie erstellt man Produktionsauftr?ge per Quellcode, damit dieseauch „richtig“ im System erzeugt werden (inkl. St?ckliste, Arbeitsplan und Lagerbuchung).
  • Zuerst muss der Produktionsauftrag mit den Daten des zu produzierenden Artikels initialisiertwerden.
  • Weiterhin m?ssen Produktionsmenge und Lieferdatum festgelegt werden.
  • Ebenfalls sind die zu verwendende St?ckliste und der Arbeitsplan zu definieren.
  • Und als letzter Schritt muss der Produktionsauftrag noch erzeugt werden.
Hierbei gilt es aber zu beachten, dass die Erstellung (Speichern in der Datenbank) nichtmit der Methode „insert“ der Tabelle „ProdTable“ geschieht, sondern dass hierf?r dieKlasse „ProdTableType“ und deren Methode „insert“ verwendet wird. Nur so wird dieentsprechende Lagerbewegung / Lagerbuchung im System erzeugt und wenn notwendig Referenzenzu einem Verkaufsauftrag oder einer anderen Produktion hinterlegt.
Um dies zu veranschaulichen ein kurzes Beispiel, in welchem ein neuer Produktionsauftragerstellt 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?ndlichsind 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").


Es wird keine Haftung oder Gew?hrleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel K?hn (Aku's AX Blog, http://blog.ak-home.net) and Mathias F??ler (jinx's AX Blog, http://starside.eu)

More...