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.
8111
Views
String zerlegen (oder RegEx in ABAP?)
von Margolwes » 19.09.2005 15:06 • Verfasst in ABAP® Core
4
Antw.
1101
Views
5
Antw.
2125
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.
2411
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

Trennen Strasse und Hausnummer
vor 5 Stunden von msfox 18 / 10935
Dialog-Container mit Toolbar/Status
vor 8 Stunden von black_adept gelöst 27 / 4030
IT0024 Qualifikationen CP-ID
vor 10 Stunden von ArjenR 1 / 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

Trennen Strasse und Hausnummer
vor 5 Stunden von msfox 18 / 10935
Dialog-Container mit Toolbar/Status
vor 8 Stunden von black_adept gelöst 27 / 4030
IT0024 Qualifikationen CP-ID
vor 10 Stunden von ArjenR 1 / 75

Unbeantwortete Forenbeiträge

IT0024 Qualifikationen CP-ID
vor 10 Stunden von ArjenR 1 / 75
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 3010
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9601