String zerlegen und in interne Tabelle packen

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

String zerlegen und in interne Tabelle packen

Beitrag von Jens (Specialist / 106 / 0 / 0 ) »
Hallo,

ich bin's mal wieder mit einem für Euch wahrscheinlich trivialen Problem. Ich habe einen String, dessen Länge ich nicht kenne (aber zur Laufzeit ermitteln kann, vermutlich durch STRLEN). Nun muß der String aber in jeweils 132-Zeichen-Blöcke zerlegt werden und in eine interne Tabelle gepackt werden (also eine Tabellenzeile ist genauso ein 132-Zeichen-Block) Wie würdet Ihr das machen?
Vorab Danke.

Gruß,
Jens

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


Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Wenn die itab Zeilen des Typs C hat und wenn die Länge 132 gleich definierte Länge der itab-Zeile ist:

Code: Alles auswählen.

DATA: str_len TYPE I, wa_len TYPE I, offset TYPE I.
DESCRIBE FIELD ... LENGTH wa_len. " bestimmt hast Du ein passendes Feld.

DESCRIBE FIELD str ... LENGTH str_len. " oder str_len = strlen( str ).
* je nach Typ bzw. welche Info Du brauchst.

CLEAR itab[]. " Falls nicht sicher ist, daß die itab leer ist
DO.
  APPEND str+offset TO itab.
  ADD wa_len TO offset.
  IF offset GE str_len.
    EXIT.
  ENDIF.
ENDDO.
Falls die itab auch länger sein kann als die 132 Zeicheen, die Du anhängen willst, brauchst Du wieder eine Variable für die Länge und muß noch mitrechnen, damit Du nicht mit offset+len über das Ende von str hinaus zugreifen willst, sonst kommt es zum Laufzeitfehler.[/code]

Beitrag von Jens (Specialist / 106 / 0 / 0 ) »
Respekt! Die Lösung ist klasse. Einfach und schnell! Danke.

Hab noch einen Bug gefunden

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Ich bin mir fast sicher, daß wenn str vom Typ STRING ist und ausnahmsweise auch mal leer sein kann (strlen also 0 ist), die Anweisung

Code: Alles auswählen.

  APPEND str+offset TO itab.
zu einem Dump führt, auch wenn offset 0 ist.

Beitrag von Jens (Specialist / 106 / 0 / 0 ) »
Hi Frank,

nochmals danke. Ich hatte mir eine wesentlich umständlichere Lösung ausgedacht, insofern bin ich mit der Lösung von Dir sehr zufrieden und hab mein Coding weggeschmissen :D

Gruß,
Jens

Seite 1 von 1

Vergleichbare Themen

5
Antw.
8117
Views
String zerlegen (oder RegEx in ABAP?)
von Margolwes » 19.09.2005 15:06 • Verfasst in ABAP® Core
4
Antw.
1136
Views
5
Antw.
2138
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
4
Antw.
2413
Views
Inhalt erweitertes Langtextfeld PMD in Variable packen
von Tgut » 03.02.2014 15:16 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 10 Stunden von tar 8 / 263
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1551
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 198
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 440

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

Regex in where
vor 10 Stunden von tar 8 / 263
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1551
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 198
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 440

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 142
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3319
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9872