Interne Tabelle als Excel-Anhang verschicken

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Interne Tabelle als Excel-Anhang verschicken

Beitrag von Sandra ( / / 0 / 3 ) »
Hallo zusammen,

ich versuche mit dem FuBa SO_NEW_DOCUMENT_ATT_SEND_API1 einen Excel-Anhang zu erzeugen. Nun stellt er aber alle Inhalte von contents_bin in eine einzige Excel-Zelle rein. Wie kann ich Spalten- und Zeilenwechsel mitgeben? Oder wie kann ich am besten eine interne Tabelle als Excel-Anhang versenden?

Vielen Dank schon mal für jede Hilfe!

Grüßle Sandra

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


Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hi Sandra,

da gibt's mehrere Ansätze:

1) erstellen csv-Datei und versenden mit SO_NEW_DOCUMENT_ATT_SEND_API1 :arrow: einfacher


2) erstellen xls-file mit OLE
https://www.sdn.sap.com/irj/servlet/prt ... mation.pdf
und versenden der Datei mit o.g. fuba


Gruß Andreas

Beitrag von Sandra ( / / 0 / 3 ) »
Hallo Andreas,

dankeschön für Deine Antwort!

1)Eine csv-Datei hab ich auch schon probiert, aber einen Zeilenwechsel habe ich da auch nicht hingekriegt. Gibts irgendein Steuerzeichen, was ich mitgeben kann?

2)Mit dem OLE hab ich schon hingekriegt, dass er ein Excel auf einem Laufwerk speichert. Aber wie ich das verschickt kriegen soll, hab ich auch keine Ahnung. Aber vielleicht bringt mich ja Deine Doku weiter.

Grüßle Sandra

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo Sandra,

1) so erzeugst du eine Tabelle für einen download
oder zum verschicken als Anlage

LOOP AT itab.
CLEAR sendtab.
CONCATENATE itab-bukrs itab-kunnr
itab-msgnr itab-msgid
INTO sendtab-satz SEPARATED BY ';'.

APPEND sendtab.
endloop.

die Tab. sendtab übergibst du an contents_bin
(fb:SO_NEW_DOCUMENT_ATT_SEND_API1)

2) wenn die excel-Datei erstellt ist , lädst du sie mit fb gui_upload hoch (filetyp = BIN)
-> danach Übergabe an CONTENTS_hex
(hier fb : SO_DOCUMENT_SEND_API1)


Gruß Andreas

Beitrag von Sandra ( / / 0 / 3 ) »
Hallo Andreas,

1) Inzwischen habe ich zwar nicht mehr alles in einer Zelle, aber noch alles in einer Zeile. Wie kann ich nach dem "APPEND sendtab" mitgeben, dass nun eine neue Zeile im Excel kommen soll?

Danke für Deine Hilfe!

Grüßle Sandra

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hi Sandrea,

ich vermute, daß die Packliste von dir falsch ist.
orientiere dich mal hier dran :

Code: Alles auswählen.

* Create the document which is to be sent
  doc_chng-obj_name = 'List'.
  doc_chng-obj_descr = 'Betreff:...'.
*Text
  APPEND cu_mail-text TO objtxt.
  DESCRIBE TABLE objtxt LINES tab_lines.
  READ TABLE objtxt INDEX tab_lines.
  doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
* Fill the fields of the packing_list for the main document:
  CLEAR objpack-transf_bin.
  objpack-head_start = 1.
  objpack-head_num = 0.
  objpack-body_start = 1.
  objpack-body_num = tab_lines.
  objpack-doc_type = 'RAW'.
  APPEND objpack.

* Create the attachment (the list itself)
  DESCRIBE TABLE sendtab LINES tab_lines.
* Fill the fields of the packing_list for the attachment:
  objpack-transf_bin = 'X'.
* we need no header
  objpack-head_start = 1.
  objpack-head_num = 0.
* but a body
  objpack-body_start = 1.
  objpack-body_num = tab_lines.
* of type G_DOC_TYPE
  objpack-doc_type = g_doc_type.
  objpack-obj_name = 'Attachment'.

  CONCATENATE 'test_' save_sy-datum  INTO dsnout.
  CONDENSE dsnout NO-GAPS.
  objpack-obj_descr = dsnout(50).

  objpack-doc_size = tab_lines * 255.
  APPEND objpack.

Gruß Andreas

Beitrag von Sandra ( / / 0 / 3 ) »
Hi Andreas,

dankeschön für das Beispiel-Coding! Aber meine Packliste scheint leider zu passen.

Habe jetzt die CSV-Datei mal genauer untersucht: da steht der Inhalt einer itab-Zeile und dann kommen 200 Leerzeichen. Dann kommt der Inhalt der nächsten itab-Zeile und dann wieder 200 Leerzeichen. Ein Zeilenumbruch kommt in meiner CSV-Datei erst, wenn die Zeile voll ist.

Viele Grüße
Sandra

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo Sandra,

du solltest jetzt einmal das entspr. coding hier
(oder per PN) posten, damit man dir helfen kann.


Andreas

Beitrag von black_adept (Top Expert / 4086 / 126 / 940 ) »
Hallo Sandra,

ein Zeilenvorschub besteht üblicherweise aus den Zeichen "0A" und "0C" ( alles hexadezimal)
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Sandra ( / / 0 / 3 ) »
Hallo Stefan und Andreas,

wie gebe ich mit, dass "OA" und "OC" hexadezimal sind? Nur so anhängen funktioniert leider nicht, aber war eigentlich klar, sonst hättest das mit hexadezimal ja gar nicht geschrieben. Nur kapier ich das leider nicht.

Hier das Coding:

Grüßle Sandra

Code: Alles auswählen.

DATA: e_document_data LIKE sodocchgi1.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE.
DATA: t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
DATA: t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA: t_contents_txt LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA: t_contents_bin LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA: tab_lines LIKE sy-tabix.

DATA: test_itab LIKE TABLE OF vbak WITH HEADER LINE.
DATA: wa_vbak LIKE vbak.

SELECT * FROM vbak INTO wa_vbak
WHERE vbeln > '0000009053'
AND vbeln < '0000010000'.
  APPEND wa_vbak TO test_itab.
ENDSELECT.


* Daten für Mail
  e_document_data-obj_name = 'Test'.
  e_document_data-obj_descr = 'Test'.

  t_contents_txt = 'Hallo, usw'.
  APPEND t_contents_txt.

  DESCRIBE TABLE t_contents_txt LINES tab_lines.
  READ TABLE t_contents_txt INDEX tab_lines.
  e_document_data-doc_size = ( tab_lines - 1 ) * 255
  + STRLEN( t_contents_txt ).

  t_packing_list-head_start = 1.
  t_packing_list-head_num = 0.
  t_packing_list-body_start = 1.
  t_packing_list-body_num = tab_lines.
  t_packing_list-doc_type = 'RAW'.
  APPEND t_packing_list.

* Daten für Anhang
  LOOP AT test_itab.

    CONCATENATE test_itab-vbeln
    test_itab-erdat test_itab-erzet test_itab-ernam
    test_itab-angdt test_itab-bnddt test_itab-audat
    test_itab-vbtyp test_itab-trvog
    INTO t_contents_bin SEPARATED BY ';'.

    APPEND t_contents_bin.
  ENDLOOP.

  DESCRIBE TABLE t_contents_bin LINES tab_lines.

  t_packing_list-transf_bin = 'X'.
  t_packing_list-head_start = 1.
  t_packing_list-head_num = 0.
  t_packing_list-body_start = 1.
  t_packing_list-body_num = tab_lines.
  t_packing_list-doc_type = 'CSV'.
  t_packing_list-obj_name = 'ANLAGE'.
  t_packing_list-doc_size = tab_lines * 255.
  t_packing_list-obj_descr = 'Protokoll'.
  APPEND t_packing_list.


  t_receivers-receiver = 'empfaenger@test.de'.
  t_receivers-rec_type = 'U'.
  APPEND t_receivers.



  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data                    =  e_document_data
*                  PUT_IN_OUTBOX                    = ' '
*                IMPORTING
*                  SENT_TO_ALL                      =
*                  NEW_OBJECT_ID                    =
    TABLES
      packing_list                     = t_packing_list
      object_header                    = t_object_header
      contents_bin                     = t_contents_bin
      contents_txt                     = t_contents_txt
*                  CONTENTS_HEX                     =
*                  OBJECT_PARA                      =
*                  OBJECT_PARB                      =
      receivers                        = t_receivers
                  EXCEPTIONS
                    too_many_receivers               = 1
                    document_not_sent                = 2
                    document_type_not_exist          = 3
                    operation_no_authorization       = 4
                    parameter_error                  = 5
                    x_error                          = 6
                    enqueue_error                    = 7
                    OTHERS                           = 8.


Beitrag von black_adept (Top Expert / 4086 / 126 / 940 ) »
Hi Sandra,

bei den Datendefinitionen dies hier:

Code: Alles auswählen.

CONSTANTS: gcx_crlf(2) TYPE x VALUE '0A0C'.
und dann in der Schleife

Code: Alles auswählen.

* Daten für Anhang 
  LOOP AT test_itab. 

    CONCATENATE test_itab-vbeln 
    test_itab-erdat test_itab-erzet test_itab-ernam 
    test_itab-angdt test_itab-bnddt test_itab-audat 
    test_itab-vbtyp test_itab-trvog 
    INTO t_contents_bin SEPARATED BY ';'. 

********  Neu - Zeilenvorschub *****
    CONCATENATE t_contents_bin gcx_crlf INTO t_contents_bin .
    APPEND t_contents_bin. 
  ENDLOOP. 

Sorry - hab grad kein System unter den Fingern, aber sollte in etwa stimmen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Sandra ( / / 0 / 3 ) »
Super, vielen vielen Dank, inzwischen sieht mein Excel echt gut aus!

Jetzt ist nur noch in der ersten Spalte jeweils so ein Viereck (wahrscheinlich vom Zeilenumbruch-Steuerzeichen). Habt ihr da auch noch einen Spitzen-Tipp, wie ich das weg kriege?

Grüßle Sandra

Beitrag von black_adept (Top Expert / 4086 / 126 / 940 ) »
In diesem Fall probier statt "0A0C" nur "0A" oder nur "0C". Eins von beiden sollte das tun was du brauchst.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Sandra ( / / 0 / 3 ) »
Hallo Stefan,

supi, nur "OA" hat funktioniert!

Ein großes Dankeschön an Dich und natürlich auch Andreas für die Unterstützung in den letzten Tagen!!!

Grüßle Sandra

Beitrag von Jule ( / / 0 / 3 ) »
Hallo zusammen,
ich hab auch das Problem mit dem Zeilenumbruch und hab grade mal das mit dem Hexa-Einschub probiert, aber bei mir meckert er immer, dass bei CONCATENATE nur Zeichenartige Typen benutzt werden dürfen. Habt ihr vielleicht noch ne Idee?

Danke schonmal Julia

Vergleichbare Themen

12
Antw.
16533
Views
Excel-Datei als eMail-Anhang verschicken
von Raphael » 09.02.2005 10:02 • Verfasst in ABAP® Core
4
Antw.
4847
Views
Interne Tabelle als xls Datei per E-Mail verschicken
von Niko_BC » 28.06.2018 14:33 • Verfasst in ABAP® für Anfänger
0
Antw.
931
Views
Excel Tabelle über SAPConnect verschicken
von amjahid » 12.06.2008 15:25 • Verfasst in ABAP® Core
1
Antw.
1758
Views
Excel tabelle in interne tabelle uploaden
von thesaint » 16.02.2005 09:36 • Verfasst in Basis
4
Antw.
8080
Views
Upload aus Excel in interne Tabelle
von manuk » 30.05.2005 08:39 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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 8 Stunden von Bright4.5 1 / 159
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1799
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8403