[Gelöst] - Aufträge per Codeunit füllen

16. März 2007 13:45

Hi,

um mir Arbeit zu sparen, möchte ich eine Funktion programmieren welche mir automatisch InventurAuftrage (Phys. Inventory Order Header) erstellt.

Auftrag anlegen, Beschreibung, Auftragsdatum, usw... füllen...

Mein Code sieht bisher so aus ;-)

Code:

Artikelkategorien.SETFILTER(Code, 'ArtKatX*');
IF Artikelkategorien.FIND('-') THEN REPEAT

  InventurAuftrag.INSERT;
  InventurAuftrag."No." :=
  InventurAuftrag.Description := 'Art.-Kat.: ' + Artikelkategorien.Code;
  InventurAuftrag."Order Date" := WORKDATE;
  InventurAuftrag."Posting Date" := WORKDATE;
  InventurAuftrag."Person Responsible" := 'KPETER';
  InventurAuftrag."Location Code" := 'KAARST';
  InventurAuftrag.MODIFY;
UNTIL Artikelkategorien.NEXT =0;


Was fehlt mir da noch?

Muss in die Lagereinrichtung und mir dort den Nummernkreis holen, anschl. in die Nummernkreis Tabelle prüfen welche Nummer dran ist, diese dann übergeben für meinen Insert.

Das ist doch automatisiert? Auf welche Funktionen muss ich zurückgreifen.

Danke.
Zuletzt geändert von elTorito am 16. März 2007 16:34, insgesamt 1-mal geändert.

16. März 2007 15:42

Hallo,

als erstes solltest du einen Init auf deine Recordvariable legen.
Rec.init;

dann damit die Nummer automatisch geholt wird:
rec."document type" := rec."document type"::order;
rec."no." := '';
rec.insert(true);
..
..

das o.ä. sollte dafür sorgen, dass die ganze Nummernserienlogik auch greift.

16. März 2007 15:48

Mit einem "nur" INSERT wird der DB-Trigger nicht durchlaufen.
Folglich wird auch die entsprechende Nummer nicht richtig erzeugt.
Erst mit INSERT( TRUE ) wird der DB-Trigger durchlaufen.
Sieh dir mal den OnInsert-Trigger in der Tabelle an.

16. März 2007 16:34

Hi,

danke fürs drüber schauen... so gehts nun richtig :-)

Code:

  InventurAuftrag.INIT;
  InventurAuftrag."No." := '';
  InventurAuftrag.Description := 'Art.-Kat.: ' + Artikelkategorien.Code;
  InventurAuftrag."Order Date" := WORKDATE;
  InventurAuftrag."Posting Date" := WORKDATE;
  InventurAuftrag."Person Responsible" := 'KARSTENPETER';
  InventurAuftrag."Location Code" := 'KAARST';
  InventurAuftrag.INSERT(TRUE);


Is a friday halt ...

16. März 2007 16:40

bliebe vieleicht noch zu ergänzen,
dass du die Felder mit validate füllst
also
rec.validate("location code",'BLAU');
damit ist gewährleistet, dass auch die jeweiligen Feldtrigger laufen.

schönen Freitag noch 8-)