String zerlegen und in interne Tabelle packen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

String zerlegen und in interne Tabelle packen

Postby Jolin2218 » Fri Dec 06, 2002 12:38 pm

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
Jolin2218
...
...
 
Posts: 105
Joined: Mon Dec 02, 2002 2:28 pm

Postby Willy1492 » Fri Dec 06, 2002 3:37 pm

Wenn die itab Zeilen des Typs C hat und wenn die Länge 132 gleich definierte Länge der itab-Zeile ist:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. DATA: str_len TYPE I, wa_len TYPE I, offset TYPE I.
  2. DESCRIBE FIELD ... LENGTH wa_len. " bestimmt hast Du ein passendes Feld.
  3.  
  4. DESCRIBE FIELD str ... LENGTH str_len. " oder str_len = strlen( str ).
  5. * je nach Typ bzw. welche Info Du brauchst.
  6.  
  7. CLEAR itab[]. " Falls nicht sicher ist, daß die itab leer ist
  8.   APPEND str+offset TO itab.
  9.   ADD wa_len TO offset.
  10.   IF offset GE str_len.
  11.     EXIT.
  12.   ENDIF.
  13.  
GeSHi ©


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]
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Postby Jolin2218 » Fri Dec 06, 2002 4:07 pm

Respekt! Die Lösung ist klasse. Einfach und schnell! Danke.
Jolin2218
...
...
 
Posts: 105
Joined: Mon Dec 02, 2002 2:28 pm

Hab noch einen Bug gefunden

Postby Willy1492 » Fri Dec 06, 2002 4:44 pm

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: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   APPEND str+offset TO itab.
GeSHi ©

zu einem Dump führt, auch wenn offset 0 ist.
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Postby Jolin2218 » Mon Dec 09, 2002 4:30 pm

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
Jolin2218
...
...
 
Posts: 105
Joined: Mon Dec 02, 2002 2:28 pm


Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 2 guests

cron