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

Aktuelle Forenbeiträge

IF mit AND und OR
vor einer Woche von GastX 6 / 9374
Meine Inbox
vor einer Woche von Rabea1103 1 / 7065
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 8205
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 13713

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

IF mit AND und OR
vor einer Woche von GastX 6 / 9374
Meine Inbox
vor einer Woche von Rabea1103 1 / 7065
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 8205
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 13713