Zeilenumbrüche in Stings erkennen

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

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

Zeilenumbrüche in Stings erkennen

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

folgende Situation: Von einem Internet Transaction Server (ITS) bekommt das Programm eine Character Variable mit fester Länge (z.B. 100 Zeichen) aus einer HTML-Textarea.

Fragestellung: Wie kann man erkennen, ob diese Variable einen Zeilenumbruch enthält?

Hat jemand die passende Antwort bzw. kennt einen Lösungsansatz?

Vielen Dank.

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


Beitrag von Gast ( / / 0 / 3 ) »
Im Debugger dürften die Zeilenumbrüche als '##' dargestellt werden.

Du müßtest aus diesem Thread:

http://www.abapforum.com/forum/viewtopic.php?t=1735

eine Variable mit eine CRLF füllen und dann mit search im String danach suchen.

Beitrag von Gast ( / / 0 / 3 ) »
Vielen Dank für den Lösungsansatz.

Den Thread hatte ich bereits gelesen, allerdings lässt es sich meines Erachtens so nicht lösen.

[code]data:
string(100) type c.
cr_lf type string.

cr_lf = CL_ABAP_CHAR_UTILITIES=>CR_LF.

string = [...].

search string for cr_lf.[/code]

Danach erfolgt die Auswertung des sy-subrc.

Die Problematik liegt meines Erachtens darin, dass die Variable string als ITS-Variable aus der Textarea gelesen wird.

Werden dabei überhaupt Zeilenumbrüche übertragen?
Kennt sich in diesem Bereich jemand aus und kann weiterhelfen?

Beitrag von LoLo ( / / 0 / 3 ) »
Moin,

auswendig kann ich Dir das nicht sagen, aber normalerweise wird vom Browser aus einer Textarea auch ein Zeilenumbruch übertragen.
Wenn Du im Request die Variable auswertest, müßtest Du - wie oben beschrieben - sehen, ob CR/LF übertragen wird (in ABAP als ## dargestellt).
Wenn nichts derartiges übertragen wird, dann scheint es vom ITS ausgefiltert zu werden (was ich mir aber eigentlich nicht vorstellen kann, denn im BSP-Bereich funktioniert das auch).

Ciao, LoLo

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

vielen Dank für die Antwort. Prinzipiell sehe ich es ähnlich wie du, allerdings habe ich mir die Strings sowohl im Debugging angeschaut als auch ausgeben lassen und nie das Zeichen ## entdeckt.

Eine wichtige Information, die eventuell zur Lösung beitragen kann habe ich jedoch vergessen gehabt: Beim ITS werden die Textzeilen einer Textarea zeilenweise und nicht als zusammenhängender String ausgelesen.

Das bedeutet: Entweder am Ende einer Zeile ist ein Zeilenumbruch ODER - sofern die Zeile länger wie 100 Zeichen ist - es gibt keinen Zeilenumbruch.

Besteht die Möglichkeit die Strings in BinaryMode umzuwandeln und dann nach einem Leerzeich '0D0A' zu suchen? Wir würde diese Umwandlung aussehen?

Vielen Dank.

CRLF

Beitrag von Norbert (ForumUser / 52 / 0 / 0 ) »
Wichtig ist, dass man das CRLF in einer Hex-Variablen codiert:

data: crlf(2) type x value '0D0A'.
data: suchstring type string.

concatenate 'Lalala'
crlf
'Ende'
into suchstring
separated by space.
search suchstring for crlf.
if sy-subrc eq 0.
write:/ 'Found at: ',sy-fdpos.
endif.


Debuggeranzeige:

crlf(2) 0D0A
suchstring Lalala ## Ende



Gruss

Norbert
...........
Just do it !

Beitrag von Gast ( / / 0 / 3 ) »
Hallo Norbert.

Vielen Dank für deinen Post.

Problematisch wird an dieser Stelle, dass crlf vom Typ X und die ITS-Variable vom Typ C ist. Somit lässt sich der Befehl "search ... for ..." nicht anwenden. Wie kann ich die ITS-Variable in einen XString konvertieren?

Vielen Dank.

Beitrag von LoLo ( / / 0 / 3 ) »
Moin,

schau mal, ob Dir die genannten Methoden der Utility-Class zur Konvertierung weiterhelfen:

http://www.abapforum.com/forum/viewtopic.php?t=1831

Ciao, LoLo

?Das sollte trotzdem funktionieren!

Beitrag von Norbert_guest ( / / 0 / 3 ) »
?Das sollte trotzdem funktionieren!
In meinem kleinen Beispiel funktioniert der search-
Befehl trotz unterschiedlicher Typen.
Funktioniert auch mit TYPE C !

## statt zeilenumbruch

Beitrag von PaddyG (ForumUser / 63 / 0 / 0 ) »
Hi,

die Tips von Euch sind echt klasse.
leider klappt es bei mir nicht :-(

Über eine BSP Application wird ein Text eingegeben.
Dabei können auch Zeilenumbrüche entstehen.
Diese kommen dann im System als ## raus.

Wie kriege ich diese ## nun weg?

Hier der Code den ich habe:

Code: Alles auswählen.

        DATA: crlf2(2) TYPE x VALUE '0D0A',
              str      TYPE string,
              such     TYPE string
              crlf     TYPE string.

        CALL METHOD cl_abap_conv_in_ce=>uccp
          EXPORTING
            uccp = '0010'
          RECEIVING
            char = crlf.

        such = crlf.
        str = remarks.

        WHILE sy-subrc EQ 0.
*          REPLACE crlf2 IN remarks WITH ' '.
          REPLACE such IN str WITH ' '.
        ENDWHILE.
leider klappt keines dieser kommandos.

Habt Ihr evtl. Rat?
Mit freundlichen Grüßen

Partick

Erledigt

Beitrag von PaddyG (ForumUser / 63 / 0 / 0 ) »
Hi,

habe die Lösung im Forum entdeckt.
http://www.abapforum.com/forum/viewtopic.php?t=1735

Der Beitrag von Herrn Hermann (o.ä.) hat viel geholfen.

Code: Alles auswählen.

* This command will remove ## in string
* ## is sometimes the sign for breaks

        DATA:
            cr_lf TYPE string.

        cr_lf = cl_abap_char_utilities=>cr_lf.

        REPLACE ALL OCCURRENCES OF cr_lf IN remarks WITH ' '.

Vielen lieben Dank
Mit freundlichen Grüßen

Partick

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1203
Views
Zeilenumbrüche im String
von ABAPlerv » 01.09.2023 11:40 • Verfasst in ABAP® für Anfänger
4
Antw.
2042
Views
ALV Datenänderung erkennen
von SAP_ENTWICKLER » 21.12.2017 10:09 • Verfasst in ABAP® Core
5
Antw.
1892
Views
Datenbankschlüssel erkennen
von Orestes » 04.10.2011 13:36 • Verfasst in ABAP® für Anfänger
18
Antw.
61427
Views
Zeilenumbruch (##) getrennt. Wie nun erkennen?
von PaddyG » 15.08.2005 11:42 • Verfasst in ABAP® Core
0
Antw.
1189
Views
Erkennen von archivierten Folgebelegen
von c0lt.seavers » 27.09.2010 13:57 • 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.