Dezimalzahlen nicht zulassen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Dezimalzahlen nicht zulassen

Beitrag von dyv (ForumUser / 53 / 18 / 0 ) »
Hallo zusammen,

ich habe eine Variable mit dem Typ p.

Ich möchte in meinem Programm folgendes einbauen:
- Wenn eine Dezimalzahl eingegeben wurde, dann die Verarbeitung abrechen und eine Meldung anzeigen.

Die Lösung stelle ich mir so vor:

IF var = [Dezimalzahl]
WRITE: text-t01

Die Frage: wie kann ich die Bedingung [Dezimalzahl] am besten abbilden?

Danke im Voraus

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


Re: Dezimalzahlen nicht zulassen

Beitrag von wreichelt (Top Expert / 1031 / 29 / 188 ) »
Hallo,

frac Wert der Nachkommastellen des Arguments arg

SAP NetWeaver AS ABAP Release 702, ©Copyright 2010 SAP AG. Alle Rechte vorbehalten.

ABAP-Schlüsselwortdokumentation → ABAP - Referenz → Interne Daten verarbeiten → Numerische Berechnungen → Numerische Funktionen →
abs, sign, ceil, floor, trunc, frac - numerische Funktionen

Folgende Tabelle zeigt die allgemeinen numerischen Funktionen für genau ein unbenanntes Argument mit beliebigem numerischen Datentyp. Diese Funktionen sind dahingehend überladen, dass der Rückgabewert verschiedene numerische Typen haben kann.

Syntax

... func( arg ) ...

Wirkung

Das Argument einer allgemeinen numerischen Funktion muss außerhalb eines arithmetischen Ausdrucks ein einzelnes Datenobjekt und kann innerhalb eines arithmetischen Ausdrucks selbst ein arithmetischer Ausdruck sein.

Wirkung der allgemeinen numerischen Funktionen.

Funktion func Rückgabewert
abs Absolutwert des Arguments arg
sign Vorzeichen des Arguments arg: -1, falls der Wert von arg negativ ist; 0, falls der Wert von arg 0 ist; 1, falls der Wert von arg positiv ist
ceil kleinste ganzzahlige Zahl, die nicht kleiner als der Wert des Arguments arg ist
floor größte ganzzahlige Zahl, die nicht größer als der Wert des Arguments arg ist
trunc Wert des ganzzahligen Teils des Arguments arg
frac Wert der Nachkommastellen des Arguments arg

Für den Datentyp des Rückgabewerts gilt:

Außerhalb eines arithmetischen Ausdrucks bestimmt der Datentyp des Arguments den Datentyp des Rückgabewerts.
Innerhalb eines arithmetischen Ausdrucks trägt das Argument der Funktion zum Rechentyp des gesamten Ausdrucks bei und die Funktion wird mit dem Rechentyp berechnet. Wenn das Argument selbst ein arithmetischer Ausdruck ist, tragen dessen Operanden zum gesamten Rechentyp bei und das Argument wird ebenfalls mit diesem Typ berechnet.
Falls das Argument einer numerischen Funktion außerhalb eines arithmetischen Ausdrucks keinen numerischen Datentyp i, p, decfloat16, decfloat34 oder f hat, bestimmt sein Datentyp wie folgt den Typ des Rückgabewerts:

d und t ergeben i
c, n und string ergeben p
x und xstring ergeben i
Vor der Berechnung der Funktion wird das Argument in den entsprechenden Typ konvertiert.

Beispiel

Für eine Demonstration der numerischen Funktionen siehe Numerische Funktionen.




Gruß
Wolfgang

Re: Dezimalzahlen nicht zulassen

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
Und falls "frac" noch nicht existiert (7.02) kann man immer noch die P Variable in einen Interger kopieren. Wenn dann der Vergleich P mit I ungleich ist, war die ursprünglich Zahl eine Dezimalzahl.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Dezimalzahlen nicht zulassen

Beitrag von dyv (ForumUser / 53 / 18 / 0 ) »
Danke für die Antworten,

und wie kann ich die Eingabe des Wertes so einschränken, dass beim Eingeben von einer nicht vollen Zahl, mit den Ziffern nach der Komma, ein Programmabbruch passiert?

Danke

Re: Dezimalzahlen nicht zulassen

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
Wenn du das Programm selbst geschrieben hast, warum machst du das Feld im Dynpro nicht einfach vom Typ INT.
Dann kann der Benutzer gar keinen anderen Wert eingeben.

Ansonsten kannst du nur einbauen, dass bei der Feldprüfung im Dynpro

Code: Alles auswählen.

CHAIN
  FIELD ...
  MODULE ...
ENDCHAIN.
im Modul, wenn festgestellt wird, dass Nachkommastellen existieren (siehe oben) ein Abbruch passiert (MESSAGE ... TYPE 'E')

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Dezimalzahlen nicht zulassen

Beitrag von dyv (ForumUser / 53 / 18 / 0 ) »
Danke zusammen,

aber noch ne Frage: wie kann ich in ABAP die Anzahl von Nachkommastellen eines Paramenters zB auf 3 abgrenzen?

Ohne einen neuen Typen anlegen zu müssen.

Ich glaube mit der Funktion (frac) wäre es möglich, es klappt bei mir aber nicht.

VG

Denis

Re: Dezimalzahlen nicht zulassen

Beitrag von wreichelt (Top Expert / 1031 / 29 / 188 ) »
Hallo,

Parameters zahl Type p decimals 3.

Gruß
Wolfgang

Re: Dezimalzahlen nicht zulassen

Beitrag von dyv (ForumUser / 53 / 18 / 0 ) »
Danke, aber gibt es auch die Möglichkeit diese zB mit der Anweisung IF durchzuführen?

VG

Denis

Re: Dezimalzahlen nicht zulassen

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
dyv hat geschrieben:... gibt es auch die Möglichkeit diese zB mit der Anweisung IF durchzuführen
Nein, weil das eine statische Einstellung auf dem Dynpro ist, für die es keine Entsprechung bei der Laufzeit-Modifikation (z.B. per LOOP AT SCREEN) gibt.

Einzige Möglichkeit wäre, das Dynpro, bevor es angezeigt wird, zu modifizieren. Da man hier aber mehr kaputtmachen kann als einem lieb ist und man dazu eigentlich auch den genauen Aufbau der (undokumentierten) Parameter kennen muss, ist das nichts für "Anfänger".
Wenn du doch mal reinschauen willst: IMPORT DYNPRO, SYNTAX-CHECK FOR DYNPRO, EXPORT DYNPRO und GENERATE DYNPRO.
Alles auf eigene Gefahr und du solltest dich auch ein wenig mit den Internas des Screen-Painters auseinandersetzen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Dezimalzahlen nicht zulassen

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
Okay... Eines ist mir noch eingefallen:
Du könntest mit ZWEI Eingabefeldern arbeiten. Eines normal und eines mit den drei Dezimalstellen. Je nachdem welches gebraucht wird kannst du das andere dann mit LOOP AT SCREEN ausblenden.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
dyv

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

7
Antw.
2207
Views
Tabellenzugriff zulassen bzw. nicht zulassen
von kbit100 » 23.11.2015 16:45 • Verfasst in ABAP® für Anfänger
1
Antw.
183
Views
Dezimalzahlen
von User1234 » 09.08.2021 11:06 • Verfasst in ABAP® für Anfänger
1
Antw.
1569
Views
Nur Nummerische Eingaben zulassen
von pohlmann-schwarza » 20.05.2008 09:56 • Verfasst in ABAP® für Anfänger
9
Antw.
7536
Views
Ausgabe von Dezimalzahlen bei ALV-Gird mit , anstatt .
von Squall » 15.01.2007 15:04 • Verfasst in Dialogprogrammierung
16
Antw.
5668
Views
Währungsdarstellung ohne Dezimalzahlen auf Dynpro
von PeterPaletti » 25.03.2020 15:07 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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.