[gelöst]Codeunit 60 "Sales Calc. Discount"

6. September 2010 11:34

Hallo,

ich habe ein kleines Verständnisproblem mit der Codeunit 60.

Und zwar steht dort im on run:
Code:
SalesLine.COPY(Rec);

TempSalesHeader.GET("Document Type","Document No.");
TemporaryHeader := FALSE;
CalculateInvoiceDiscount(TempSalesHeader,TempSalesLine);

Rec := SalesLine;


Mir ist dort nicht ganz klar, wo die Tempsalesline herkommt bzw. wie diese zur SalesLine referenziert wird. Wird dies über das Property "TableNo" geregelt?

Danke für eine kurze Info!

Lg
Martin
Zuletzt geändert von rom am 6. September 2010 11:54, insgesamt 1-mal geändert.

Re: Codeunit 60 "Sales Calc. Discount"

6. September 2010 11:41

Größtes Missverständnis: TempSalesHeader ist trotz seines Namens kein echter temporärer Record, sondern ein "normaler": Temporary = <No>.
Daher findet auch kein vorheriges TempSalesHeader.INSERT statt.

Beim OnRun wird ein Sales Line-Record übergeben. Dies wird - wie du schon richtig vermutet hast - mittels der Codeunit-Eigenschaft TableNo erreicht.
Mit
Code:
TempSalesHeader.GET("Document Type","Document No.");
wird nun der dazu gehörige Header frisch ausgelesen.

Nun zu
Code:
CalculateInvoiceDiscount(TempSalesHeader,TempSalesLine);

TempSalesLine (auch hier: nicht temporär) wird als Ergebnis zurück geliefert, dient nicht als Input!

Re: Codeunit 60 "Sales Calc. Discount"

6. September 2010 11:46

Hallo Natalie,

danke für die schnelle Antwort.

Das bedeutet also, dass TempSalesLine den Wert/Rec hat, welche im Property TableNo vorhanden ist. Muss dann die Variablenbezeichnung für das Rec des Property dann immer in dem Fall TempsalesLine sein?

lg

Re: Codeunit 60 "Sales Calc. Discount"

6. September 2010 11:50

rom hat geschrieben:Das bedeutet also, dass TempSalesLine den Wert/Rec hat, welche im Property TableNo vorhanden ist.

Nein, du verwechselst TempSalesHeader und TempSalesLine.
Ich habe zwischenzeitlich meinen Beitrag noch einmal editiert. Bitte nochmal lesen und bei Unklarheiten bitte nachbohren :-)

Die TableNo definiet nur die Rec-Tabelle (welche, nicht welcher Datensatz) und keine (andere) globale Variable!
Der eigentliche Datensatz wird mitgegeben, wenn die Codeunit mit einem Record aufrufen wird.
Mit TempSalesLine hat das nichts zu tun.

Re: Codeunit 60 "Sales Calc. Discount"

6. September 2010 11:54

Ok, nun ist alles klar!

Danke!