If-Abfrage Betrag

Getting started ... Alles für einen gelungenen Start.
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

If-Abfrage Betrag

Beitrag von Frank Zet. (ForumUser / 89 / 4 / 1 ) »
Hallo,

mal eine kurze Frage, die ich gerne hier positionieren möchte, weil ich mich im Moment wie ein Anfänger fühle. Und zwar geht es um folgende Abfrage:

if x_feld >= 0.
y_ feld = 1.
else.
y_feld = 2.
endif.

Wobei x_feld = char16 typisiert ist. Hat x_feld einen Wert von 0.01- bis 0.49- wird y_feld = 1 gesetzt. WARUM? Es gibt keinerlei Konv.- oder Rundungsroutine o. ä. Oder wird hier "intern" abgerundet. Wahrscheinlich liegt es an der Character-Typisierung, aber erklären kann ich mir es nicht richtig. Ändere ich die Abfrage ab auf:

if x_feld > 0.
y_ feld = 1.
else.
y_feld = 2.
endif.

...und x_feld hat einen Wert von 0.01- bis 0.49-, dann wird y_feld = 2 gesetzt. Sicherlich gibt es eine lustige Erklärung für diese lustige Verhaltensweise. Meine ersten Zeilen ABAP-Coding habe ich 1998 geschrieben, aber dieses Problem(chen) habe ich heute zum ersten Mal.

Über eine nette Antwort würde ich mich freuen. ;-)

Danke und Gruß.

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


Re: If-Abfrage Betrag

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Du hast den Vergleich eines c-Feldes gegen ein i-Feld vorliegen (wenn meine Annahme stimmt, dass 0 als Integer angesehen wird, sollte es P sein, so gilt das wahrscheinlich trotzdem).

Die Hilfe sagt dazu:
Hat einer der Operanden einen numerischen Datentyp (i, f, p), wird der andere Operand in den beteiligten numerischen Datentyp mit dem größten Wertebereich konvertiert, wobei der Wertebereich von Datentyp f größer als der von p und dieser größer als der von i ist.
Die Konvertierung von c in i erfolgt gemäß:
Das Quellfeld muss eine Zahl in mathematischer oder kaufmännischer Notation enthalten. Ausnahme: Ein Quellfeld, das nur Leerzeichen enthält, wird als die Zahl Null interpretiert. Die wissenschaftliche Notation ist nicht zulässig, es sei denn, sie ist als mathematische Notation interpretierbar. Nachkommastellen werden kaufmännisch auf ganzzahlige Werte gerundet. Wenn die Zahl im Wertebereich des Datentyps i, b oder s liegt, wird sie in die interne Darstellung einer Integerzahl konvertiert, ansonsten kommt es zu einer behandelbaren Ausnahme. Vor Release 6.10 gab es auch dann eine Ausnahme, wenn das Quellfeld als Textfeldliteral '-2147483648' angegeben wurde.
Egal wie, ob nun c in i oder c in p, die interne Typkonvertierung rundet kaufmännisch, somit ist das beobachtete Verhalten absolut nachvollziehbar.

Folgende Benutzer bedankten sich beim Autor casman für den Beitrag:
Frank Zet.


Seite 1 von 1

Vergleichbare Themen

2
Antw.
4215
Views
Betrag mit Minus-Vorzeichen in gleichen Betrag aber ohne Min
von Nicolas_ » 30.11.2006 17:11 • Verfasst in ABAP® Core
3
Antw.
6992
Views
Auswertung Lohnart mit Betrag
von datatom » 02.12.2008 10:42 • Verfasst in Human Resources
0
Antw.
1094
Views
Lohnarten mit festen Betrag zuordnen
von Adik91 » 30.03.2022 11:19 • Verfasst in Human Resources
4
Antw.
850
Views
Betrag soll im Format 0.000,00 erscheinen
von Rude1986 » 13.03.2021 13:07 • Verfasst in ABAP® für Anfänger
1
Antw.
1770
Views
KB23N Fertigungsaufträge mit Betrag 0 bewertet
von RSchumacher » 19.03.2008 16:09 • Verfasst in Financials

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Regex in where
vor 4 Stunden von tar 8 / 183
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

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.

Aktuelle Forenbeiträge

Regex in where
vor 4 Stunden von tar 8 / 183
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822