Währungen <> 2 Dezimalstellen

SAP R/3 Finanzwesen: Hauptbuchhaltung; Kreditorenbuchhaltung; Debitorenbuchhaltung; Bankbuchhaltung; Anlagenbuchhaltung; ...
11 Beiträge • Seite 1 von 1
11 Beiträge Seite 1 von 1

Währungen <> 2 Dezimalstellen

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) »
Hallo Leute,

im IMG gibt es die Möglichkeit, bei Währungen die Anzahl der Dezimalstellen einzugeben. Wenn ich mir mit der SE11 die BSEG anschaue, sind da 2 Nachkommastellen bei den Betragsfeldern reserviert. Ich nehme an, dass es intern wahrscheinlich gar keine Nachkommastellen gibt. Mir geht esnun darum, wie das System das handelt, wenn ich bei einer Währung 3 Dezimalstellen festlege. Was passiert, wenn ich den Betrag aus der BSEG auslese? Erhalte ich dann schon den Betrag in rihctiger Form oder muss ich den dann noch um eine Stele nach rechts verschieben?

Hat jemand von Euch damit schon Erfahrung gemacht?

Ich suche eine Doku oder etwas Ähnliches zu diesem Thema. Hat jemand einen Tipp für mich?

Herzlichen Dank,
Blueshape
Ich bin für alles offen, solange es anderen nicht ernsthaft schadet.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Blueshape,

tabellenintern werden die Währungsbeträge immer so abgelegt, dass die Zahl mit den Anzahl Nachkommastellen in das Währungsfeld geschrieben werden.
Betragsfeld: 13,2

Code: Alles auswählen.

ITL 1.000.000 => 0000001000000
KWD 1.000,000 => 0000001000000
EUR 10.000,00 => 0000001000000
Daher musst Du bei der Ausgabe immer darauf achten, dass das Betragsfeld einen Bezug zu dem Währungsfeld hat.

Code: Alles auswählen.

WRITE <betrag> CURRENCY <waehrung>.
In ALV und Dynpro müssen die Referenzen richtig gesetzt sein.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) »
Hallo ereglam,

danke für Deine Hilfe! :D

Aber so ganz habe ich nicht verstanden, wie Du das meinst. Wenn ich z.B. EUR auslese aus der BSEG und dann ausgebe, dann weiß das System doch auch, dass es 2 Nachkommastellen ausgeben muss, ohne dass ich explizit eine Verbindung zur Währung herstelle.

Also, Du sagst, ich muss immer die Währung referenzieren, damit ich immer die richtige Anzahl Nachkommstellen in der Ausgabe habe?

Ich dachte, es gibt es zu jedem Betrag die Währung in der Tabelle und somit wäre für mich die Aufbereitung klar?

Viele Grüße,
Blueshape
Ich bin für alles offen, solange es anderen nicht ernsthaft schadet.

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Blueshape,

ja, das ist so richtig! Sonst kommt eventuell Müll heraus.

Du wirst diverse Stellen im SAP-System finden, wo das Währungskennzeichen nicht in der gleichen Tabelle steht wie der Betrag.
Das gilt z.B. für BKPF/BSEG und die Belegwährung: Betrag BSEG-WRBTR und Währung BKPF-WAERS bzw BSEG-DMBTR/T001-WAERS (Hauswährung).
Das bedeutet, dass Du im einfachsten Fall im Dynpro ein Feld BSEG-WRBTR anlegst und im ABAP in der Struktur BKPF in WAERS die Währung hineinschreiben musst, damit immer die richte Aufbereitung benutzt werden kann. Benutzt Du im Dynpro andere Feldnamen, musst Du dort auch die Referenz auf die entsprechenden Felder setzen.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) »
Hi nochmal,

ok für die Ausgabe mit write ist mir das nun klar. Aber wenn ich etwas mit den Beträgen rechnen will, wie mache ich das dann? Das wirkt sich doch sicherlich auch in anderen Module dann aus. So wie das aussieht, ist das nicht zu empfehlen mit den 3 Nachkommastellen, wenns zu verhindern ist :?:

Also muss ich immer aufpassen, dass die richtige Anzahl Dezimalstellen dabei ist, wenn ich mit Beträgen arbeite, die nicht zwei Nachkommastellen haben?

Viele Grüße,
Blueshape
Ich bin für alles offen, solange es anderen nicht ernsthaft schadet.

Beitrag von Thomas R. (Expert / 754 / 73 / 34 ) »
Hallo Blueshape,
solange Du in einer Währung bleibst dürfte doch nichts passieren. Und EUR mit DEM multiplizieren/addieren... macht ja nicht viel Sinn.

MfG
Thomas R.

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) »
Hallo,

ich will das Problem mal kurz darstellen, auch wenn ich in einer Währung bleibe:

Normal auf dem Papier.
1,567 x 1,567 = 2,455489

Wenn die interne Speicherung aber ohne Nachkommastellen ist dann habe ich doch
1567 * 1567 = 2455489. Und wenn ich nun ein Komma setze bei 3 Nachkommastellen (weil ich dem System erst jetzt bei der Ausgabe sage "dieser Betrag ist die Währung XYZ"), dann habe ich diesen falschen Betrag 2455,489 in XYZ.

Und nun :?: ???
Ich bin für alles offen, solange es anderen nicht ernsthaft schadet.

Beitrag von Thomas R. (Expert / 754 / 73 / 34 ) »
Hallo Blueshape,
bei Deinem Beispiel hast Du dann eine Währung hoch 2, auch dies macht nicht viel Sinn im SAP Umfeld. Mir jedenfalls ist kein Beispiel bekannt.
Ist nur einer der Faktoren eine Währung, spielen die Nachkommastellen keine Rolle - von daher war mein Beispiel vorher nicht wirklich hilfreich.

MfG
Thomas R.

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo,

so ein Fall dürfte durchaus eintreten, wenn man z.B. Menge mit Betrag rechnet.
Meines Wissens sind bei den FI-Bausteinen, die mit Währungen rechnen, die Festkomma-Arithmetik abgeschaltet und der Programmierer muss sich selbständig um Kommasetzung kümmern.

Das würde in diesem Beispiel bedeuten, dass er die 3 Nachkommastellen aus dem Betrag plus die 3 Nachkommstellen aus der Menge addieren muss und das Ergebnis (hier 2455489) durch 10**6 (10 hoch 6) dividieren muss => 2,455489.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Thomas R. (Expert / 754 / 73 / 34 ) »
:oops:
Na klar gibt es den von ereglam beschriebenen Fall.
Und die Probleme gibt es nur bei abweichenden Währungen (Dezimalen <> 2) - wie von blueshape beschrieben. Bei den anderen greift die automatische Konvertierung bei unterschiedlichen Genauigkeiten.
:oops:

Thomas R.

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) »
Hallo und danke für die rege Teilnahme!

Es war jedenfalls schon mal gut, dass ich das nicht gleich eingeführt habe, ohne mir Gedanken darüber zu machen.

Ich denke, wenn es nicht lebensnotwendig sollte man davon abraten. Man muss zuviel beachten, alte Programme prüfen und umprogrammieren und bei den neuen immer aufpassen.

Dieser Fall tritt bei uns nur auf, weil unser Payrollsystem die Beträge mit 3 Nachkommastellen ausgibt und auch an SAP weitergibt.

Ich denke, es ist sinnvoller in dem Payrollsystem auf die 3. Stelle zu verzichten, denn der Wert dieser 3. Nachkommastelle geht gegen Null.

Vielen Grüße,
Blueshape
Ich bin für alles offen, solange es anderen nicht ernsthaft schadet.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
4697
Views
Dezimalstellen ALV-Ausgbe
von whistler » 28.02.2005 17:40 • Verfasst in ABAP Objects®
4
Antw.
500
Views
Auf vier Dezimalstellen konvertieren
von nijat.gadirov » 19.01.2023 16:55 • Verfasst in ABAP® für Anfänger
0
Antw.
851
Views
Betrags-Dezimalstellen im Control
von abapo » 10.01.2006 20:50 • Verfasst in Dialogprogrammierung
11
Antw.
8086
Views
Dezimalstellen in SAPSCRIPT abschneiden
von strobbel » 22.08.2008 10:37 • Verfasst in ABAP® für Anfänger
1
Antw.
3296
Views
Dezimalstellen eines QUAN bei OO-ALV Ausgabe einschränken
von Foerstar » 08.12.2016 14:28 • Verfasst in ABAP Objects®

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.