Code: Alles auswählen.
data: ls_struktur type ... "Deine Struktur
CONCATENATE ls_struktur ld_neuer_wert into ls_struktur.
Code: Alles auswählen.
data: ls_struktur type ... "Deine Struktur
FIELD-SYMBOLS: <ld_data> TYPE clike.
ASSIGN ls_struktur TO <ld_data>
CONCATENATE <ld_data> ld_neuer_wert into <ld_data>.
Code: Alles auswählen.
data: ls_struktur type ... "Deine Struktur
data: lt_string type stringtab.
data: ld_string.
append ld_neuer_wert to lt_string.
concatenate lines of lt_string into ld_string.
ls_struktur-free_text_1 = ld_string.
shift ld_string by 190 places left.
ls_struktur-free_text_2 = ld_string.
shift ld_string by 190 places left.
ls_struktur-free_text_3 = ld_string.
Code: Alles auswählen.
DO X TIMES.
concacenate free_text_1 '0' INTO free_text_1.
ENDDO.
Das kann schon durchaus hilfreich sein.Thanatos82 hat geschrieben:versteh ich dich richtig? du hast einen Wert, z.B. 12345 und möchtest da jetzt beispielsweise so lange eine 0 dran hängen bis die 190 Zeichen voll sind?
Warum man das machen will leuchtet mir nicht ein, muss es ja auch nicht
Code: Alles auswählen.
WHILE ld_string NE space.
IF strlen( ld_tabelle-free_text_1 ) LT 190.
CONCATENATE ld_tabelle-free_text_1 ld_string(1) INTO ld_tabelle-free_text_1.
ELSEIF strlen( ld_tabelle-free_text_2 ) LT 190.
CONCATENATE ld_tabelle-free_text_2 ld_string(1) INTO ld_tabelle-free_text_2.
ELSEIF strlen( ld_tabelle-free_text_3 ) LT 190.
CONCATENATE ld_tabelle-free_text_3 ld_string(1) INTO ld_tabelle-free_text_3.
ELSE.
EXIT.
ENDIF.
SHIFT ld_string.
ENDWHILE.
Code: Alles auswählen.
move: ld_string(190) to ld_tabelle-free_text_1,
ld_string+191(190) to ld_tabelle-free_text_2,
ld_string+382(190) to ld_tabelle-free_text_3.
Code: Alles auswählen.
REPORT.
TYPES: gty_feld(5) TYPE c. " Bei dir sind das dann 190 Zeichen
DATA: BEGIN OF ls_tabellenzeile,
feld1 TYPE gty_feld,
dummy1,
dummy2,
feld2 TYPE gty_feld,
dummy3,
feld3 TYPE gty_feld,
END OF ls_tabellenzeile.
DATA: s TYPE string.
START-OF-SELECTION.
s = sy-abcde. " Demostring
PERFORM aufteilen USING s CHANGING ls_tabellenzeile.
write:/ ls_tabellenzeile.
s = sy-abcde(8). " Demostring
PERFORM aufteilen USING s CHANGING ls_tabellenzeile.
write:/ ls_tabellenzeile.
*&---------------------------------------------------------------------*
*& Form AUFTEILEN
*&---------------------------------------------------------------------*
FORM aufteilen USING p_s TYPE string
CHANGING p_tabellenzeile LIKE ls_tabellenzeile.
DATA: BEGIN OF ls_easysplit,
feld1 TYPE gty_feld,
feld2 TYPE gty_feld,
feld3 TYPE gty_feld,
END OF ls_easysplit.
ls_easysplit = p_s.
MOVE-CORRESPONDING ls_easysplit TO p_tabellenzeile.
ENDFORM. " AUFTEILEN
stimmt, wenn lt_string als type string definiert wird. ist lt_string als Type C, mit Längenangabe die grösser als der letzte Offset ist, definiert, kann der wert auch kürzer sein.black_adept hat geschrieben:@ratsnus: Bei deinem Vorschlag könntest du Probleme mit Teilfeldzugriffen bekommen, wenn der String zu kurz ist.