Nachkommastellen in ABAP

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Nachkommastellen in ABAP

Postby Taha1380 » Tue Mar 17, 2015 11:37 am

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
Taha1380
...
...
 
Posts: 203
Joined: Mon Oct 24, 2011 9:43 am

Re: Nachkommastellen in ABAP

Postby Joeline5261 » Tue Mar 17, 2015 11:51 am

Hallo,

auch Xmenge / 1000.
Dann sollte es passen.

Gruß
Wolfgang
Joeline5261
...
...
 
Posts: 387
Joined: Thu Aug 18, 2005 2:42 pm

Re: Nachkommastellen in ABAP

Postby Taha1380 » Tue Mar 17, 2015 11:55 am

Also meinst Du:
XKOMV-KAWRT / XMENGE * 1000
sollte gehen? Was ist der Grund?

Danke
Exberliner
Taha1380
...
...
 
Posts: 203
Joined: Mon Oct 24, 2011 9:43 am

Re: Nachkommastellen in ABAP

Postby Joeline5261 » Tue Mar 17, 2015 12:04 pm

Hallo,

nein kawrt / ( xmenge / 1000 ).

Gruß
Wolfgang
Joeline5261
...
...
 
Posts: 387
Joined: Thu Aug 18, 2005 2:42 pm

Re: Nachkommastellen in ABAP

Postby Taha1380 » Tue Mar 17, 2015 1:03 pm

Danke, Wolfgang, ich gebe das so weiter...

Gibt es noch eine andere Meinung?
Taha1380
...
...
 
Posts: 203
Joined: Mon Oct 24, 2011 9:43 am

Re: Nachkommastellen in ABAP

Postby Constantin3326 » Wed Mar 18, 2015 8:57 am

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
Constantin3326
....
....
 
Posts: 840
Joined: Tue Dec 20, 2005 11:47 am

Re: Nachkommastellen in ABAP

Postby Alma59 » Wed Mar 18, 2015 10:54 am

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
Alma59
...
...
 
Posts: 134
Joined: Tue Jul 08, 2008 10:35 am


Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 3 guests