String zerlegen (oder RegEx in ABAP?)

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

String zerlegen (oder RegEx in ABAP?)

Beitrag von Margolwes (ForumUser / 83 / 2 / 0 ) »
Hallo,

ich habe folgendes Problem: Gegeben ist der String

"Dies ist die Kalenderwoche $$ im Jahr $$$$".

Dazu habe ich einen wert = 412005. Die beiden ersten $$ müssen also durch wert(2), die letzten $$$$ durch wert+2(4) ersetzt werden.

Meine Frage dazu: Wie kriege ich heraus, welche "Gruppen" von $-Zeichen in einem String stecken, um dann die $ durch die entsprechenden Zeichen des Feldwertes zu ersetzen? Das ganze ist nämlich nicht einheitlich: Der nächste String könnte "text $ text $$$$ text $$" aufgebaut sein, der übernächste wieder anders.

Oder um die Frage abzukürzen: Reguläre Ausdrücke sind in ABAP wohl nicht möglich, oder?

Viele Grüße, F.T.

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


Re: String zerlegen (oder RegEx in ABAP?)

Beitrag von Gast ( / / 0 / 3 ) »
Ich weiss nicht ob ich dein Problem korrekt verstanden habe, aber für mich sieht es so aus als wenn du ein Platzhalterzeichen '$' der Reihe nach durch Zeichen einer zweiten Zeichenkette ersetzen möchtest.
Vielleicht hilft dir ja folgender Code weiter?

REPORT z_test .

PARAMETERS: str1(40) TYPE c, "z.B. Woche $$ Jahr $$$$
wert TYPE i. "z.B. 042005
DATA: wertstr(20) TYPE c,
x TYPE i,
l TYPE i.
wertstr = wert. " Umwandlung Wert -> Zeichen
CONDENSE wertstr NO-GAPS. " Endfernen von Leerzeichen
l = strlen( wertstr ). " Ermittlung Zeichenanzahl des Wertes
x = 0.

*Folgende Schleife ersetzt den Platzhalter der Reihe nach durch die
*Zeichen aus der Wertvariable

DO l TIMES.
REPLACE '$' WITH wertstr+x(1) INTO str1.
x = x + 1.
ENDDO.
WRITE: /2 'STR1 = ', str1.


Ich hoffe ich konnte dir helfen,
mfg S.K.

Re: String zerlegen (oder RegEx in ABAP?)

Beitrag von Gast ( / / 0 / 3 ) »
Sorry das Beispiel mit der führenden Null in einer Integervariable (wert = 042005) funktioniert natürlich nicht, hierfür müsste dann ein geeigneter Datentyp verwendet werden.

Dein Beispiel Wert = 412005 funktioniert.

Beitrag von PsychoMantis (ForumUser / 98 / 0 / 0 ) »
Ich hätte noch den Vorschlag, dass du anstatt mit $$ und $$$$ usw mit $KW$ bzw. $JAHR$ arbeitest und dann mittels des replace-Befehls die gewünschten Werte an die passende Stelle schreibst.

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

in reguläre Ausdrücke habe ich die Funktionsgruppe PAMA genannt, die aber scheinbar erst ab 4.7 existiert.
Gruß
Ereglam


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

Beitrag von Gast ( / / 0 / 3 ) »
Hallo,

habe mir jetzt erstmal wie von Gast beschrieben geholfen, werde mir aber die Fugr PAMA mal genauer ansehen. Auch wenn's mal wieder eine richtige SAP-Lösung zu sein scheint: undokumentiert und schwer nachvollziehbar... ;-)

Gruß, Margolwes

Seite 1 von 1

Vergleichbare Themen

9
Antw.
1369
Views
Im String mit Regex Zeichen ersetzen
von MarkusW » 20.08.2020 13:42 • Verfasst in ABAP® Core
2
Antw.
328
Views
STRING zu lang für ABAP?
von sap_koun » 16.06.2022 23:26 • Verfasst in ABAP® für Anfänger
10
Antw.
5133
Views
ABAP String von hinten.
von Django90 » 25.09.2017 09:50 • Verfasst in ABAP® für Anfänger
3
Antw.
1978
Views
String als ABAP-Befehl ausführen
von Trulchen » 29.07.2014 10:15 • Verfasst in ABAP® für Anfänger
2
Antw.
660
Views
ABAP String Templates funktioniert nicht wie erhofft?
von tekko » 25.05.2021 21:42 • 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

Daten an Tabelle binden
vor 19 Stunden von Bright4.5 1 / 413
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2059
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8656