String zerlegen & UniCode Systeme

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

String zerlegen & UniCode Systeme

Postby Enno401 » Fri May 09, 2003 8:58 am

Hallo liebe Forumgemeinde,

ganz schön gewachsen das Forum seit dem ich das letzt mal hier war. Freut mich!

ich habe folgendes Problem:
Ich habe zweit Interne Tabelle. Die eine hat eine Zeilenlänge von 134 Char und die ander 255 Char. Nun soll ich den Inhalt der kleinen Tabelle in die der großen Tabelle schieben aber ohne irgendwelche zeilen hinzuzufügen. Meine Idee war, daß ich aus der ersten Tabelle einen großen String mache und diesen dann in 255 lange Stücke zerhacke. (Vielen dank für das Beispiel http://www.abapforum.com/viewtopic.php?t=33 - Funktioniert Prima!!!)

Doch leider mußte ich feststellen, daß die große tabelle nach dem konvertieren weniger Zeichen (nicht Zeilen- hab mich nicht verguckt) hat wie kleine.
Scheint so, als würde mir der String ein paar Zeichen unterschlagen... Hat es etwas mit Unicode zu tun (System 6.20)
Wie kann ich mein Problem lösen? :cry:

LG Azubiene
Enno401
..
..
 
Posts: 19
Joined: Fri Dec 06, 2002 10:46 am

Re: String zerlegen & UniCode Systeme

Postby Willy1492 » Fri May 09, 2003 3:06 pm

Azubiene hat geschrieben:Ich habe zweit Interne Tabelle. Die eine hat eine Zeilenlänge von 134 Char und die ander 255 Char. Nun soll ich den Inhalt der kleinen Tabelle in die der großen Tabelle schieben aber ohne irgendwelche zeilen hinzuzufügen. Meine Idee war, daß ich aus der ersten Tabelle einen großen String mache und diesen dann in 255 lange Stücke zerhacke. (Vielen dank für das Beispiel http://www.abapforum.com/viewtopic.php?t=33 - Funktioniert Prima!!!)

Nichts zu danken. Schön dass es scheinbar auch Foren gibt, in denen die Such-Funktion benutzt wird :)
Doch leider mußte ich feststellen, daß die große tabelle nach dem konvertieren weniger Zeichen (nicht Zeilen- hab mich nicht verguckt) hat wie kleine.

Hat also scheinbar doch nicht funktioniert, warum bedankst Du Dich?
Scheint so, als würde mir der String ein paar Zeichen unterschlagen... Hat es etwas mit Unicode zu tun (System 6.20)


Es gibt eine Klasse CL_ABAP_CHAR_UTILITIES oder ähnlich.
Darin gibt es eine Methode, miit der man SIZEOF(CHAR) in Bytes ermitteln kann.
Multipliziere doch versuchsweise mal die Länge(außerhalb der Do-Schleife) mit diesem Wert.

Andererseits kann nicht wirklich nachvollziehen, was genau Du vorhast, zumindest klingt Dein Ansatz für meine Interptretation Deines Problems ziemlich kompliziert.
Kannst Du vielleicht mal ded Code posten?

Wie sind denn die Tabellen typisiert (Zeilentyp, Standard/Sorted/Hashed Table, ((non) unique Key)

Um wie viele Einträge geht es dabei?

Wie gehst Du vor, um zu prüfen, welcher Satz wo anhgehängt werden muss?

Frank
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Postby Enno401 » Mon May 12, 2003 10:00 am

Hi, tut mir leid für meine schwammige Formulierung. Beschäftige mich scheinbar schon zu lange mit dem Problem. :lol:

Bin jetzt aber wenigestens auf die Ursache gekommen: Der Inhalt meiner Tabelle ist ein längerer SkriptText der nachher von einem anderen Programm interpretiert werden soll. Doch der concatente Befehl den ich verwende schneidet mir die letzten Leerzeilen ab. Somit ist die Tabelle die ich am Schluß habe kürzer.

Nochmal mein Problem: Ich habe eine Tabelle mit 134 Zeichen Zeilenlänge. Und eine zweite Tabelle mit 255 Zeichen Zeilenlänge. Ich möchte nun den Inhalt der ersten in die zweite Tabelle packen. Ohne dabei auch nur ein Zeichen zu verlieren oder hinzuzupacken. Das Format muß unbedingt beibehalten werden.

Mein Idee war folgende:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. Loop at kleine Tabelle.
  2. concatenate LangeString Tabellen-Zeile into LangerString.
  3.  
  4.  
  5. Zerhacken von String über offset & append in große tabelle
  6.  
  7.  
GeSHi ©

Der Code hat perfekt Funktioniert. Doch leider gehen beim concatenate die Leerzeilen verloren die am ende der Tabellen-Zeile stehen. :x

Was ist die einfachste Möglichkeit mein Problem zu lösen?

LG Azubiene
Enno401
..
..
 
Posts: 19
Joined: Fri Dec 06, 2002 10:46 am

Postby Ilja583 » Mon May 12, 2003 1:08 pm

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. data: superlang(390),
  2.          offset type i.
  3. Loop at kleineTabelle into kleinerString.
  4.   superlang+offset = kleinerString.
  5.   add 134 to offset.
  6.   if offset >= 255.
  7.     append superlang(255) to grosseTabelle.
  8.     subtract 255 from offset.
  9.     superlang = superlang+255.
  10.   endif.
  11. if offset > 0.
  12.   append superlang(255) to grosseTabelle
  13.  
GeSHi ©

ich denke mal so etwa sollte es funktionieren
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Postby Enno401 » Tue May 13, 2003 8:29 am

Hallo Black,
du bist die nummer eins! Das Coding funktioniert einwandfrei. Habe schon seit ein paar stunden versucht etwas ähnliches zu bauen... aber mein loop war irgendwie ziemlich länger.

Vielen Dank

"superlang = superlang+255." <-- Ist wirklich ein Geniestreich!

LG Azubiene
Enno401
..
..
 
Posts: 19
Joined: Fri Dec 06, 2002 10:46 am

Postby Quinn1225 » Fri Aug 01, 2003 2:29 pm

vielleicht noch eine kleine Anmerkung zum Verschwinden von Blanks: Möchte man auch die schliessenden Leerzeichen eines C-Feldes in einen String hinüberretten, so kann man dies wie folgt machen:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CONCATENATE SPACE SPACE INTO String SEPARATED BY cfeld.
  2.  
GeSHi ©

in String steht anschliessend der Inhalt von cfeld mitsamt den schliesssenden Blanks.
Quinn1225
..
..
 
Posts: 30
Joined: Thu Jan 02, 2003 4:16 pm


Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 7 guests

cron