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.
4637
Views
Betrag mit Minus-Vorzeichen in gleichen Betrag aber ohne Min
von Nicolas_ » 30.11.2006 17:11 • Verfasst in ABAP® Core
3
Antw.
7697
Views
Auswertung Lohnart mit Betrag
von datatom » 02.12.2008 10:42 • Verfasst in Human Resources
4
Antw.
1703
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.
1922
Views
KB23N Fertigungsaufträge mit Betrag 0 bewertet
von RSchumacher » 19.03.2008 16:09 • Verfasst in Financials
0
Antw.
3703
Views
Lohnarten mit festen Betrag zuordnen
von Adik91 » 30.03.2022 11:19 • Verfasst in Human Resources

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Banf anlegen
vor 3 Tagen von wreichelt 2 / 3351
Banf anlegen
vor 3 Tagen von Manfred K. 1 / 3169
IBAN und BUT0BK
vor 6 Tagen von waltersen gelöst 10 / 17609
GUIXT Tabellen in Container ansprechen
vor einer Woche von Denaris 1 / 8332
SAPGui 8.00 32 Bit vs 64 Bit
vor einer Woche von DeathAndPain 3 / 10100

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

Banf anlegen
vor 3 Tagen von wreichelt 2 / 3351
Banf anlegen
vor 3 Tagen von Manfred K. 1 / 3169
IBAN und BUT0BK
vor 6 Tagen von waltersen gelöst 10 / 17609
GUIXT Tabellen in Container ansprechen
vor einer Woche von Denaris 1 / 8332
SAPGui 8.00 32 Bit vs 64 Bit
vor einer Woche von DeathAndPain 3 / 10100