Langtexte: Zeilenumbruch bei Excel-Import

Getting started ... Alles für einen gelungenen Start.
18 Beiträge Seite 1 von 2 (current) Nächste
18 Beiträge Seite 1 von 2 (current) Nächste

Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von xGabriel (ForumUser / 16 / 6 / 0 ) » 9. Nov 2018 09:29

Hallo Zusammen!

Ich habe die Anforderung eine Massenänderung von Langtexten (Material-Vertriebstexte) bereit zu stellen. LSMW ist hier sehr mühsam, da man hier das Excel Zeile für Zeile aufbereiten müsste, und das bei mehreren 100 Materialien in mehreren Sprachen bei 20+ Zeilen pro Material und Sprache :D

Habe nun eine Vorlage im Netz gefunden welche es ermöglicht den gesamten Text einer Excel-Zelle als Langtext zu Importieren. Dies funktioniert auch bereits, doch habe ich folgendes Problem:

Das Programm ist so gestaltet, dass immer nach 53 Zeichen ein Zeilenumbruch gemacht wird, damit man im Langtext nicht nach rechts scrollen muss.
Dies ist grundsätzlich auch gut, doch in der Praxis sind bei einem schön aufbereitetem Vertriebstext nicht immer nach 53 Zeichen die Zeilenumbrüche.

zB: ein Text wie er im Excel (in einer Zelle) aufscheint.

Maschine XY

Es handelt sich um ein tolles Produkt.
Sehr gute Handhabung mit spezieller Technik.

Ausstattung:
Motor: XY
.....

Das System zählt hier die Leerzeichen auch als Zeichen mit und somit verschiebt sich der Text, es ergeben sich Zeilenumbrüche wo zB. nur 1 Buchstabe in einer Zeile steht und der Text ist somit unbrauchbar.

Hier das betroffene Coding:

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

Wenn ich mir das Ganze im Debugger ansehe werden die Zeilenumbrüche aus Excel auch an den richtigen Stelle durch # dargestellt, doch durch dieses Coding wird einfach stur nach 53 Zeichen eine neue Zeile begonnen (unabhängig von den Umbrüchen im Excel)

Ich bräuchte hier einen Vorschlag, wie ich dieses Coding entsprechend anpassen kann, damit nach jedem Excel-Zeilenumbruch auch im Langtext einer gemacht wird. Sprich Umbruch immer nach dem Zeichen #.
Ein Problem hierbei wird ws. auch "len" darstellen, weil hier die Anzahl der Zeilen fix über Anzahl Zeichen gesamt / 53 Zeichen pro Zeile berechnet wird...

Über entsprechende Lösungsvorschläge wäre ich seeeeeeehr dankbar! :) :up:


Mit freundlichen Grüßen
Gabriel


Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von a-dead-trousers (Top Expert / 3206 / 81 / 794 ) » 9. Nov 2018 12:13

hi.

Du könntest in das Coding und den Text im Excel die zweistellige TDFORMAT-Spalte mitaufnehmen die in deinem Coding momentan hart mit '*' vorbelegt wird. Damit lassen sich dann auch längere Texte abbilden:
'* ' wäre ein neuer Absatz mit dem Standard-Absatzformat
'= ' wäre ein fortsetzen der vorherigen Zeile OHNE Leerzeichen. Also aus 'hier' und 'geht's weiter' wird 'hiergeht's weiter'
' ' wäre ein fortsetzen der vorherigen Zeile MIT Leerzeichen. Also aus 'hier' und 'geht's weiter' wird 'hier geht's weiter'
'/ ' wäre ein Zeilenumbruch (SHIFT+ENTER aus Word bzw. <br> in HTML)

Umgelegt auf deine 53 Zeichen und die Längenangabe, wären dann die ersten zwei Zeichen das TDFORMAT und die restlichen 51 das TDLINE. Natürlich kannst du das auch verlängern, wenn du möchtest. Im SAPscript haben sich meist 72 Zeichen als Zeilenlänge für TDLINE etabliert. Maximal hat TDLINE eine Länge von 132 Zeichen.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
xGabriel

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von a-dead-trousers (Top Expert / 3206 / 81 / 794 ) » 9. Nov 2018 12:25

Alternativ fiele mir noch eine Übergabe des Textes als XML bzw. JSON ein. Hier hast du dann nicht mehr das Problem mit der fixen Zeilenlänge.
Wie das ganze funktioniert kannst du dir in der Hilfe zum Befehl CALL TRANSFORMATION ID ansschauen. In der Excel-Spalte musst du dann nur den Text im asXML-Format der SAP eintragen und beim Import die Transformation dazu aufrufen.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
xGabriel

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von wreichelt (Expert / 697 / 16 / 122 ) » 9. Nov 2018 12:33

Hallo,

ich habe ganz lange Zeilen geliefert bekommen und konnte die mit dem FB wunderbar aufteilen.

refresh: export_lines.
clear: export_lines.
CALL FUNCTION 'G_SPLIT_LINE'
EXPORTING
INPUT_LINE = zeilen-lline
* CONDENSE_SHORT_LINES = ' '
* IMPORTING
* SPLIT_NOT_SUCCESSFUL =
TABLES
EXPORT_LINES = EXPORT_LINES
EXCEPTIONS
OTHERS = 1. .
* BREAK-POINT.
* jetzt aufgetrennte zeilen in Tabelle für Save_text abspeichern
loop at export_lines.
….

Gruß Wolfgang

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von xGabriel (ForumUser / 16 / 6 / 0 ) » 12. Nov 2018 09:42

Hallo,

erstmal danke für eure Antworten.
Aber ich glaube damit komme ich nicht an mein gewünschtes Ziel, da ich eben mit den 132 Zeichen pro Zeile auch nicht auskomme...

Also meine Excel hat derzeit 3 Spalten (Textname, Sprache und Text). In der Spalte Text steht der gesamte Text in EINER ZELLE. In dieser Zelle ist der Text durch Excel-Zeilenumbrüche (ALT+ENTER) formatiert. Diese Umbrüche sind bei jedem Text individuell gestaltet (manchmal nach einigen Worten, manchmal auch nach ein paar Sätzen) . Die Anzahl der Zeichen ist auch immer unterschiedlich, können auch mal relativ viele Zeichen sein (500+).
In der 2. Excel-Zeile folgt bereits das nächste Material usw....

Somit führt ein Zeilenumbruch nach einer vorgegebenen Anzahl an Zeichen (wie es der FUBA: G_SPLIT_LINE macht) nicht zum Ziel.


In meinem Coding wird es ja derzeit bereits so gemacht, dass die Anzahl der Zeilen für jeden Text aufgrund der Gesamtanzahl der Zeichen berechnet werden. Diese erfolgt jedoch immer starr mit der Anzahl an Zeichen pro Zeile (len / 53 + 1)

Gibt es hier keine einfachere Lösung, dass ich sagen kann:
- Finde die Anzahl an '#' in meinem Text heraus und berechne daraus die Anzahl der Zeilen und mache dementsprechend die Zeilenumbrüche nach jedem # ? ( len = len / Anzahl an # +1)

Weil wie gesagt werden mir im Debugger die Zeilenumbrüche an den korrekten Stellen als # angezeigt:

"DSB Ultra HM##Höchste Präszision bei Dünnschnittsägen und speziell#geeignet für alle MASCHINEN.#Mit der folgenden Konfiguration:#Breite: 80cm#Länge: 120cm#Höhe: 400cm#

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von a-dead-trousers (Top Expert / 3206 / 81 / 794 ) » 12. Nov 2018 10:38

Achso:

Code: Alles auswählen.

SPLIT lv_string AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE lt_string.
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.
Die erste kriegt dabei '*' als TDFORMAT und alle weiteren bleiben leer.

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.
P.S.: Die '#' im Debugger sind nur Platzhalter für nicht-darstellbare Zeichen.

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.
Zuletzt geändert von a-dead-trousers am 12. Nov 2018 10:57, insgesamt 1-mal geändert.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
xGabriel

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von wreichelt (Expert / 697 / 16 / 122 ) » 12. Nov 2018 10:50

Hallo,

geht das nicht mittels einer While-Schleife ?

WHILE Feld NE abruchbedingung.
if Feld(1) eq '#'.
write ausgabezeile to xyz.
clear ausgabezeile.
else.
WRITE feld(1) to ausgabezeile.
endif.

SHIFT Feld.
ENDWHILE.

Ohne system erstellt,bestimmt gibt's bessere Lösungen dazu.
Gruß Wolfgang

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von a-dead-trousers (Top Expert / 3206 / 81 / 794 ) » 12. Nov 2018 11:01

wreichelt hat geschrieben:Hallo,

geht das nicht mittels einer While-Schleife ?

...

Ohne system erstellt,bestimmt gibt's bessere Lösungen dazu.
Gruß Wolfgang
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.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von wreichelt (Expert / 697 / 16 / 122 ) » 12. Nov 2018 11:08

[quote="a-dead-trousers"]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.

Hallo,
data: strl TYPE i VALUE 0
WHILE Feld NE abruchbedingung.
if Feld(1) eq '#'.
write ausgabezeile to xyz.
clear ausgabezeile.
clear strl.
else.
WRITE feld(1) to ausgabezeile.
strl = strl + 1.
endif.
if strl = 132.
write ausgabezeile to xyz.
clear: ausgabezeile, strl.
endif.
SHIFT Feld.
ENDWHILE.

jetzt mit Abfrage auf 132 Zeichen in der Zeile.
Gruß Wolfgang

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von a-dead-trousers (Top Expert / 3206 / 81 / 794 ) » 12. Nov 2018 11:16

Das "zerreißt" dir aber unter Umständen die Wörter.
Du müsstest eigentlich nach Leerzeichen trennen und dann für jedes Wort prüfen, ob es noch in die aktuelle Zeile passt.
Genau das macht der G_SPLIT_LINE (halt mit fixen 71 Zeichen aber das ist in diesem Fall sogar eher wünschenswert)
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von wreichelt (Expert / 697 / 16 / 122 ) » 12. Nov 2018 12:00

Hallo,

der FB: CONV_TEXTSTRING_TO_ITF kann wohl 132 Zeichen.
Beispiel: dazu

https://archive.sap.com/discussions/thread/3838804

Gruß Wolfgang

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von xGabriel (ForumUser / 16 / 6 / 0 ) » 12. Nov 2018 12:11

a-dead-trousers hat geschrieben:Achso:

Code: Alles auswählen.

SPLIT lv_string AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE lt_string.
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.
Die erste kriegt dabei '*' als TDFORMAT und alle weiteren bleiben leer.

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.
P.S.: Die '#' im Debugger sind nur Platzhalter für nicht-darstellbare Zeichen.

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.


Vielen Dank für deine Bemühungen!
Ich bin leider noch blutiger Anfänger und tue mir etwas schwer deinen Lösungsvorschlag umzusetzen. :cry:


Wäre super wenn du mir nochmal weiterhelfen könntest:

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.



1.) müsste ich hier nicht meine Tabelle i_tab verwenden? Aber wenn ich i_tab verwende bekomme ich den Fehler:
Beim Zusatz "INTO TABLE" sind nur Tabellen mit zeichenartigem Zeilentyp erlaubt (Datentyp C,N,D,T oder STRING).


SPLIT wa-lmaktx AT cl_abap_char_utilities=>newline INTO TABLE it_lines.

2.) Wie finde ich das HEX-Zeichen für # heraus? im Debugger sind selbst wenn ich in meinem Text nur 1 Buchstabe und einen Zeilenumbruch mache im Feld "Inhalt hexadezimal" eeeeextrem viele Buchstaben und Zahlen. Der Wert für ein Zeichen sollte ja sowas ähnliches wie 0D00 sein oder?

3.) Wie deklariere ich die beiden Variablen <ld_string> und <export_lines> richtig?

4.) Beim SAVE_TEXT erkennt er plötzlich AT END AT row nicht mehr und sagt mir, dass die Komponente row nicht existiert. In meinem ursprünglichen Coding hat dies jedoch problemlos funktioniert.



DANKE!

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von a-dead-trousers (Top Expert / 3206 / 81 / 794 ) » 12. Nov 2018 15:44

ad 1 und 3.)

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.
ad 2)
Wie gesagt geht das am Besten im Debugger. Ich würde als Variablennamen dann z.B. "wa-lmaktx+20" um das 20te Zeichen zu lesen. Dann taste ich mich im Index immer weiter vor bis ich das # Zeichen in der Textdarstellung erreicht habe und in der HEX-Darstellung hat man dann das HEX-Zeichen dazu.

ad 4)
Deine Verschachtelung passt nicht. Vor dem AT END OF ROW muss das ENDLOOP von LOOP AT it_lines rein.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
xGabriel

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von xGabriel (ForumUser / 16 / 6 / 0 ) » 12. Nov 2018 17:21

Wir kommen der Sache schön langsam näher, doch irgendwo ist noch ein Fehler versteckt.

Du hast ja die FIELD-SYMBOLS wie folgt deklariert:

Code: Alles auswählen.

  FIELD-SYMBOLS:
    <ld_string>   LIKE LINE OF it_lines,
    <export_line> LIKE LINE OF export_lines.
Wenn ich das so mache, bekomme ich bei den beiden LOOPS einen Fehler:

Der Zeilentyp der Tabelle "IT_STRING" ist nicht kompatibel zum Typ des Feldsymbols "<LD_STRING>".
Der Zeilentyp der Tabelle "IT_LINES" ist nicht kompatibel zum Typ des Feldsymbols "<EXPORT_LINE>".

Code: Alles auswählen.

LOOP AT it_string ASSIGNING <ld_string>.
LOOP AT it_lines ASSIGNING <export_line>.

Habe nun probiert die Deklarationen wie folgt zu ändern:
Den Rest deines Codings habe ich unverändert gelassen:

Code: Alles auswählen.

  FIELD-SYMBOLS:
    <ld_string>   LIKE LINE OF it_string,
    <export_line> LIKE LINE OF it_lines.
Weiß zwar nicht ob das so richtig ist, aber ich bekomme zumindest keinen Syntaxfehler mehr.

Wenn ich mir das Ganze im Debugger nun ansehe stellt sich ein erster Teilerfolg dadurch ein: Der Text wird jetzt schon mal korrekt in it_string geschrieben. In dieser Tabelle wird nun nach jedem ALT+ENTER im Excel eine neue Zeile begonnen.

Doch dann läuft noch etwas schief (vermutlich durch meine Änderungen an den Deklarationen?):

- in der Tabelle Export_lines befindet sich nur die letzte Textzeile aus it_string
- in ls_lines wird nur das tdformat übergeben, jedoch keine tdline
- dadurch wird natürlich auch nichts an it_lines übergeben (welche im SAVE_TEXT als "lines TABLE" deklariert ist) --> es kommt kein Text an!


CL_ABAP_CHAR_UTILITIES=>NEWLINE wird im Debugger als # mit dem HEX-Wert 0A00 erkannt. Also müsste das eg passen oder?


Vielen Dank nochmal für deine Hilfe und deine Geduld!

Re: Langtexte: Zeilenumbruch bei Excel-Import

Beitrag von a-dead-trousers (Top Expert / 3206 / 81 / 794 ) » 12. Nov 2018 19:25

Flüchtigkeitsfehler.

Code: Alles auswählen.

FIELD-SYMBOLS:
  <ld_string>   LIKE LINE OF it_string,
  <export_line> LIKE LINE OF export_lines.
Das wäre die korrekte Datendeklaration gewesen und der zweite Loop müsste sich natürlich auch um die korrekten Daten kümmern. :oops:

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

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Seite 1 von 2 (current) Nächste

Aktuelle Forenbeiträge

ABAP Clean Code
vor 7 Stunden von ralf.wenzel 36 / 790
ADOBE Forms - geschachtelte Tabellen
vor 8 Stunden von a-dead-trousers 3 / 31
Merkmale in Abhängigkeit vom Beziehungswissen
vor 11 Stunden von wreichelt 6 / 167
Abrechnung Konditionskontrakte Wildcards
vor 11 Stunden von ewx 2 / 22
PDF24 - GUI crasht bei PDF Druck
vor 15 Stunden von Lukas R. 3 / 47

Unbeantwortete Forenbeiträge

[GELÖST] Feld KNVV-BOIDT
vor 4 Tagen von SAP_ENTWICKLER 1 / 46
Sortierbegriffe einer Stückliste ändern
vor 4 Tagen von mbiesenb 1 / 39
Feiertagsklasse und Lohnart Verknüpfung entfernen
vor 4 Tagen von Flashtie 1 / 39
Berechtigungen für Batch User
vor einer Woche von JohnLocklay 1 / 85