[gelöst] Der Wert Round des Parameters 2 ist

11. Januar 2008 16:45

Hallo,

ich beschäftige mich mit dem Vertriebs und Marketing modul.

Jetzt wollte ich bloss einen Artikel anlegen und ein Angebot erstellen.

Wenn ich aber den Artikel im Buchungsblatt Angebote buchen möchte
erscheint die Anghängte Fehlermeldung.

Es scheint mir so als habe ich irgentwo bei den Währung irgentwas noch nicht eingerichtet.

Hat einer eine Idee ?

Danke
Jörg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Jörg Nissen am 14. Januar 2008 13:22, insgesamt 1-mal geändert.

11. Januar 2008 17:22

Diese Fehlermeldung kann überall auftauchen, wo der Befehl ROUND verwendet wird - und das sind seeehr viele Objekte.

Daher würd ich den Debugger anschmeißen und nachschauen, wo er stehen bleibt.

14. Januar 2008 09:41

Hallo Natialie,

hab ich getan.

Das Problem tritt in unit 7000
ConvertPriceLCYtoCY auf.

----------------------------
IF PricesInCurrency THEN BEGIN
IF CurrencyCode = '' THEN
UnitPrice := CurrExchRate.ExchangeAmtLCYToFCY(ExchRateDate,Currency.Code,UnitPrice,CurrencyFactor);
UnitPrice := ROUND(UnitPrice,Currency."Unit-Amount Rounding Precision"); <<<< hier tritt das auf
END ELSE
UnitPrice := ROUND(UnitPrice,GLSetup."Unit-Amount Rounding Precision");
--------------------------------------------

CurrencyCode ist ""

Das Problem dürfte
Unit-Amount Rounding Precision
sein.

UnitPrice ist 50


----------------------------------
Gruß Jörg

14. Januar 2008 09:53

Kann es sein, dass ihr an der Tabelle Currency gedreht habt?
Der Init-Value des Feldes "Unit-Amount Roundnig Precision" ist im Standard 0,00001, bei dir ist er aber 0.

(Alternativ wird vor deinem Code ein Currency.GET("Irgendein Currency-Code") gemacht. Falls ja, schau nach, ob die Währung im o.g. Feld einen Wert <> 0 hat.)

14. Januar 2008 11:52

Hallo,

der init Value ist 0,01 von dem Feld
"Unit-Amount Roundnig Precision" und wurde von uns auch nicht verändert.

Wenn ich das richtig sehe wird doch irgentwo die Currencytabelle auf den CurrencyCode gefiltert. Da der CurrencyCode "" ist enthält doch die Datenmenge keine Satz.
Oder ?

Jörg

14. Januar 2008 11:58

Jörg Nissen hat geschrieben:Wenn ich das richtig sehe wird doch irgentwo die Currencytabelle auf den CurrencyCode gefiltert. Da der CurrencyCode "" ist enthält doch die Datenmenge keine Satz.
Oder ?


Richtig, daher ist der InitValue so wichtig. Der kommt immer bei der eigenen Währung (also Code = '') zum Tragen.

Wenn du dafür massig Beispiele sehen möchtest ,guck dir den Quelltext in Tabelle 37 an. Schau mal z.B. in "Line Discount %"-OnValidate.
Dort gibts auch einen ROUND mit einer solchen Rundungspräzision, obowhl auf Currency niemals ein GET ausgeführt wird.


Wenn du den Debugger mitlaufen lässt, müsste der bei dir doch für dieses Feld deine 0,01 ausweisen. Laut der Fehlermeldung lautet der Wert aber 0.
Bist du dir ganz sicher, dass du das richtige Feld kontrolliert hast? Es gibt schließlich noch mehr Precision-Felder in der Tabelle Currency.

Oder gibt es bei euch vielleicht eine Individualprogrammierung, die temporär
Currency."Unit-Amount Rounding Precision" := 0 setzt?

14. Januar 2008 12:20

Die Init-Werte sind innerhalb des C/AL-Codes unwichtig, sondern kommen nur zum Tragen, wenn neue Währungen angelegt werden.

Innerhalb des C/AL-Codes findet man in der Regel folgende Zeilen:
Code:
IF SalesHeader."Currency Code" = '' THEN
  Currency.InitRoundingPrecision
ELSE
  Currency.GET;

Dies bewirkt, dass in der Recordvariablen Currency die Werte aus der Finanzbuchhaltung Einrichtung stehen, sofern kein Währungscode angegeben ist (und somit auch kein Eintrag in der Tabelle Currency vorhanden ist).

14. Januar 2008 12:35

Hallo,

jetzt gehts.
Also meine Frage war falsch. Ich hatte den Debuger falsch gelesen :-(

Die Fehlerhafte Zeile ist die Nachfolgende nicht die Vorrausgehende.
Also hackte es bei dieser Zeile
UnitPrice := ROUND(UnitPrice,GLSetup."Unit-Amount Rounding Precision");

Das Feld GLSetup."Unit-Amount Rounding Precision") war 0.

Dies habe ich in der Tabelle nun direkt geändert auf 0,0001. Und schon gehts.

Jetzt nur noch eine Frage:

Wo kann ich dies Feld in den Einstellungsmenüs finden ?

Vielen Dank für deine Hilfe.

Jörg

14. Januar 2008 12:47

Timo Lässer hat geschrieben:Die Init-Werte sind innerhalb des C/AL-Codes unwichtig, sondern kommen nur zum Tragen, wenn neue Währungen angelegt werden.

Innerhalb des C/AL-Codes findet man in der Regel folgende Zeilen:
Code:
IF SalesHeader."Currency Code" = '' THEN
  Currency.InitRoundingPrecision
ELSE
  Currency.GET;

Dies bewirkt, dass in der Recordvariablen Currency die Werte aus der Finanzbuchhaltung Einrichtung stehen, sofern kein Währungscode angegeben ist (und somit auch kein Eintrag in der Tabelle Currency vorhanden ist).


Stimmt, hatte mich seinerzeit verguckt :oops:
Och manno.

14. Januar 2008 13:00

Jörg Nissen hat geschrieben:Wo kann ich dies Feld in den Einstellungsmenüs finden?
Gar nicht, da es in der Regel nicht eingeblendet ist.
Manche Branchen- bzw. Individuallösungen haben dieses (und einige andere Felder) zusätzlich eingeblendet.

14. Januar 2008 13:21

:-(


Danke für Eure Hilfe
Jörg