Zeilenumbruch (##) getrennt. Wie nun erkennen?

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
19 Beiträge • Seite 1 von 2 (current) Nächste
19 Beiträge Seite 1 von 2 (current) Nächste

Zeilenumbruch (##) getrennt. Wie nun erkennen?

Beitrag von PaddyG (ForumUser / 63 / 0 / 0 ) »
Hallo @ all,

ich hatte ja aus früheren postings den Tip bekommen Zeilenumbrüche, die SAP nicht als solche in Listen oder Tabellen darstellen kann über dieses Attribut zu finden:

Code: Alles auswählen.

cl_abap_char_utilities=>cr_lf.
Nun hat sich mein Problem etwas geändert.
Unglücklicher weise kommt es ab und an mal vor, dass das Zeichen für den Zeilenumbruch -> ##
getrennt wird.
Sprich statt ## ist dann nur noch #.
Wie kann ich dieses Zeichen nun killen?
Bzw. welchen Wert besitzt es nun?

Wenn Zeilenumbruch 0D0A hat hat dann das einfache #
nur noch 0D?

Wenn ja wie kann ich das filtern bzw. danach suchen?

Vielen lieben Dank im Voraus
Mit freundlichen Grüßen

Partick

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


Beitrag von Gast ( / / 0 / 3 ) »
Du kannst Dir doch eigene Vars definieren, mit denen Du dann suchen kannst:

Code: Alles auswählen.

data: cr type x value '0D'.
data: lf type x value '0A'. 
Möglicherweise mußt Du noch eine Konvertierung in String vornehmen. Siehe hier:

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

Danke

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

Danke für den Tip, aber ich kriege die Konvertierung nicht gebacken.
Ich arbeite mit SAP 6.20 .

Kennt einer eine Möglichkeit von x auf c zu konvertieren?

Code: Alles auswählen.

DATA:
    var(2)       TYPE c.

DATA: cr TYPE x VALUE '0D'.
DATA: lf TYPE x VALUE '0A'.

MOVE cr TO var.   " hier keine konvertierung

REPLACE ALL OCCURRENCES OF var IN wa_pnodtx-pntext WITH ' '.

Mit freundlichen Grüßen

Partick

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hi Paddy,


versuch's mal so :

Code: Alles auswählen.

 DATA trhex(4) TYPE x VALUE '0D20'.
 TRANSLATE var USING trhex.

lg Andreas

Beitrag von PaddyG (ForumUser / 63 / 0 / 0 ) »
versuch's mal so :

Code: Alles auswählen.

 DATA trhex(4) TYPE x VALUE '0D20'. 
 TRANSLATE var USING trhex. 
Das klappt an Der Stelle leider nicht, da TRHEX vom Type c, n, d, t oder string sein muss.

Laut meinem Code ist var ein char.

Gibt es keine Möglichkeit einen Hex-Wert in eine FUBA zu schreiben und dafür den trnasformierten Wert in einen String zu schreiben?
Mit freundlichen Grüßen

Partick

Beitrag von Gast ( / / 0 / 3 ) »
PaddyG hat geschrieben:Gibt es keine Möglichkeit einen Hex-Wert in eine FUBA zu schreiben und dafür den trnasformierten Wert in einen String zu schreiben?
Sollte so gehen:

Code: Alles auswählen.

TYPES: BEGIN OF t_translator,
         cr TYPE x,
       END   OF t_translator.

DATA: gw_translator TYPE t_translator.

gw_translator-cr = '0D'.

REPLACE ALL OCCURRENCES OF gw_translator IN wa_pnodtx-pntext WITH ' '. 
ABAP interpretiert ganze Struckturen als char.

Gruß Hendrik

Beitrag von PaddyG (ForumUser / 63 / 0 / 0 ) »
Irgendwie klappt das nicht.

hier die Fehlermeldung:

Code: Alles auswählen.

"GW_TRANSLATOR" must be a character-type data object (data type C, N, D, T or STRING). field string).
Hier mal mein kompletter code:

Code: Alles auswählen.

REPORT Ztest NO STANDARD PAGE HEADING.

DATA:
    wa_pnodtx TYPE pnodtx.

DATA: cr TYPE x VALUE '0D'.
DATA: lf TYPE x VALUE '0A'.

TYPES: BEGIN OF t_translator,
         cr TYPE x,
       END   OF t_translator.

DATA: gw_translator TYPE t_translator.

gw_translator-cr = '0D'.

SELECT SINGLE * FROM pnodtx
INTO wa_pnodtx
WHERE pnguid EQ '42CE716951AB102DE10000000AB06418'.

WRITE: / wa_pnodtx-pntext,
       / wa_pnodtx-pntext_up.

* Und hier kracht es
REPLACE ALL OCCURRENCES OF gw_translator IN wa_pnodtx-pntext WITH ' '.

WRITE: / wa_pnodtx-pntext.

Gibt es da nicht eine Methode oder ein FUBA?
Mit freundlichen Grüßen

Partick

Beitrag von PaddyG (ForumUser / 63 / 0 / 0 ) »
HAAA...

ich hab's.

Die Lösung ist zu einfach.

Anbei der verwendete Code:

Code: Alles auswählen.

        DATA:
            cr_lf TYPE string.

* Delete ## (line break)
        cr_lf = cl_abap_char_utilities=>cr_lf.
        REPLACE ALL OCCURRENCES OF cr_lf IN text WITH ' '.

* Delete # if ## is splitted
        cr_lf = cl_abap_char_utilities=>cr_lf+0(1).
        REPLACE ALL OCCURRENCES OF cr_lf IN text WITH ' '.
Have a nice day
Mit freundlichen Grüßen

Partick

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Hi Paddy,

bist du sicher, dass das komplett ist??
Du ersetzt nun
1. <carriage Return>+<line feed> in einer Zeile.
2. <carriage Return> in der Zeile

Beim Splitt würde doch aber der Text in etwa so aussehen:
dies ist der Text mit<carriage return>
<line feed>umgebrochenem crlf.

Das heisst, du müsstest auch noch <line feed> ersetzen:

Code: Alles auswählen.

* Delete lf if crlf is splitted
        lf = cl_abap_char_utilities=>cr_lf+1(1).
        REPLACE ALL OCCURRENCES OF lf IN text WITH ' '.
Gruß,
Enno.

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

Stimmt das habe ich vergessen mit reinzunehmen.
War wohl etwas spät ;-)

Aber danke für den Hinweis.
Mit freundlichen Grüßen

Partick

Re: Zeilenumbruch (##) getrennt. Wie nun erkennen?

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Moin moin,

ich habe hier ein ähnliches Problem, ich bekomme (aus Excel) Daten mit Zeilenumbruchzeichen '##' (hex 0023). Jetzt würde ich gern einen mehrzeiligen Text (Struktur TLINE) daraus machen, aber weder mit

REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN <gs_texte>-ltext WITH '|'.

noch mit

REPLACE ALL OCCURRENCES OF '##' IN <gs_texte>-ltext WITH '|'.

komme ich zum Ziel (damit ich ein Zeichen drin habe, wonach ich splitten kann, denn

SPLIT <gs_texte>-ltext AT '##' INTO TABLE gt_lines.

geht auch nicht, obwohl das genau das ist, was ich brauche....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeilenumbruch (##) getrennt. Wie nun erkennen?

Beitrag von klaus1704 (ForumUser / 5 / 1 / 0 ) »
Hallo Ralf,

Gut dass Du bereits weisst was hinter den ## steckt.
Definiere eine Variable (Konstante) Trenner CHAR2 und hinter VALUE kannst Du den Wert 0023 mit der [Alt]-Taste und dem Nummernblock Deiner Tastatur eingeben (zwischen Hochkommata).
Normalerweise wird von Excel aber gerne CRLF verwendet ... . Dieses hast Du in den globalen Attributen der Klasse CL_ABAP_CHAR_UTILITIES.

Gruß
Klaus

Re: Zeilenumbruch (##) getrennt. Wie nun erkennen?

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Das funktioniert leider nicht - ich habe eine Konstante mit dem Inhalt 00230023 (Hex), die ich auch im Debugger sehe, aber ein

Code: Alles auswählen.

CONSTANTS:
  cv_lf_excel   type char02         value '##', "eingegeben als 00230023 über Hex-Eingabe
...
SPLIT <gs_texte>-ltext AT cv_lf_excel INTO TABLE gt_lines.
wird nicht durchgeführt.

Der Inhalt des zu splittenden Feldes lautet "####Einsatzgebiet:##Heiz" (...) bzw. hexadezimal "002300230023002300450069006E007300610074007A006700650062006900650074003A00230023004800650069007A00" (...)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeilenumbruch (##) getrennt. Wie nun erkennen?

Beitrag von klaus1704 (ForumUser / 5 / 1 / 0 ) »
Hi Ralf,

ich habe mal Spasseshalber den Funktionsbaustein "HR_RU_CONVERT_HEX_TO_STRING" auf Deinen Beispielstring losgelassen.
Da kommt "#########E#i#n#s#a#t#z#g#e#b#i#e#t#:#####H#e#i#z#" raus.
Also ist vor jedem Zeichen eines mit Hex-Wert 00. Kann es sein dass Du erst mal alle diese Zeichen entfernen solltest?
Danach nur noch mit [ALt]-23 trennen? Aber wirklich den Nummernblock verwenden, die Zahlen oberhalb der Buchstaben helfen nicht.

Viel Erfolg noch

Klaus

Re: Zeilenumbruch (##) getrennt. Wie nun erkennen?

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Das ist jetzt aber ungewöhnlich - bei 23 kommt bei mir genau gar nix.

Übrigens MACHT der von dir genannte Funktionsbaustein aus einem HEX 23 ein HEX 0023. Guck dir das mal im Debugger an....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Vergleichbare Themen

5
Antw.
1787
Views
Datenbankschlüssel erkennen
von Orestes » 04.10.2011 13:36 • Verfasst in ABAP® für Anfänger
4
Antw.
1789
Views
ALV Datenänderung erkennen
von SAP_ENTWICKLER » 21.12.2017 10:09 • Verfasst in ABAP® Core
10
Antw.
18132
Views
Zeilenumbruch ??
von steffi_ma » 13.01.2005 16:19 • Verfasst in ABAP® Core
10
Antw.
13503
Views
Zeilenumbrüche in Stings erkennen
von Gast » 07.12.2004 14:13 • Verfasst in ABAP® Core
0
Antw.
1102
Views
Erkennen von archivierten Folgebelegen
von c0lt.seavers » 27.09.2010 13:57 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

RFC FuBa Call - Korrupte Daten
vor 53 Minuten von der_neuling 3 / 31
SELECT CHAR16 in CHAR12-Feld
vor 9 Stunden von Shortcut IT 3 / 37
alv_grid aktualisieren
vor 9 Stunden von a-dead-trousers gelöst 3 / 74

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

RFC FuBa Call - Korrupte Daten
vor 53 Minuten von der_neuling 3 / 31
SELECT CHAR16 in CHAR12-Feld
vor 9 Stunden von Shortcut IT 3 / 37
alv_grid aktualisieren
vor 9 Stunden von a-dead-trousers gelöst 3 / 74

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 168