gelöst Zeichen in einem Textfeld ersetzen


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst Zeichen in einem Textfeld ersetzen

Beitragvon kbit100 » 07.06.2018, 13:30

Hallo zusammen,

ich habe folgendes Problem:
Ich erhalte aus einer Datei diverse Textfelder (char20), in denen ich die Leerzeichen durch Unterstriche ersetzen muss.
Also bspw. '12345 678' nach '12345_678'.
Diese Leerzeichen können auch mehrfach im Textfeld vorkommen, also bspw. '123_456_789'.
Leerzeichen am Ende des Strings sollen nicht ersetzt werden, also nicht '123_456_789______'.

Wenn ich die Anweisung
Code: Alles auswählen
REPLACE ALL OCCURRENCES OF space
IN gv_feld WITH '_'
IN CHARACTER MODE.
 


verwende, bekomme ich einen Kurzdump.

Hat jemand eine Idee? Mag sein, dass ich mal wieder den Wald vor lauter Bäumen nicht sehe. Vielen Dank für eure Tipps.

Gruß
kbit100
Specialist
 
Beiträge: 122
Registriert: 11.12.2006, 14:55
Dank erhalten: 0 mal

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Zeichen in einem Textfeld ersetzen

Beitragvon a-dead-trousers » 07.06.2018, 13:42

Viele ABAP-Befehle "optimieren" Leerzeichen in Zeichenfeldern mit fixer Länge. Deswegen gibt es z.B. beim CONCATENATE den Zusatz RESPECTING BLANKS. SPACE ist intern ein CHAR1 und das Leerzeichen wird somit wegrationalisiert.
Code: Alles auswählen
REPLACE ALL OCCURRENCES OF ` ` "<-- Bei String-Literalen bleiben Leerzeichen erhalten
IN gv_feld WITH '_'
IN CHARACTER MODE.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
kbit100
a-dead-trousers
Top Expert
 
Beiträge: 2901
Registriert: 07.02.2011, 13:40
Dank erhalten: 704 mal
Ich bin: Entwickler/in

Re: Zeichen in einem Textfeld ersetzen

Beitragvon kbit100 » 07.06.2018, 14:14

Das erzeugt leider auch einen Kurzdump.
:-(
kbit100
Specialist
 
Beiträge: 122
Registriert: 11.12.2006, 14:55
Dank erhalten: 0 mal

Re: Zeichen in einem Textfeld ersetzen

Beitragvon DeathAndPain » 07.06.2018, 14:34

Wäre mal interessant gewesen, was das für ei nKurzdump ist. Leider verrätst Du es uns nicht. Irgendeine Begründung muss in dem Dump ja drinstehen.

Moderner ist aber ohnehin die REPLACE( )-Funktion, die ich daher an Deiner Stelle versuchen würde. Also

gv_feld = REPLACE( ... bin zu faul, jetzt die Syntax nachzusehen, aber F1 ist Dein Freund ... ).

Diese Syntax unterstützt Ausdrücke, was der alte REPLACE aus längst vergangenen Releases nicht tut. Ich denke nicht, dass die SAP da noch Dumps wirft, wenn Du ein Leerzeichen damit ersetzt.

Für diese Nachricht hat DeathAndPain einen Dank bekommen :
kbit100
DeathAndPain
Expert
 
Beiträge: 606
Registriert: 05.05.2006, 10:14
Dank erhalten: 146 mal
Ich bin: Entwickler/in

Re: Zeichen in einem Textfeld ersetzen

Beitragvon black_adept » 07.06.2018, 14:47

oder für so einen trivialen Fall könnte man auch das gute alte TRANSLATE verwenden:
Code: Alles auswählen
TRANSLATE gv_feld USING ' _'.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Für diese Nachricht hat black_adept einen Dank bekommen :
kbit100
black_adept
Top Expert
 
Beiträge: 2957
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 488 mal
Ich bin: Freiberufler/in

Re: Zeichen in einem Textfeld ersetzen

Beitragvon kbit100 » 07.06.2018, 16:36

Vielen Dank für eure Hilfe.

Ich habe mir jetzt so geholfen:
Code: Alles auswählen
TRANSLATE gv_feld USING ' _'.
SHIFT gv_feld RIGHT DELETING TRAILING '_'.
SHIFT gv_feld LEFT DELETING LEADING space.
 
kbit100
Specialist
 
Beiträge: 122
Registriert: 11.12.2006, 14:55
Dank erhalten: 0 mal


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Ausgangszeugnis
vor 9 Stunden von HH_ABAP 2 Antw.
Editierbarer ALV - Zeilen einfügen verbieten
vor 9 Stunden von ewx 3 Antw.
gelöst Dynamic Cast von Superclass auf Subclass
vor 11 Stunden von AdrianSchm 2 Antw.
gelöst PLMKB: Spalte "Untere Grenze"
vor 12 Stunden von DeathAndPain 1 Antw.
PDF Formular
vor 12 Stunden von DeathAndPain 1 Antw.

  Ähnliche Beiträge beta
Nichtdruckbare Zeichen ersetzen
01.07.2008, 12:58 von TWP 3 Antw.
Letzten zwei Zeichen eines Strings ersetzen
28.06.2006, 13:30 von Thomas R. 4 Antw.
Führendes '!' in einem Textfeld löschen
28.07.2014, 13:57 von Sculi 5 Antw.
gelöst SELECT AUF ZEICHEN IN EINEM FELD
11.02.2013, 09:17 von Adrian 3 Antw.
WHERE-Klausel - Bestimmte Zeichen aus einem Feld (gelöst)
18.10.2011, 15:38 von cragg 4 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder