[gelöst] Abgänge von Artikeln buchen

2. April 2007 13:35

Hallo,

ich möchte eine Funktion machen die Abgänge von Artikeln erfasst, und bucht. Ich weis nur leider nicht wie ich das anstellen soll.

Mein erster Gedanke waren die Artikelbuchblätter. Diese wollte ich per Code ausfüllen, bin aber schon an der Zeilennummer gescheitert.
Wenn mir jemand helfen könnte wäre das super.

PS: Kann man diese Funktion in zwei Stunden schaffen zu programmieren?
Zuletzt geändert von Steev am 4. April 2007 11:12, insgesamt 2-mal geändert.

2. April 2007 14:09

Hallo

Im Prinzip ist die Programmierung innerhalb von 2 Stunden zu schaffen.
Es hängt von der Komplexität ab, welche "Fälle" alle berücksichtigt werden müssen.

Das erste Problem ist die Zeilennr..
Dieses Feld wird beim manuellen Erfassen durch das Propertie AutoSplittkey des Forms automatisch vergeben.
Du musst beim Einfügen Deiner Zeilen im Programmcode das Feld Zeilennummer mit einem Integer abfüllen.
Am Besten beginnst Du mit 10000 und inkrementierst diese Variable nach jeder Zeile um 10000.

Am Besten den Report 790 angucken. Dort ist das alles gelöst.
Gruss

2. April 2007 14:32

martinst hat geschrieben:Am Besten beginnst Du mit 10000 und inkrementierst diese Variable nach jeder Zeile um 10000.


Das wäre falsch, wenn in dem Buchblatt schon Datensätze stehen. Daher solltest du nach folgendem Schema vorgehen:

Code:
Artikelbuchblattzeile.SETRANGE("Journal Template Name", CurrentJnlTemplateName);
Artikelbuchblattzeile.SETRANGE("Journal Batch Name", CurrentJnlBatchName);

IF Artikelbuchblattzeile.FIND('+') THEN
  LineNo := Artikelbuchblattzeile."Line No."
ELSE
  LineNo := 0;


Weiter hinten füllst du ja das Buchblatt selber:

Code:
REPEAT
  LineNo += 10000;

  WITH Artikelbuchblattzeile DO BEGIN
    INIT;
    "Journal Template Name" := CurrentJnlTemplateName;
    "Journal Batch Name"    := CurrentJnlBatchName;
    "Line No."              := LineNo;
    INSERT(TRUE);
    [...]
  END;
UNTIL Irgendwas.NEXT = 0;


Dass der Code noch für deine Zwecke modifiziert werdne müsste, versteht sich hoffentlich von selbst.

2. April 2007 14:58

Das wäre falsch, wenn in dem Buchblatt schon Datensätze stehen. Daher solltest du nach folgendem Schema vorgehen:


Ist klar. Es ging mir auch nur darum, das Prinzip zu zeigen.
Diese Stolpersteine muss es selber erleben :-)

Gruss

2. April 2007 15:03

Du bist ja gemein *g*
Wie soll er es denn dann in 2 Stunden schaffen?

2. April 2007 15:10

Ich habe ja geschrieben "im Prinzip möglich" :-)

2. April 2007 15:47

Danke erst mal für die vielen, schnellen Antworten.

Ich bin jetzt schon ziemlich weit *g*, beim Buchen benutze ich die Codeunit "Item Jnl.-Post" und gebe ihr die Artikelbuchblattzeilen.

Jetzt wird allerdings nur die erste Zeile gebucht weil er dann eine andere "Document No." haben will. Ist es falsch wenn ich da eine Nummer aus einer Nummernserie rein tuhe, und wenn ja, wie kann ich diese um eine Nummer erhöhen (wg. CODE)?

Ich freue mich auch über weitere antworten...

2. April 2007 15:53

Hallo

Du kannst eine Nummer aus der Numernserie verwenden, oder eine manuelle.
Den Code wie Du eine Nummer aus der Nummernserie holst findest Du an vielen Stellen im Standard.
z.B. Tabelle 83 Item Journal Line
SetUpNewLine(LastItemJnlLine : Record "Item Journal Line")

Gruss

2. April 2007 15:56

Dankeschön, werde es gerade mal ausprobieren...

2. April 2007 16:20

Aus irgend einem Grund bekomme ich das nicht so hin wie ich will, muss man da echt Nummernserien nehmen?

2. April 2007 16:28

Nein. Du kannst im Prinzip auch 123 in das Feld "Document No." schreiben.
Wichtig ist dabei, dass Du im Erfassungsjournalnamen keine Nummernserie hinterlegt hast. Sonst will er immer eine Nummer aus dieser Serie.
Aber wo liegt denn das Problem eine Nummer aus der Serie zu holen?

Gruss

Danke, genau das habe ich gebraucht

4. April 2007 11:11

Danke, genau das habe ich gebraucht. Jetzt funktioniert es nämlich.

Ich Dummkof habe immer die Nummernserie hinterlegt, darum hat Navision dann auch nach der zweiten Zeile gemäckert weil es keine neue Nummer gab...

Also nochmal, Dankeschön.