Code: Alles auswählen.
TYPES: BEGIN OF ty_itab ,
textname(70) TYPE c,
spras(2) TYPE c,
lmaktx(2112) TYPE c,
row TYPE i,
tsize TYPE i,
END OF ty_itab.
* Data Declarations - Internal Tables
DATA: i_tab TYPE STANDARD TABLE OF ty_itab INITIAL SIZE 0,
wa TYPE ty_itab,
it_exload LIKE zalsmex_tabline OCCURS 0 WITH HEADER LINE.
DATA: it_lines LIKE STANDARD TABLE OF tline WITH HEADER LINE,
it_text_header LIKE STANDARD TABLE OF thead WITH HEADER LINE,
p_error TYPE sy-lisel,
len TYPE i.
DATA:
off TYPE i VALUE '1'.
LOOP AT i_tab INTO wa.
"anderes Coding...
MOVE wa-tsize TO len .
len = len / 53 + 1.
DO len TIMES .
MOVE '*' TO it_lines-tdformat.
MOVE wa-lmaktx+off(53) TO it_lines-tdline.
SHIFT it_lines-tdline LEFT DELETING LEADING ' '.
off = off + 53 .
APPEND it_lines.
CLEAR it_lines .
ENDDO.
*anschließend werden die Texte noch mit dem FUBA: "SAVE_TEXT" gespeichert
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
xGabriel
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
xGabriel
Code: Alles auswählen.
SPLIT lv_string AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE lt_string.
Code: Alles auswählen.
LOOP AT lt_string ASSIGNING <ld_string>.
CALL FUNCTION 'G_SPLIT_LINE'
EXPORTING
INPUT_LINE = <ld_string>
* CONDENSE_SHORT_LINES = ' '
* IMPORTING
* SPLIT_NOT_SUCCESSFUL =
TABLES
EXPORT_LINES = EXPORT_LINES
EXCEPTIONS
OTHERS = 1.
ls_tline-tdformat = '*'.
LOOP AT EXPORT_LINES assigning <export_line>.
ls_tline-tdline = <export_line>.
append ls_tline to lt_tline.
clear ls_tline-tdformat.
ENDLOOP.
ENDLOOP.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
xGabriel
Nicht ganz. Damit können die Absatz-Probleme im Sapscript nicht gelöst werden. Auch mit den Trennzeichen kann ein Absatz trotzdem die 132 Zeichen einer Sapscript Textzeile übersteigen.wreichelt hat geschrieben:Hallo,
geht das nicht mittels einer While-Schleife ?
...
Ohne system erstellt,bestimmt gibt's bessere Lösungen dazu.
Gruß Wolfgang
a-dead-trousers hat geschrieben:Achso:Damit krigst du die "Absätze" raus und dann machst du mit dem G_SPLIT_LINE die Autrennung auf die Zeilen in deiner TLINE-Tabelle.Code: Alles auswählen.
SPLIT lv_string AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE lt_string.
Die erste kriegt dabei '*' als TDFORMAT und alle weiteren bleiben leer.P.S.: Die '#' im Debugger sind nur Platzhalter für nicht-darstellbare Zeichen.Code: Alles auswählen.
LOOP AT lt_string ASSIGNING <ld_string>. CALL FUNCTION 'G_SPLIT_LINE' EXPORTING INPUT_LINE = <ld_string> * CONDENSE_SHORT_LINES = ' ' * IMPORTING * SPLIT_NOT_SUCCESSFUL = TABLES EXPORT_LINES = EXPORT_LINES EXCEPTIONS OTHERS = 1. ls_tline-tdformat = '*'. LOOP AT EXPORT_LINES assigning <export_line>. ls_tline-tdline = <export_line>. append ls_tline to lt_tline. clear ls_tline-tdformat. ENDLOOP. ENDLOOP.
EDIT:
Ok, das CL_ABAP_CHAR_UTILITIES=>NEWLINE im Code oben dürfte falsch sein. Du müsstest zuerst im Debugger herausfinden welches HEX-Zeichen sich hinter dem '#' bzw. ALT+ENTER aus Excel im String verbirgt und dann dieses Zeichen für die Auftrennung verwenden.
Code: Alles auswählen.
*meine Datendeklarationen:
TYPES: BEGIN OF ty_itab ,
textname(70) TYPE c,
spras(2) TYPE c,
lmaktx(2112) TYPE c,
row TYPE i,
tsize TYPE i,
END OF ty_itab.
* Data Declarations - Internal Tables
DATA: i_tab TYPE STANDARD TABLE OF ty_itab INITIAL SIZE 0,
wa TYPE ty_itab,
it_exload LIKE zalsmex_tabline OCCURS 0 WITH HEADER LINE.
DATA: it_lines LIKE STANDARD TABLE OF tline WITH HEADER LINE,
it_text_header LIKE STANDARD TABLE OF thead WITH HEADER LINE,
p_error TYPE sy-lisel,
len TYPE i.
LOOP AT i_tab INTO wa.
* * Create Header
it_text_header-tdid = tdid.
it_text_header-tdspras = wa-spras .
IF tdobject EQ 'MVKE'.
PERFORM mvke.
ELSEIF tdobject EQ 'KNVV'.
PERFORM knvv.
ELSEIF tdobject EQ 'KNA1'.
PERFORM kna1.
ELSE.
it_text_header-tdname = wa-textname.
ENDIF.
it_text_header-tdobject = tdobject.
FIELD-SYMBOLS:
<ld_string> LIKE LINE OF it_lines,
<export_line> LIKE LINE OF it_lines.
SPLIT wa-lmaktx AT cl_abap_char_utilities=>newline INTO TABLE it_lines.
LOOP AT it_lines ASSIGNING <ld_string>.
CALL FUNCTION 'G_SPLIT_LINE'
EXPORTING
input_line = <ld_string>
TABLES
export_lines = it_lines.
*
it_lines-tdformat = '*'.
LOOP AT it_lines ASSIGNING <export_line>.
APPEND it_lines.
CLEAR it_lines.
ENDLOOP.
AT END OF row.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client = sy-mandt
header = it_text_header
insert = ' '
savemode_direct = 'X'
TABLES
lines = it_lines
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
* Check the Return Code
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO p_error.
EXIT.
ENDIF.
CLEAR: wa.
REFRESH it_lines .
ENDAT.
ENDLOOP.
Code: Alles auswählen.
data:
ls_lines type tline,
it_string type standard table of string with default key,
export_lines type standard table of text72 with default key.
FIELD-SYMBOLS:
<ld_string> LIKE LINE OF it_lines,
<export_line> LIKE LINE OF export_lines.
Code: Alles auswählen.
SPLIT wa-lmaktx AT cl_abap_char_utilities=>newline INTO TABLE it_string.
LOOP AT it_string ASSIGNING <ld_string>.
CALL FUNCTION 'G_SPLIT_LINE'
EXPORTING
input_line = <ld_string>
TABLES
export_lines = export_lines.
ls_lines-tdformat = '*'.
LOOP AT it_lines ASSIGNING <export_line>.
ls_lines-tdline = <export_line>.
APPEND ls_lines to it_lines.
CLEAR ls_lines.
ENDLOOP.
ENDLOOP.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
xGabriel
Code: Alles auswählen.
FIELD-SYMBOLS:
<ld_string> LIKE LINE OF it_lines,
<export_line> LIKE LINE OF export_lines.
Code: Alles auswählen.
LOOP AT it_string ASSIGNING <ld_string>.
LOOP AT it_lines ASSIGNING <export_line>.
Code: Alles auswählen.
FIELD-SYMBOLS:
<ld_string> LIKE LINE OF it_string,
<export_line> LIKE LINE OF it_lines.
Code: Alles auswählen.
FIELD-SYMBOLS:
<ld_string> LIKE LINE OF it_string,
<export_line> LIKE LINE OF export_lines.
Code: Alles auswählen.
ls_lines-tdformat = '*'.
LOOP AT export_lines ASSIGNING <export_line>.
ls_lines-tdline = <export_line>.
APPEND ls_lines to it_lines.
CLEAR ls_lines.
ENDLOOP.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
xGabriel