Code-Schnippsel: SPLIT & CONCATENATE für Byte

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!
1 Beitrag • Seite 1 von 1
1 Beitrag Seite 1 von 1

Code-Schnippsel: SPLIT & CONCATENATE für Byte

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Nochmal dieselbe Routine, die ich bereits für den SPLIT & CONCATENATE für Text erstellt hab, diesmal aber für XSTRING & Co.
Hiermit kann man wie auch schon beim Split & Concatenate von Text, beliebige Bytefelder in Tabellen reinschreiben bzw. daraus lesen.
Zum Beispiel für den Export zum GUI oder zum Mail-Versand.
Der Einfachheit halber wiederum als Unter-Routine ;)

Code: Alles auswählen.

FORM split_byte
  USING    id_byte   TYPE xsequence
  CHANGING ct_table  TYPE table
           cd_length TYPE numeric. "Eigentlich optional

  DATA:
    ld_length   TYPE i,
    ld_byte     TYPE xstring.

  FIELD-SYMBOLS:
    <la_line>   TYPE any.

  REFRESH ct_table.

  APPEND INITIAL LINE TO ct_table ASSIGNING <la_line> 
  DESCRIBE FIELD <la_line> LENGTH ld_length IN BYTE MODE.
  ld_byte = id_byte.
  REFRESH ct_table.

  WHILE ld_byte IS NOT INITIAL.
    APPEND INITIAL LINE TO ct_table ASSIGNING <la_line>.
    <la_line> = ld_byte.
    SHIFT ld_text BY ld_length PLACES LEFT IN BYTE MODE.
  ENDWHILE.

  cd_length = xstrlen( id_byte ).
ENDFORM.

Code: Alles auswählen.

FORM concatenate_byte
  USING    ut_table  TYPE TABLE
  CHANGING cd_byte   TYPE xsequence
           cd_length TYPE any. "Eigentlich optional

  DATA:
    ld_lines     TYPE i,
    ld_length    TYPE i,
    ld_byte      TYPE xstring.

  FIELD-SYMBOLS:
    <la_line>    TYPE any.

  CLEAR cd_byte.
  CLEAR cd_length.

  ld_lines = lines( ut_table ).
  READ TABLE ut_table ASSIGNING <la_line> INDEX ld_lines.
  IF sy-subrc EQ 0.
    DESCRIBE FIELD <la_line> LENGTH ld_length IN BYTE MODE.
    ld_length = ( ld_length * ( ld_lines - 1 ) ) + xstrlen( <la_line> ).
  ENDIF.

  CONCATENATE LINES OF ut_table INTO ld_byte IN BYTE MODE.
* Ganz wichtig, damit der XString die richtige Länge hat
  cd_byte = ld_byte(ld_length).
  cd_length = ld_length.
ENDFORM.
Das Tolle daran ist, dass auch hierbei die richtige Länge für den Split bzw. Concatenate automatisch ermittelt wird 8)

Wenn man die Daten bereits als Tabelle hat und in eine andere mit unterschiedlicher Zeilenlänge umwandeln möchte, kann man dazu zuerst CONCATENATE und danach SPLIT verwenden.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Andrzej

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

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


Seite 1 von 1

Vergleichbare Themen

1
Antw.
5833
Views
Code-Schnippsel: SPLIT & CONCATENATE für Text
von a-dead-trousers » 06.09.2011 15:38 • Verfasst in Tips + Tricks & FAQs
1
Antw.
12316
Views
Code-Schnippsel: bel. Daten mittels RTTI bestimmen
von a-dead-trousers » 04.01.2012 09:36 • Verfasst in Tips + Tricks & FAQs
1
Antw.
8914
Views
Code-Schnippsel: Richtiger Umgang mit SM30/SM34 Zeitpunkten
von a-dead-trousers » 06.03.2012 13:50 • Verfasst in Tips + Tricks & FAQs
0
Antw.
1202
Views
2-Byte-Characters
von black_adept » 18.04.2005 14:57 • Verfasst in ABAP® für Anfänger
1
Antw.
1708
Views
Sonderzeichen entfernen byte xml
von mnd » 19.04.2013 15:20 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag

a-dead-trousers
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 7 Stunden von DeathAndPain gelöst 22 / 2894
Daten an Tabelle binden
vor 12 Stunden von Lukas Sanders 2 / 915
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 485

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

Dialog-Container mit Toolbar/Status
vor 7 Stunden von DeathAndPain gelöst 22 / 2894
Daten an Tabelle binden
vor 12 Stunden von Lukas Sanders 2 / 915
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 485

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2502
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9083