Zeichenprüfung

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

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

Zeichenprüfung

Beitrag von Abapsocke (ForumUser / 49 / 6 / 0 ) »
Hallo,

ich möchte eine Zeichenfolge überprüfen.
Also Beispielsweise 'A0123'

Code: Alles auswählen.

If usereingabe EQUALS 'A0123'
-> dann ist alles super

Allerdings soll das Programm nur schauen ob an der ersten Stelle ein A ist und danach vier Ziffern folgen Welche Ziffern das sind ist egal. Wenn dem so ist -> super.

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


Re: Zeichenprüfung

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »

Code: Alles auswählen.

IF usereingabe+0(1) EQ 'A' AND usereingabe+1(4) CO '0123456789'.

Folgende Benutzer bedankten sich beim Autor Legxis für den Beitrag:
Abapsocke

( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Zeichenprüfung

Beitrag von Abapsocke (ForumUser / 49 / 6 / 0 ) »
Danke top

Re: Zeichenprüfung

Beitrag von lausek (ForumUser / 64 / 2 / 20 ) »
@Legxis Antwort ist schon sehr gut. Die solltest du nehmen.

Ich wollte hier trotzdem nochmal kurz Regex aufbringen, da das ein sehr nützliches Tool ist - gerade wenn die Bedingungen für einen String komplexer werden:

Code: Alles auswählen.

FIND REGEX '^A\d{4}$' IN usereingabe.
IF sy-subrc = 0.
    " ... passt 
ENDIF.
Der Ausdruck baut sich so auf:
^ - Anfang des Strings, das nächste Zeichen ist der erste Buchstabe
A - entspricht genau dem Buchstaben
\d - ist ein alias für Nummern also 0123456789
{4} - genau vier Zeichen
$ - Ende des String, das vorige Zeichen ist der letzte Buchstabe (also die vier Zahlen)

Re: Zeichenprüfung

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Man sollte es aber in einem Kommentar erklären, weil viele mit Regex nichts anfangen können - sowas wie

Code: Alles auswählen.

" check for 'Annnn' - n = numeric digit
Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeichenprüfung

Beitrag von Abapsocke (ForumUser / 49 / 6 / 0 ) »
Danke für den Tipp.
Die Möglichkeiten von Regex kann ich gerade sehr gut gebrauchen.

Re: Zeichenprüfung

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
@lausek
deine Antwort stimmt zwar für Strings, aber Abapsocke sprach von Zeichenfolgen, so dass auch C-Felder erlaubt sein könnten. Und für Regex zählen bei diesen die abschließenden Leerzeichen mit, so dass man vor dem $ noch ein /s* hinzufügen muss.
Der korrekte Regex wäre somit ^A\d{4}\s*$

@Ralf: Das mit dem Kommentar ist immer eine gute Idee, aber nicht weil es Nichtwissende gibt. Sonst müsste man ja auch einen funktionalen Methodnaufruf oder eine Inlinedeklaration kommentieren, bloß weil es immer noch Dinos gibt....
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zeichenprüfung

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Nein. Regex sind schon sehr speziell und ganz besonders unlesbar für jemanden, der es nicht kennt. Bei einem Methodenaufruf kann der Entwickler einwirken durch Namensvergabe. Eine Regex kann ich nur per Kommentar erklären, zumal sie praktisch unendlich komplex sein kann.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeichenprüfung

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
ralf.wenzel hat geschrieben:Nein. Regex sind schon sehr speziell und ganz besonders unlesbar für jemanden, der es nicht kennt. Bei einem Methodenaufruf kann der Entwickler einwirken durch Namensvergabe. Eine Regex kann ich nur per Kommentar erklären, zumal sie praktisch unendlich komplex sein kann.
Du hast nicht den Tenor meiner Bemerkung erkannt. Genau so wie es Leute gibt, die keine funktionalen Methodenaufrufe verstehen ( weil sie als Dinos eben nur FORMs und FuBa kennen ), gibt es auch Leute, die sich nicht die Mühe machen reguläre Ausdrücke - zumindest rudimentär - zu verstehen. Beides ist zur Beherrschung der (ABAP)Sprache nötig. Und wenn wir die Lernunwilligen verhätscheln hilft das niemandem - egal ob es sich um OO-Verweigerer oder Regex-Ignorierende handelt.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zeichenprüfung

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Ich habe (meiner Erinnerung nach) in 20 Jahren noch keine Regex gebraucht, obwohl ich sie immer mal sinnvoll einsetzen wollte. Ich habe auch noch nie im SAP-Coding (oder überhaupt in ABAP außerhalb von Büchern) eine Anwendung von Regex gesehen.

Es ist deutlich schwerer, 20 Jahre ABAP zu verwenden, ohne (in irgendeinem Coding) auf einen funktionalen Methodenaufruf zu stoßen.

Regex ist eine Nischenanwendung, die zudem ihren eigenen Regeln folgt. Und es würde den Lesefluss auch für mich als Entwickler mit 20 Jahren Erfahrung massiv stören, wenn da eine unkommentierte Regex erscheint. Weil ich zum Entschlüsseln in mein Regex-Buch gucken müsste. Darum halte ich einen kurzen Kommentar (der menschlich einfach lesbar ist, wie mein Beispiel).


Ralf

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
DeathAndPain

Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeichenprüfung

Beitrag von fr-g (ForumUser / 76 / 12 / 25 ) »
Nachtrag zur Lösung:
Ich würde in dem konkreten Fall eine Regex-Lösung mit FIND präferieren. Beim anderen Vorschlag müsste man sicherheitshalber noch STRLEN überprüfen, damit man mit dem Offset nicht im Leeren landet ;) ...gerade eine Usereingabe könnte ja evtl. leer sein o.ä.

Re: Zeichenprüfung

Beitrag von deejey (Specialist / 418 / 128 / 45 ) »
regex ist mit den anderen Sprachelementen nicht zu vergleichen, nichts ist auch nur annähernd so kryptisch wie regex, insofern hat man wenig Motivation Sachen "in regex" zu übersetzen wenn man es auch auf herkömmlichen Wege lösen kann, auch wenn es im Vergleich zu dem modernen regex, das es seit den 60ern gibt, altmodisch ist :P

Re: Zeichenprüfung

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ich weiß nicht, wie der heutige Stand ist, aber ich hatte mal angefangen, mich in ABAP mit regex zu beschäftigen und bin dabei auf Probleme gestoßen, die darin bestanden, dass ABAP nur ein Subset von regex unterstützt. Von daher habe ich regex-Syntaxen ausprobiert, die dann aufgrund dieser Einschränkungen in ABAP nicht funktioniert haben, konnte zugleich aber nirgendwo eine vollständige Doku finden, die beschreibt, welche regex-Elemente ABAP kann und welche nicht. Damit habe ich das irgendwann als halbgaren Mist und Zeitverschwendung abgetan. Und wie Ralf richtig ausgeführt hat, habe ich es auch nie wirklich gebraucht.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Daniel


Re: Zeichenprüfung

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Vollständig dokumentiert ist das in der ABAP-Hilfe, meine ich mich zu erinnern. Ich bin auch kein Freund davon, es zu verwenden, wenn man es nicht braucht, ABER wenn man mal ein bisschen nachgelesen hat, was für abgefahrene Sachen man damit machen kann, wird man sicher Fälle finden, wo man Regex sehr sinnvoll einsetzen kann. Wenn man häufiger Suchen/Ersetzen auf Zeichenebene macht. Ist halt eher nicht mein Arbeitsgebiet.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeichenprüfung

Beitrag von deejey (Specialist / 418 / 128 / 45 ) »
regexp_replace auf aggregierten Werten in native SQL hat mir mal den Arsch gerettet, war viel schneller und am Ende eleganter als andere Lösungen, aber ganzen Tag damit abgeplagt bis es endlich funktionierte und dutzende Dumps produziert. Es ist vermutlich wie mit den alten linux-Editoren: wer es richtig beherrscht kann damit zaubern, für alle anderen ist es Schinderei :D

Folgende Benutzer bedankten sich beim Autor deejey für den Beitrag:
ralf.wenzel


Seite 1 von 1

Ü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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140