Page 1 of 1

Nachkommastellen in ABAP

PostPosted: Tue Mar 17, 2015 11:37 am
by Taha1380
Hallo Zusammen,

wir habe eine Zeile im ABAP:
XKWERT = XKOMV-KAWRT * 1000 / XMENGE.

Beim debuggen sehe ich vor der Zeile:
XKOMV-KAWRT 210.36
XKWERT 199.84
XMENGE 48000.000

danach:
XKOMV-KAWRT 210.36
XKWERT 0.00
XMENGE 48000.000

Eigentlich würde ich XKWERT = 4,38 statt 0 erwarten. Rechnet SAP intern mit weniger Nachkommastellen als ich das im Taschenrechner tue? Wie müsste ich das in ABAP formulieren, damit das richtige Ergebnis kommt?

Danke
Exberliner

Re: Nachkommastellen in ABAP

PostPosted: Tue Mar 17, 2015 11:51 am
by Joeline5261
Hallo,

auch Xmenge / 1000.
Dann sollte es passen.

Gruß
Wolfgang

Re: Nachkommastellen in ABAP

PostPosted: Tue Mar 17, 2015 11:55 am
by Taha1380
Also meinst Du:
XKOMV-KAWRT / XMENGE * 1000
sollte gehen? Was ist der Grund?

Danke
Exberliner

Re: Nachkommastellen in ABAP

PostPosted: Tue Mar 17, 2015 12:04 pm
by Joeline5261
Hallo,

nein kawrt / ( xmenge / 1000 ).

Gruß
Wolfgang

Re: Nachkommastellen in ABAP

PostPosted: Tue Mar 17, 2015 1:03 pm
by Taha1380
Danke, Wolfgang, ich gebe das so weiter...

Gibt es noch eine andere Meinung?

Re: Nachkommastellen in ABAP

PostPosted: Wed Mar 18, 2015 8:57 am
by Constantin3326
Wahrscheinlich liegt es -vereinfacht gesagt - daran, dass das Mengenfeld als "gepackte" Zahl deklariert ist, d.h. das die Nachkommastellen virtuell sind und somit das System intern rechnet:

210,36 * 1000 / 48000000 = 0,0043825

Re: Nachkommastellen in ABAP

PostPosted: Wed Mar 18, 2015 10:54 am
by Alma59
Das Statement wird wohl in einem Include der Konditionen sein. In dem Rahmenprogramm der Includes wird ohne Festpunktarithemetik gearbeitet und wie schon gesagt mit ganzen Zahlen gerechnet ohne den Dezimalstellen.

Du kannst auch mit Floatfeldern arbeiten und mappst dann zurück.
data: KAWRT like komv-kawrt VALUE '210.36',
XMENGE type XMENGE VALUE '48000.000',
XKWERT type f.

XKWERT = KAWRT * 1000 / XMENGE.
XKWERT = 4,3824999999999997E-01

VG