Variable an Codeunit übergeben

21. November 2005 08:47

Hallo,

Ich möchte in einem VK-Report die Daten aus "Item Ledger Entry" auslesen. Dabei filtere ich auf einen bestimmten Datumsbereich, den der User wählen kann.
Nun möchte ich zu jeder der aufgeführten Positionen den tatsächlichen Verkaufspreis haben (soweit ist es klar) und den zum Zeitpunkt der Fakturierung gültigen VK-Preis haben. Es existiert auch eine Codeunit, die diesen Preis bereits berechnet, sie sieht wie folgt aus (hier die Funktion):

____________________________________________________________
tmporder(VAR fromitem2 : TEMPORARY Record Item)
-------------------------------------------------
IF findprice = FALSE THEN
EXIT;

IF fromitem2.Blocked THEN
EXIT;

tmpsalesheader."Shipment Date" := WORKDATE;
tmpsalesheader.Status := tmpsalesheader.Status::Open;
tmpsalesheader."Document Date" := WORKDATE;
tmpsalesheader."Posting Date" := WORKDATE;
tmpsalesheader."Order Date" := WORKDATE;
tmpsalesline.SetSalesHeader(tmpsalesheader);
tmpsalesline."Line No." := tmpsalesline."Line No." + 10000;
tmpsalesline."Document Type" := tmpsalesheader."Document Type";
tmpsalesline."Document No." := tmpsalesheader."No.";
///tmpsalesline.VALIDATE(Type,tmpsalesline.Type::Item);
///tmpsalesline.VALIDATE("No.",fromitem2."No.");
//tmpsalesline.VALIDATE("Location Code",fromitem2."Location Filter");
///tmpsalesline.VALIDATE(Quantity,1);
// - WT1.00:07 ---
tmpsalesline."Responsibility Center" := tmpsalesheader."Responsibility Center";
// + WT1.00:07 +++

tmpsalesline."Location Code" := fromitem2."Location Filter"; //*
tmpsalesline."No." := fromitem2."No.";
tmpsalesline.Type := tmpsalesline.Type::Item; //*
tmpsalesline."Unit of Measure Code" := fromitem2."Base Unit of Measure";
tmpsalesline.Quantity := 1;

PriceCalcMgt.FindSalesLinePrice(tmpsalesheader,tmpsalesline,3);

fromitem2."Unit Price" := tmpsalesline."Unit Price";
fromitem2."Unit Cost" := tmpsalesline."Unit Cost";
fromitem2.tmpcbprice := tmpsalesline."CB-Price";

_________________________________________________________

Im Report möchte ich folgende Variable füllen "Unitprice". In den Item Ledger Entries habe ich ja theoretisch alle wichtigen Daten, ich weiss nur leider nicht, wie ich die Daten durch die Codeunit bearbeiten lassen kann.

Vielleicht kann mir da einer kurz unter die Arme greifen, wenn er eine Idee hat.

Vielen Dank,
Guenther

21. November 2005 10:01

Hi Günther,

so richtig schlau werde ich aus deiner Frage nicht.
Wenn du auf die Codeunit vo mreprot aus zugreifen willst, leg dir eine Variabel des Typs Codeunit an und dann kannst du die über das F5 Menü ansprechen.

War es das, was du wissen wolltest?

Gruss, Otschko

21. November 2005 10:25

Hallo Otschko,

Sorry, dass ich mich so unverständlich ausdrücke, aber ich programmiere erst seit ein paar Tagen in Attain.
Daß ich damit die Trigger sehen kann, war mir aber bereits bekannt.
Nur leider habe ich keinerlei Ahnung wie ich die Daten dann übergeben muß.

Ich denke mir, irgendwie so:

IF "Codeunitvariable".GET("Item Ledger Entry"."Item No.") THEN
UnitPrice := "Codeunitvariable"."Unit Price";

Aber das funktioniert so nicht. Ich weiss nicht, wie ich die Artikelnummer und das entsprechende Datum an die Codeunit übergeben kann, damit ich den richtigen Unit Price erhalte.

Weisst du jetzt, wie ich das meine?

Gruß

21. November 2005 10:41

Hi,

alles klar.
Wenn das eine eigene Codeunit ist kannst du diese ja dahingehend verändern, dass du der Funktion der Codeunit deine gewünschten Variablen/Werte übergibst.
So kommt man da hin.
Im Object Designer auf die Codeunit, Design gehen
- Ansicht/Globals
- Reiter Funktionen
- Dann Button Locals

Dann kommst du zuerst auf den Reiter der Parameter, dort wirst du dann auch deine Variable fromitem2 sehen.
Dort könntest du dann deine gewünschten Paramter/Records/Variablen mit übergeben.

Ich weiss halt nicht, inwiefern es dir dann dort freisteht, das zu verändern, dann müssen nämlich alle Aufrufe der Codeunit geändert werden.

Und bei "Return Value" kannst du eine Decimal-Variable l_DecValue mit angeben, die dann per EXIT(l_DecValue) beim Verlassen der Funktion zurückgegeben wird.

Ist aber auch ne recht schwierige Aufgabe, wenn man erst seit ein paar Tagen vorm Navision sitzt, da is das sicherlich nicht ganz so einfach...


Gruss, Otschko

21. November 2005 10:48

Hi

ich nochmal.
Die Daten aus der Codeunit werden doch an deinen fromitem2 Record geschrieben, die kannst du doch dann auswerten.

Gruss, Otschko