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