Problem mit Verwendung von "Regulären Ausdrücken"

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

Problem mit Verwendung von "Regulären Ausdrücken"

Beitrag von cordell (ForumUser / 3 / 0 / 0 ) »
Hallo,

bin noch ABAP-Anfänger und versuche grade mich mit regulären Ausdrücken.
Ich habe eine Web-Dynpro Anwendung, wobei man Zeiten erfassen kann. Es wird eine Struktur mit zulässigen Werten gefüllt 6:00 bist 24:00, alles in Viertelstunden-Schritten.

Momentan kann der User die Zeiten so eingeben:

08:00 (enter)

und es wird folgendermaßen zusammen gesetzt:

CONCATENATE lv_zetvon(2) lv_zetvon+3(2) '00' INTO lv_zetvon2.

Ich möchte jedoch, dass der User in der Lage ist, die Uhrzeit auch so
eingeben zu können --> 8:00 , 800, 0800 und 08:00

Ich habe einen RegEx geschrieben, nur wie verwende ich es nun richtig, dass er diese Eingabe erlaubt.

Mein Ansatz:

FIND REGEX '(0?[6-24]: ?([0-45]{2})+)' IN lv_zetvon ...
...weiß jedoch nicht richtig weiter!

Ich hoffe hier kann mir jemand helfen! Danke im Voraus.
Hab keine Lust dass so zu machen:

IF lv_zetvon_formated NA ':' AND STRLEN( lv_zetvon_formated ) = 3.
CONCATENATE '0' lv_zetvon_formated(3) '00' INTO lv_zetvon.
ELSEIF lv_zetvon_formated NA ':' AND STRLEN( lv_zetvon_formated ) = max_length.
CONCATENATE lv_zetvon_formated '00' INTO lv_zetvon.
ELSEIF lv_zetvon_formated(1) NE '0' AND lv_zetvon_formated(2) NP '[10-24]' AND STRLEN( lv_zetvon_formated ) = max_length.
CONCATENATE '0' lv_zetvon_formated+2(2) '00' INTO lv_zetvon.
ELSE.
CONCATENATE lv_zetvon_formated(2) lv_zetvon_formated+3(2) '00' INTO lv_zetvon.
CONCATENATE lv_zetbis_formated(2) lv_zetbis_formated+3(2) '00' INTO lv_zetbis.
ENDIF.

Grüße,
Cordell

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


Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Hallo cordell,

ohne Prüfung auf Korrektheit der Uhrzeit könnte folgendes Coding vielleicht helfen - ohne RegEx zu bemühen:

DATA: uhrzeit_c type string value '800'.
data: uhrzeit_n(4) type n.

TRANSLATE uhrzeit_c using ': '.
condense uhrzeit_c no-gaps.
unpack uhrzeit_c to uhrzeit_n.
concatenate uhrzeit_n(2) ':' uhrzeit_n+2 into uhrzeit_c.

mfg dele

Beitrag von cordell (ForumUser / 3 / 0 / 0 ) »
Hi,

schon mal vielen Dank für die Antwort, werde es morgen früh gleich mal testen, jedoch fange ich doch damit nicht alle benötigten Formate ab oder?

Schöne Grüße,
Cordell

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Hallo Cordell,

die Formate, die Du angegeben hast, sollten eigentlich funktionieren.

mfg Dele

Beitrag von black_adept (Top Expert / 4135 / 131 / 956 ) »
Hallo Cordell,

du beschreibst ja 2 Aufgaben in deinem Posting.

1.) Umwandlung eines Eingabestrings in eine Uhrzeit
2.) Prüfung des Eingabestrings auf korrektes Format.

Zu 1. Hat ja DELE schon eine Lösung gegeben. Hier eine 2. Version die eigentlich auch funktionieren sollte bei den bisher bekannten Formaten und wenn die Formatprüfung vorher erfolgreich war.

Code: Alles auswählen.

PROGRAM.

DATA: n(4)     TYPE n,
      time     TYPE syuzeit.

PARAMETERS: p TYPE text10.

n = p.
time(4) = n.
WRITE:/ p, n, time.
Zu 2. Ich würde folgenden regulären Ausdruck verwenden um zu prüfen ob die Zeit passt

^\s*([0-9]|[0-2][0-9]):{0,1}[0-5][0-9]\s*$
oder
^\s*(\d|[0-2]\d):{0,1}[0-5]\d\s*$


Zum Testen der regulären Ausdrücke im SAP eignet sich übrigens das nette Programm: DEMO_REGEX_TOY
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von cordell (ForumUser / 3 / 0 / 0 ) »
Hi,

danke für eure Antworten, hab es jedoch ohne RegEx gelöst, habe Variablen vom Typ "tims"! Läuft wunderbar.

Meine eigentliche Intention dieses Threads war, dass z.B. ein Beispiel für die Verwendung von regulären Ausdrücken in ABAP bekomme.

z.B. eine Eingabe auf ein Muster zu überprüfen. Dies geht ja bspw. folgender Maßen

Code: Alles auswählen.

FIND REGEX pattern IN eingabe_var
...
wenn dies Erfolgreich war, könnte ich ja dann gewünschte Zeichen mit anderen ersetzen usw.

Also, könnte mir jemand einen Beispiel-Code auf solch ein Szenario posten, in dem eine Eingabe geprüft wird, z.B. die Eingabe 0800, die dann in 08:00 überführt wird. Den RegEx brauch ich nicht, nur ein Beispiel-Anwendungsschema!

Nochmals danke im Voraus.

Grüße,
Cordell

Seite 1 von 1

Vergleichbare Themen

2
Antw.
3082
Views
Zeichen in String löschen mit regulären Ausdrücken
von Erdbaehr » 29.02.2008 13:34 • Verfasst in ABAP® Core
0
Antw.
893
Views
IMG Customizingbank ausdrucken
von Gast » 22.02.2006 11:29 • Verfasst in ABAP® für Anfänger
6
Antw.
3293
Views
Formular automatisch ausdrucken
von ABAPlerv » 12.06.2024 11:36 • Verfasst in ABAP® für Anfänger
0
Antw.
1087
Views
Dokumente aus Position mit ausdrucken?
von PaddyG » 07.11.2005 14:24 • Verfasst in Sales and Distribution
1
Antw.
1975
Views
Grafik auf Labeldrucker ausdrucken?
von astera » 13.11.2007 13:41 • Verfasst in SAP - Allgemeines

Über diesen Beitrag


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

Aktuelle Forenbeiträge

FS-CD schnellstmöglich lernen
vor 16 Stunden von wreichelt 2 / 866
Banf anlegen
vor 6 Tagen von wreichelt 2 / 8188
Banf anlegen
vor einer Woche von Manfred K. 1 / 7837
IBAN und BUT0BK
vor einer Woche von waltersen gelöst 10 / 23404
GUIXT Tabellen in Container ansprechen
vor einer Woche von Denaris 1 / 13071

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

FS-CD schnellstmöglich lernen
vor 16 Stunden von wreichelt 2 / 866
Banf anlegen
vor 6 Tagen von wreichelt 2 / 8188
Banf anlegen
vor einer Woche von Manfred K. 1 / 7837
IBAN und BUT0BK
vor einer Woche von waltersen gelöst 10 / 23404
GUIXT Tabellen in Container ansprechen
vor einer Woche von Denaris 1 / 13071