Formular, Vergleich Text => Zahl

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

Formular, Vergleich Text => Zahl

Beitrag von Tobbworld (ForumUser / 13 / 0 / 0 ) »
Hallo,

wir führen bei uns auf Arbeit gerade SAP ein und ich bin für die Formularerstellung eingeteielt.

Zwar kenne ich mich in JAVA relativ gut aus,doch habe ich keinerlei Ahnung in ABAP.

Aber nun zum Problem:
Ich habe das Formular für die Bestellung (wird verwendet bei Transcode: Me22n) bearbeitet.

Möchte nun eine Abfrage einbauen, dass wenn der Bestellwert über 50.000 Euro ist etwas anderes ausgegeben wird als bei unter 50.000 ?.

Die Var. die den ges.Bestellwert enthält lautet:
KOMK-FKWRT.

Diese möchte ich nun mit der Zahl 50000 vergleichen.

Wie kann ich das machen bzw. wie muss die IF Struktur aussehen.

Habe es schon so probiert:

IF 50000 <= KOMK-FKWRT
mache das
ELSE
mache dies
ENDIF

als das nicht funktioniert hat, habe ich versucht ein Programm in ABAP zu schreiben:

*&---------------------------------------------------------------------*
*& Form vergleich
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->IN_PAR text
* -->OUT_PAR text
*----------------------------------------------------------------------*
form vergleich TABLES IN_PAR STRUCTURE ITCSY
OUT_PAR STRUCTURE ITCSY .

data: iBetrag type n,
iVergleich TYPE n,
YES_NO type C LENGTH 3.

* Eingangstabelle lesen
read table in_par with key 'KOMK-FKWRT'.
CHECK SY-SUBRC = 0.
move IN_PAR-VALUE to IBETRAG.


read table in_par with key 'VERGLEICH'.
CHECK SY-SUBRC = 0.
move IN_PAR-VALUE to IVERGLEICH.

loop at out_par where name = 'YES_NO'.
IF IBETRAG <= IVERGLEICH.
out_par-value = 'YES'.
ELSE.
out_par-value = 'NO'.
ENDIF.
modify out_par.
endloop.

endform. "vergleich


und im Formular folgendes aufgerufen:

/: DEFINE &VERGLEICH& := '10'
/: SET COUNTRY 'GB'
/: DEFINE &YES_NO& = ''
/: PERFORM VERGLEICH IN PROGRAM ZZUSATZDATEN
/: USING &KOMK-FKWRT&
/: USING &VERGLEICH&
/: CHANGING &YES_NO&
/: ENDPERFORM


Nur klappt das Ganze nicht.
Habe die Vermutung das KOMK-FKWRT evt. gar nicht als Zahl sondern als Text/Currency interpretiert wird.

Wie könnte ich das umwandeln bzw. was müsste ich verändern?

Danke für eure Hilfe.

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


Beitrag von cosmo (Specialist / 175 / 0 / 0 ) »
Hallo Tobbworld,

Deine Vermutung ist richtig. SAPScript ist ein Textverarbeitungssystem und wandelt deshalb alle Zahlenwerte in deren externe Darstellung um (mit Tausendertrennzeichen, Dezimalkomma und Vorzeichen am Ende).

Eine Konvertierung in ein zahlenartiges Feld muss folgendes machen:
- Entfernen von Tausendertrennzeichen
- Umwandeln von Dezimalkomma in Dezimalpunkt
- Zuweisen auf ein Zahlenfeld

Das Coding hierzu:

Code: Alles auswählen.

  translate textfeld using '. '.
  condense textfeld no-gaps.
  translate textfeld using ',.'.
  move textfeld to numfeld.
Achtung: Falls Benutzer mit dem Programm arbeiten, die eine andere Zahlendarstellung eingestellt haben, als die deutsche, funktioniert das so nicht. In diesem Fall muss zunächst einmal die Einstellung des Benutzers geprüft werden und die Umwandlung dann entsprechend von Statten gehen.

Viel Erfolg!
Jörg Krause, Anwendungsentwickler und SAP-Betreuer MM/PP

Beitrag von Tobbworld (ForumUser / 13 / 0 / 0 ) »
Hallo cosmo,

danke für deinen Tipp.
Habe inzwischen noch eine andere Möglichkeit gefunden,

aus
data: iBetrag type n,
iVergleich TYPE n,

TYPE f machen.

Dann funktioniert es auch.

Durch /: SET COUNTRY 'GB' im Formular umgehe ich es auch, das Komma zu ersetzen, wird automatisch gemacht :)

Bye und ein schönes Wochenende

Tobias

Beitrag von Tobbworld (ForumUser / 13 / 0 / 0 ) »
Naja.. habe mein Prog. nocheinmal getestet... sobald die Tausendertrennzeichen kommen geht nichts mehr ;)

Habe jetzt die Variante von Cosmo probiert..

Als welchen Datentyp muss ich IBETRAG und IVERGLEICH definieren?

Habe es im Moment so:

iBetrag type n,
iVergleich TYPE n.

Mein inpar-value lautet nach erfolgter Umwandlung:
2218.75

nach "move IN_PAR-VALUE to IBETRAG." jedoch
5

Naja.. freue mich schon auf mein ABAP Buch.. denke dann habe ich auch langsam den Durchblick ;)
Danke für eure Antworten.

Bye Tobias

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

wie auch bei 'TYPE c' und 'TYPE p' ist eine Längenangabe erforderlich:

Code: Alles auswählen.

DATA:
  lv_n_old(11) TYPE n, "alte Varante
  lv_n_new     TYPE n LENGTH 11.
Gruß
Ereglam


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

Seite 1 von 1

Vergleichbare Themen

3
Antw.
4363
Views
Zahl und Text zusammenfügen
von ABAP - Programmierer » 20.07.2005 09:35 • Verfasst in ABAP® für Anfänger
6
Antw.
3199
Views
Vergleich im Formular mit Datentyp Quan
von PMK » 21.10.2005 13:39 • Verfasst in ABAP® für Anfänger
2
Antw.
1180
Views
Problem: Text anstelle von Formular
von Suti » 29.07.2008 15:35 • Verfasst in ABAP® Core
4
Antw.
3653
Views
SAP Script Formular & Text Include
von jensschladitz » 18.05.2016 10:51 • Verfasst in ABAP® Core
3
Antw.
3089
Views
Smartforms Formular nach SAPscript Formular aufrufen
von walda33 » 26.01.2014 10:14 • Verfasst in ABAP® für Anfänger

Ü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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 11 Stunden von Bright4.5 1 / 236
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1875
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8476