ĂĽber ein Webservice befĂĽlle ich erst eine Zeile in einen Artikelbuchblatt.
Danach wird auch ĂĽber einen Webserivce-Aufruf eine Codeunit-Funktion aufgerufen, welche diese Zeile bucht und in weiteren Tabellen Ă„nderungen vornimmt.
Buchungscode ist
- Code: Alles auswählen
CLEAR(ItemJnlLine);
ItemJnlLine.RESET;
ItemJnlLine.SETRANGE("Journal Template Name", TemplateCode);
ItemJnlLine.SETRANGE("Journal Batch Name", BatchName);
ItemJnlLine.SETRANGE("Line No.", LineNo);
IF ItemJnlLine.FINDSET THEN BEGIN
CLEARLASTERROR();
MengeBasis := ItemJnlLine.Quantity;
IF NOT ItemJnlPostBatch.RUN(ItemJnlLine) THEN BEGIN
COMMIT;
ERROR(GETLASTERRORTEXT);
END ELSE BEGIN //Dient zum Ausdrucken und zum Abbuchen
..
END;
END;
Das funktioniert alles.
Nun möchte ich diese Funktion erweitern.
Wenn der zugebuchte Artikel im "Decklagen-Artikelnr." einen Inhalt hinterlegt hat, soll diese zu Buchung wieder abgebucht werden und mit einer anderen Artikelnummer wieder zugebucht werden. (Brauche das leider so)
DafĂĽr habe ich diesen Code eingebaut
- Code: Alles auswählen
IF Item."Decklagen-Artikelnr." <> '' THEN BEGIN
//Lamellen Artikel Abbuchung
ItemJnlLine.INIT;
ItemJnlLine.VALIDATE("Journal Template Name", 'ARTIKEL');
ItemJnlLine.VALIDATE("Journal Batch Name", 'H1L2AB');
ItemJnlLine.SetUpNewLine(ItemJnlLine); //Dadurch wird unter anderen die Belegnr. generiert!
ItemJnlLine.VALIDATE("Line No.",10);
ItemJnlLine.VALIDATE("Entry Type",ItemJnlLine."Entry Type"::"Negative Adjmt.");
ItemJnlLine.VALIDATE("Posting Date",TODAY);
ItemJnlLine.VALIDATE("Chargen Nr. Eingabe",Chargennr);
IF ItemJnlLine.INSERT(TRUE) THEN BEGIN
Zubuchungsmenge := ItemJnlLine."Quantity (Base)";
Zubuchungslagerplatz := ItemJnlLine."Bin Code";
Zubuchungsbemerkung := ItemJnlLine.Bemerkung;
IF NOT ItemJnlPostBatch.RUN(ItemJnlLine) THEN
ERROR(GETLASTERRORTEXT);
END;
//Decklage Zubuchung
ItemJnlLine.INIT;
ItemJnlLine.VALIDATE("Journal Template Name", 'ARTIKEL');
ItemJnlLine.VALIDATE("Journal Batch Name", 'H1L2ZU');
ItemJnlLine.VALIDATE("Line No.",10);
ItemJnlLine.VALIDATE("Posting Date",TODAY);
ItemJnlLine.VALIDATE("Item No.",Item."Decklagen-Artikelnr.");
ItemJnlLine.VALIDATE("Location Code",'SCHEUCHER');
ItemJnlLine.VALIDATE("Bin Code",Zubuchungslagerplatz);
ItemJnlLine.VALIDATE("Quantity (Base)",Zubuchungsmenge);
ItemJnlLine.Bemerkung := Zubuchungsbemerkung;
ItemJnlLine.VALIDATE("Posting Line",TRUE);
IF ItemJnlLine.INSERT(TRUE) THEN BEGIN
Chargennr := ItemJnlLine."Lot No.";
IF NOT ItemJnlPostBatch.RUN(ItemJnlLine) THEN
ERROR(GETLASTERRORTEXT)
ELSE BEGIN
PDFFilename := "3TierMgtm".ServerTempFileName('pdf');
ItemLedgerEntry.RESET;
ItemLedgerEntry.SETRANGE("Lot No.",Chargennr);
IF ItemLedgerEntry.FINDFIRST THEN BEGIN
REPORT.SAVEASPDF(50034, PDFFilename, ItemLedgerEntry);
Path := PDFFilename;
GetPathFilename(Path, FileN);
CLEAR(PrinterSelection);
IF PrinterSelection.GET(USERID, 50034) THEN;
Printing.PrintPDFFoxitReader(Path + FileN, PrinterSelection."Printer Name");
END;
END;
END;
END
Und hier kommt nun das Problem, wo Navision meint es sollte ein Commit eingebaut werden.
Habe schon versucht an mehreren Stellen das zu machen. Leider ohne Erfolg.
Bzw. wäre mir lieber es ohne Commit lösen zu können.
Habt ihr eine Idee wie ich das machen könnte.
Danke
stony