Zeilenumbruch CR_LF ('#') im Editor entfernen

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

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

Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Hallo,

habe da ein Problem mit einem Zeilenumbruchzeichen in einem mehrzeiligen Texteditor. Ich möchte das '#' aus dem Text entfernt haben, denn das verhunzt mir die Übertragung über HL7-Schnittstelle und bricht mir die Zeile um in der HL7-Datei. Der Nutzer drückt ganz normal im Texteditor die Entertaste, so soll das auch bleiben.

Das '#'-Zeichen sieht man nur im Debugger, nicht im Klartext!
Bild

Was habe ich schon alles probiert ohne Erfolg:

Code: Alles auswählen.

DATA: v_crlf type string value '0D'.

    REPLACE ALL OCCURRENCES OF v_crlf IN ls_longtext-VALUE WITH SPACE.
und

Code: Alles auswählen.

REPLACE ALL OCCURRENCES OF REGEX '(#)' IN ls_longtext-VALUE WITH SPACE.
und

Code: Alles auswählen.

Replace all occurrences of CL_ABAP_CHAR_UTILITIES=>NEWLINE in ls_longtext-VALUE with space.
und

Code: Alles auswählen.

Replace all occurrences of CL_ABAP_CHAR_UTILITIES=>CR_LF in ls_longtext-VALUE with space.
Das hexadezimale Zeichen für den Umbruch ist '0D'.

Ziel soll es also sein, im Debugger das '#' zu entfernen. Bin für Tipps sehr dankbar.

VG
sapdepp

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


Re: Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Probier mal
REPLACE ALL OCCURRENCES OF regex '[[:cntrl:]]' IN ls_longtext-VALUE WITH SPACE.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Wie sehr sich die Probleme doch ähneln:
Wir haben grad das gleiche Problem in der HL7-Schnittstelle.
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.18
Basis: 7.50

Re: Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
#0D ist Carriage Return (CR), also weder CL_ABAP_CHAR_UTILITIES=>CR_LF (#0D0A) noch CL_ABAP_CHAR_UTILITIES=>NEW_LINE (Line Feed #0A)

So müsste es klappen:

Code: Alles auswählen.

DATA: v_cr TYPE X VALUE '0D'.

    REPLACE ALL OCCURRENCES OF v_cr IN ls_longtext-VALUE WITH SPACE.

Re: Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Oder so:

Code: Alles auswählen.

REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>CR_LF(1) IN ls_longtext-VALUE WITH SPACE.
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.18
Basis: 7.50

Re: Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
das ist gefährlich. In Unicode ist crlf x0009000a
Teilstring wäre demnach x00 :/
Habe bei meiner Lösung aber das gleiche Problem, glaube ich... ;)

Re: Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Hallo,

sowohl die Lösungen von adt als auch von black_adept funktionieren. :D

Also:

Code: Alles auswählen.

REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>CR_LF(1) IN ls_longtext-VALUE WITH SPACE.
bzw.

REPLACE ALL OCCURRENCES OF regex '[[:cntrl:]]' IN ls_longtext-VALUE WITH SPACE.

Bei black_adept beträfe das aber sicher alle Control-Zeichen, bei adt nur den Zeilenvorschub, oder?

Bei der Lösung von ewx hat der Compiler das Problem, dass er den Type X nicht erkennt und String, Charachter usw. verlangt. Mit X hatte ich es auch schon probiert vorher, sorry.

Code: Alles auswählen.

    DATA: v_cr TYPE X VALUE '0D'.

        REPLACE ALL OCCURRENCES OF v_cr IN ls_longtext-VALUE WITH SPACE.
Mein Problem wäre damit gelöst, aber die Frage, wie ich den Typ X erfolgreich deklariere, ist jetzt noch offen. Muss ich da ein vorhandenes Data-Include vorschalten mit der Type-Deklaration?

Besten Dank und viele Grüße
sapdepp

Re: Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
sapdepp hat geschrieben:...
REPLACE ALL OCCURRENCES OF regex '[[:cntrl:]]' IN ls_longtext-VALUE WITH SPACE.

Bei black_adept beträfe das aber sicher alle Control-Zeichen, bei adt nur den Zeilenvorschub, oder?
...
Ja - das betrifft alle Control-Zeichen. Aber in den Fällen wo ich das o.a. Replace verwendet habe waren eben alle Control-Characters "böse" und nicht nur das x0D. Was wäre denn, wenn z.B. statt x0D tatsächlich mal ein User den typischen Vorschub - also ein x0A0D eingibt. Soll dann nur das x0D ersetzt werden und das x0A stehen bleiben?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
sapdepp hat geschrieben:Bei der Lösung von ewx hat der Compiler das Problem, dass er den Type X nicht erkennt und String, Charachter usw. verlangt. Mit X hatte ich es auch schon probiert vorher, sorry.
Hier die Lösung dafür (Extra mit CRLF, um zu zeigen, wie es mit zweistelligen hex-Zeichen funktioniert):

Code: Alles auswählen.

DATA: v_cr TYPE xstring VALUE '0D0A'.
DATA v_cr2 TYPE c length 2.
DATA l_text TYPE string.
FIELD-SYMBOLS <x> type any.

ASSIGN v_cr2 to <x> type 'X'.
<x> = v_cr.

CONCATENATE 'das' 'ist' 'ein' 'test' into l_text SEPARATED BY CL_ABAP_CHAR_UTILITIES=>CR_LF.
REPLACE ALL OCCURRENCES OF v_cr2 IN l_text WITH '*'.

Re: Zeilenumbruch CR_LF ('#') im Editor entfernen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
@black_adept: Ja, gehe konform, so ist es dynamischer. :D

@ewx: Danke, ich glaube dir. Schönes Beispiel.

VG
sapdepp

Seite 1 von 1

Vergleichbare Themen

10
Antw.
18093
Views
Zeilenumbruch ??
von steffi_ma » 13.01.2005 16:19 • Verfasst in ABAP® Core
1
Antw.
1849
Views
Zeilenumbruch im ALV-Grid
von Kaiwalker » 17.05.2005 07:58 • Verfasst in ABAP Objects®
3
Antw.
8755
Views
Zeilenumbruch in smartforms
von Asaph » 06.05.2011 14:26 • Verfasst in ABAP® Core
2
Antw.
3073
Views
Zeilenumbruch verhindern
von bliP! » 15.02.2006 14:03 • Verfasst in ABAP® für Anfänger
1
Antw.
1382
Views
Zeilenumbruch als ## dargestellt
von Gregor » 07.02.2006 14:01 • Verfasst in ABAP® Core

Ü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

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

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141