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 / 4276 / 213 / 1140 ) »
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.
5522
Views
Code-Schnippsel: SPLIT & CONCATENATE für Text
von a-dead-trousers » 06.09.2011 15:38 • Verfasst in Tips + Tricks & FAQs
1
Antw.
11935
Views
Code-Schnippsel: bel. Daten mittels RTTI bestimmen
von a-dead-trousers » 04.01.2012 09:36 • Verfasst in Tips + Tricks & FAQs
1
Antw.
8573
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.
1068
Views
2-Byte-Characters
von black_adept » 18.04.2005 14:57 • Verfasst in ABAP® für Anfänger
11
Antw.
6763
Views
Convert String to Byte etc...
von stony007_de » 19.11.2013 18:23 • Verfasst in ABAP Objects®

Über diesen Beitrag

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

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 75

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

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 75

Unbeantwortete Forenbeiträge

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