If Abfrage mit Vergleich der Datentypen

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

If Abfrage mit Vergleich der Datentypen

Beitrag von Paul (ForumUser / 31 / 1 / 1 ) »
Ich würde gerne eine If Abfrage machen, ob ein bestimmtes Element (Eingabe) eine Zahl ist oder nicht.

IF variable eq .

ENDIF.

Wie mache ich es am besten?

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


Re: If Abfrage mit Vergleich der Datentypen

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

IF var CO ‚0123456789‘.

* nur num. Zeichen

ENDIF.

Re: If Abfrage mit Vergleich der Datentypen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Oder einer von diversen SAP-Funktionsbausteinen, beispielsweise ISM_SD_IS_NUMERIC. Wobei, wenn Du in den Baustein reinschaust, dann siehst Du schon, wie trivial solch Prüfung zu programmieren ist.

Re: If Abfrage mit Vergleich der Datentypen

Beitrag von black_adept (Top Expert / 3944 / 105 / 886 ) »
Zuweisung zu einer Float-Variablen in einen TRY-Catch Block verpacken. Wenn keine Exception geworfen wird ist's nummerisch
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: If Abfrage mit Vergleich der Datentypen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Das macht der ISM_SD_IS_NUMERIC. :-P

Re: If Abfrage mit Vergleich der Datentypen

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
das macht FuBa NUMERIC_CHECK

Code: Alles auswählen.

      CALL FUNCTION 'NUMERIC_CHECK'
           EXPORTING
                string_in = lV_meine_Nummer
           IMPORTING
                htype     = l_htype.

      IF l_htype EQ 'NUMC'.
	  write: 'Das ist eine Nummer'
	    else. 
	  Write: 'Das ist keine Nummer'
	  Endif.


Re: If Abfrage mit Vergleich der Datentypen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Der ist zu dem Zweck noch mit die schlechteste Lösung, da er weder dokumentiert ist, noch man auf einen Blick sieht, was er macht und wie seine Parameter zu interpretieren sind.

Re: If Abfrage mit Vergleich der Datentypen

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
Hi,
bei Zahlen nicht die Benutzer Einstellungen vergessen,

Dezimal Komma = '.' oder ',', Tausender Trenner ja/nein, '.'/','/' '

da gibt es viele Fallstricke !

/Edwin

Re: If Abfrage mit Vergleich der Datentypen

Beitrag von a-dead-trousers (Top Expert / 4281 / 214 / 1140 ) »
DeathAndPain hat geschrieben:Das macht der ISM_SD_IS_NUMERIC. :-P
DeathAndPain hat geschrieben:Der ist zu dem Zweck noch mit die schlechteste Lösung, da er weder dokumentiert ist, noch man auf einen Blick sieht, was er macht und wie seine Parameter zu interpretieren sind.
Der von dir erwähnte ISM_SD_IS_NUMERIC ist nicht Teil von SAP_BASIS und ergo wie z.B. auf meinem System nicht überall vorhanden.
Also wurde nach einer "anderen" Möglichkeit gesucht.
Dass der NUMERIC_CHECK auch nicht das gelbe vom Ei ist, stell ich nicht in Abrede, aber allemal besser als gar nichts. Wie edwin schon erwähnt hat, unterstützt der Baustein nämlich auch nur Zeichenketten mit '1234567890 ' und keine Kommas oder Tausendertrennzeichen. Wir brauchen also unter Umständen noch weitere Lösungsvorschläge. :wink:
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: If Abfrage mit Vergleich der Datentypen

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
Hi,
Vorschlag : regex - hab da mal was zusammengebastelt Dezimalzahl mit Nachkommastellen (0-4) und Vorzeichen (bin aber kein Regex Spezi ) vielleicht kann das jemand mal eleganter/besser machen.

Allerdings schaffe ich es nur mit 2 - abhängig von Benutzereinstellungen

bei Dezimalpunkt, dann gilt: Tausender Trenner = ' ' oder ','
regexp_point = `^[-+]?(?:\d{1,3}(?:([' ,])\d{3})?(?:\1\d{3})*|(?:\d+))([.]\d{0,4})?[-+]?$`.

Dezimalkomma, dann gilt: Tausender Trenner ' ' oder '.'
regexp_comma = `^[-+]?(?:\d{1,3}(?:([' .])\d{3})?(?:\1\d{3})*|(?:\d+))([,]\d{0,4})?[-+]?$`.

/Edwin

Re: If Abfrage mit Vergleich der Datentypen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Dein Regex ist eine gute Idee.
Er funktioniert allerdings nicht bei 11111.111,11
Das ist aber durchaus eine gültige Eingabe.
Solange irgendein Tausenderpunkt irgendwo an der richtigen Stelle steht, wandelt SAP das korrekt um.

Eine Alternative wäre noch der Fuba DDUT_INPUT_CHECK.
Hier muss man zwar ein Tabellenfeld als Referenz angeben (VBAP-ZMENG z.B.) aber dafür prüft er recht zuverlässig.
Allerdings anscheinend auch nur die aktuell am Benutzer eingestellte Aufbereitungsart (Komma + Tausendertrennzeichen).

Diese Methode ist noch ganz vielversprechend: CL_RSAN_UT_CONVERSION_EXIT=>TRY_CONV_INT_EXT_INT
Sie akzeptiert sogar 11.11.11.11,11 :)

Re: If Abfrage mit Vergleich der Datentypen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
adt hat geschrieben:Dass der NUMERIC_CHECK auch nicht das gelbe vom Ei ist, stell ich nicht in Abrede, aber allemal besser als gar nichts.
Dann musst Du aber minimal noch Verwendungshinweise bieten, wenn Du die Nutzung von solch Baustein vorschlägst, denn wie gesagt, selbsterklärend ist er nicht.

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2107
Views
Oracle Datentypen in ABAP Datentypen umwandeln
von Steffi221185 » 07.08.2006 09:08 • Verfasst in ABAP® Core
2
Antw.
2431
Views
Frage zu Datentypen
von Mark33 » 13.06.2012 20:32 • Verfasst in ABAP® für Anfänger
1
Antw.
2024
Views
Datentypen im UserExit MV45AFZD
von wodist » 09.12.2005 10:58 • Verfasst in Sales and Distribution
2
Antw.
1906
Views
Deklaration von Datentypen bei Attributen
von Steffi221185 » 28.08.2006 09:39 • Verfasst in ABAP Objects®
13
Antw.
8052
Views
ALV-Grid: Datentypen der Spalten
von OliTe » 29.09.2005 16:15 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 168