Mailversand - Excel-Ausgabe

Getting started ... Alles für einen gelungenen Start.
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

Mailversand - Excel-Ausgabe

Beitrag von honeyjam (ForumUser / 43 / 11 / 0 ) »
Hi,

hat einer von euch eine Idee, warum bei der Excel-Ausgabe die Inhalte der ersten Spalte "unterschiedlich versetzt (unterschiedliche Leerzeichen)" in einer Zelle dargestellt wird? Ich steige irgendwie nicht dahinter und bin mit meinem "Latein" am ende.

Schaut mal bitte - so ist die Ausgabe in Excel (siehe erste Spalte)
Die erste Zeile mit der ersten Spalte wird korrekt angezeigt.
Ab der zweiten Zeile wird die erste Spalte mit "willkürlichen Leerzeichen" von dem eigentlichen Zelleninhalt von Excel angezeigt....

Hat einer von euch eine Idee, wie ich diese Leerzeichen ab der zweiten Zeile in der ersten Spalte unterdrücken kann.
Ich habe es mit
SHIFT lv_attachment LEFT DELETING LEADING ' '.
versucht. Das hat leider nichts gebracht.... :-(

Freue mich schon auf hilfreiche Tipps :-)

Vielen Dank

Lisa

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Mailversand - Excel-Ausgabe

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
versuch mal das hier: :wink:
condense.jpg
<:: XING-Gruppe Tricktresor::>

Re: Mailversand - Excel-Ausgabe

Beitrag von honeyjam (ForumUser / 43 / 11 / 0 ) »
Hi Ratsnus,
der Tipp war ganz gut - vielen Dank!
Die Leerzeichen sind in der ersten Spalte nur "minimal" besser geworden.
Siehe Screenshot.
Setze ich vielleicht den Befehl an der falschen Stelle ein?

loop at lt_usrcd. "into lv_string.
concatenate
lt_usrcd-bname
lt_usrcd-modda
lt_usrcd-modti
into lv_string separated by cl_abap_char_utilities=>horizontal_tab.
SHIFT lv_string LEFT DELETING LEADING ' '.
CONDENSE lv_string.

while lv_string <> space.
call function 'TEXT_SPLIT'
EXPORTING
length = 255
text = lv_string
IMPORTING
line = lv_attachment
rest = lv_string.

if lv_string = space.
concatenate lv_attachment cl_abap_char_utilities=>cr_lf into lv_attachment.
endif.

append lv_attachment to ct_attachment.
clear lv_attachment.
endwhile.

endloop.

Re: Mailversand - Excel-Ausgabe

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hi!

huhu... Der gute ALTE Text-Split. :evil:
Du musst ZUERST den VOLLSTÄNDIGEN String erstellen (also mit TABs und CR_LF) und erst ganz am Schluss den TEXT_SPLIT machen.
Sonst wandern nämlich die nicht verbrauchten Leerzeichen jeder Zeile in die nachfolgende. Ist doch logisch oder ;)

Kleiner Tipp:
Mit CONCATENATE LINES OF ... INTO ... geht das zusammenfügen mehrere Zeilen einer Text-Tabelle am schnellsten.
Das die SAP das (noch?) nicht auch für Strukturen vorgesehen hat ist mir schleierhaft. Hab das inzischen mit Konvertierungen usw. selbst geschrieben ;)

lg ADT
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.18
Basis: 7.50

Re: Mailversand - Excel-Ausgabe

Beitrag von honeyjam (ForumUser / 43 / 11 / 0 ) »
Hi ADT,
vielen Dank für den Tipp.
Wenn ich das nach der ersten Variante machen möchte - also so wie es oben im Coding schon drin ist.
Dort erstelle ich ja schon den vollständigen String (mit TABs und CR_LF) erst mit dem FUBA TEXT_SPLIT versuche ich die nächste Zeile darzustellen.
Ich habe mir mein Coding nochmal angeschaut und komme noch nicht ganz dahinter, wo ich was abändern muss? :| :roll:
Könntest du mir bitte die Stelle nennen was ich an dieser Stelle abändern muss?
Vielen Dank

LG
Lisa

Re: Mailversand - Excel-Ausgabe

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hi!

Hab das ganze auch ein wenig modernisiert und vervollständigt ;)

Code: Alles auswählen.

data:
  lt_string type stringtab,
  lv_string type string.

field-symbols:
  <ld_string> type string
  <ld_attachment> like line of ct_attachment
  <ls_usrcd> like line of lt_usrcd.

loop at lt_usrcd assigning <ls_usrcd>.
  append initial line to lt_string assigning <ld_string>.
  concatenate <ls_usrcd>-bname <ls_usrcd>-modda <ls_usrcd>-modti
    into <ld_string> separated by cl_abap_char_utilities=>horizontal_tab.
endloop.

concatenate lines of lt_string into lv_string separated by cl_abap_char_utilities=>cr_lf.

while lv_string is not initial.
  append initial line to ct_attachment assigning <ld_attachment>.
  
  call function 'TEXT_SPLIT'
    EXPORTING
      length = 255
      text = lv_string
    IMPORTING
      line = <ld_attachment>
      rest = lv_string.
endwhile.
Wie schon gesagt: Zuerst den STRING FERTIGSTELLEN und erst DANACH SPLITEN.

lg ADT

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

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.18
Basis: 7.50

Re: Mailversand - Excel-Ausgabe

Beitrag von honeyjam (ForumUser / 43 / 11 / 0 ) »
Hi ADT,
super - vielen Dank.
Habe dein Stückchen Coding eingebaut. Das ging auch soweit ganz gut.
Nur beim ausführen bzw. im Debugging verabschiedet er sich.
Unzwar ist das diese Stelle:
Debugging_1.PNG

Hast du da eine Idee, warum er sich verabschiedet?


LG
Lisa

Re: Mailversand - Excel-Ausgabe

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Die Fehlermeldung sagt doch an sich allles.

lv_string darf nicht als String deklariert sein.

Re: Mailversand - Excel-Ausgabe

Beitrag von honeyjam (ForumUser / 43 / 11 / 0 ) »
Hi km216,
hab´s jetzt auch bemerkt.
Danke für den Tipp.
Hab´s abgeändert und es funktioniert soweit ganz gut, nur das er nur drei Datensätze ausgibt, anstatt z.B. zwölf.
Muss mir das genauer mal im Debugging anschauen, warum er nach dem dritten mal aussteigt....
Die Formatierung (TEXT_SPLIT) funktioniert einwandfrei - nur es werden nicht alle Datensätze angezeigt...

Re: Mailversand - Excel-Ausgabe

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Hey,

meinst du damit dass er dir nur noch 3 in die Excel-Liste schreibt?
Weil vorher warens zumindest deinen Bildern nach mehr ;)
Schau halt mal im Debugging, was in der internen Tabelle genau drinsteht, sonst poste mal bitte den Code, wo du die Daten an Excel übergibst, vielleicht find ich ja nochmal was :-)

Re: Mailversand - Excel-Ausgabe

Beitrag von honeyjam (ForumUser / 43 / 11 / 0 ) »
Hi km216,
ja das meinte ich damit - in Excel werden nur die ersten drei Datensätze angezeigt, obwohl es 12 Datensätze sind.
In der Tabelle LT_STRING m Debugging sehe ich meine 12 Datensätze. Aber warum ich nur drei angezeigt bekomme... keine Ahnung

Hier das Unterprogramm für die Anhang_aufbereiten:
Vielleicht sieht du mehr als ich :-)

Danke

LG Lisa





form anhang_aufbereiten tables pt_cdred_output
using value(pv)
changing ct_attachment type gyt_attachment.

data: lt_usrcdt type table of usrcdt with header line,
lt_usrcd type table of usrcd with header line.

DATA: lt_string TYPE stringtab,
lv_string(255),
* lv_attachment like LINE OF ct_attachment.
lv_attachment(255).


field-symbols:
<ld_string> type string,
<ls_usrcd> like line of lt_usrcd.


lt_usrcd[] = pt_cdred_output[].

loop at lt_usrcd assigning <ls_usrcd>.
append initial line to lt_string assigning <ld_string>.
concatenate <ls_usrcd>-bname <ls_usrcd>-modda <ls_usrcd>-modti
into <ld_string> separated by cl_abap_char_utilities=>horizontal_tab.
endloop.

concatenate lines of lt_string into lv_string separated by cl_abap_char_utilities=>cr_lf.

while lv_string is not initial.
call function 'TEXT_SPLIT'
EXPORTING
length = 255
text = lv_string
IMPORTING
line = lv_attachment
rest = lv_string.

append lv_attachment to ct_attachment.
endwhile.


endif.

endform. " anhang_aufbereiten

Re: Mailversand - Excel-Ausgabe

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
lv_string ist zu kurz ;)

Aber für meine Lösung musst du eigentlich zwingend einen String verwenden da man nicht genau sagen kann wie groß das Excel wird :(

Hier ein vereinfachtes Text-Split das auch für strings funktioniert:
--- EDIT ---
Moved to http://www.abapforum.com/forum/viewtopi ... 18&t=17381
-------------
Das musst du dann nur noch so aufrufen:

Code: Alles auswählen.

perform split_text using lv_string changing ct_attachment
lg ADT
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.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

2
Antw.
3548
Views
Mailversand mit Excel-Anhang
von honeyjam » 26.08.2011 08:38 • Verfasst in ABAP® für Anfänger
1
Antw.
1502
Views
ABAP mit EXCEl-Ausgabe
von Tellerchen58 » 27.08.2012 14:24 • Verfasst in ABAP® Core
0
Antw.
1964
Views
Kopfzeile bei ALV-Ausgabe in Excel
von KleinerEisbaer » 07.10.2010 22:09 • Verfasst in ABAP® Core
6
Antw.
1732
Views
Keine Ausgabe nach Excel einlesen
von SaskuAc » 18.08.2015 16:14 • Verfasst in ABAP® für Anfänger
1
Antw.
1714
Views
Ausgabe einer Excel-Datei nach outlook
von KlausB » 10.07.2008 10:50 • Verfasst in ABAP® für Anfänger

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 3 Tagen von Bright4.5 1 / 776
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2395
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8983