CSV-Datei als E-mail versenden

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

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

Re: CSV-Datei als E-mail versenden

Beitrag von Bright4.5 (Specialist / 267 / 21 / 1 ) »
Hey, Danke.

Ich hab das Coding jetzt mal kopiert und meine E-Mail-Adresse zum Test eingefügt. Leider kommt nichts an....

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


Re: CSV-Datei als E-mail versenden

Beitrag von Bright4.5 (Specialist / 267 / 21 / 1 ) »

Code: Alles auswählen.

CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
    EXPORTING
      i_field_seperator    = ';'
    TABLES
      i_tab_sap_data       = gt_ausgabe
    CHANGING
      i_tab_converted_data = i_tab_converted_data
    EXCEPTIONS
      conversion_failed    = 1.
die Tabelle gt_ausgabe wäre die, die ich gerne versenden würde...

Re: CSV-Datei als E-mail versenden

Beitrag von Bright4.5 (Specialist / 267 / 21 / 1 ) »
Einfach nur mal zum Testen sollte doch wenn ich hier:

* Empfänger
gv_email = 'test@test.de'.

eine E-Mail-Adresse einfüge von mir um zu schauen ob es soweit funktioniert, sollte es doch eigentlich klappen, oder?

Re: CSV-Datei als E-mail versenden

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Nicht unbedingt. Bei uns werden von der Entwicklungsumgebung keine Mails versendet. Das wird bei den meisten bestimmt ebenso sein. Aber du kannst mal in der SOST schauen, ob es einen Sendeauftrag gibt, die müssten eigentlich immer erstellt werden.
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: CSV-Datei als E-mail versenden

Beitrag von Bright4.5 (Specialist / 267 / 21 / 1 ) »
hmm mit dem Code hat ein E-Mail Versand funktioniert aus der Enwicklungsumgebung

Code: Alles auswählen.

DATA: lv_recipient TYPE adr6-smtp_addr.
DATA: lv_subject TYPE string.

lv_recipient = 'email@email.com'.
lv_subject = 'Testemail'.

DATA(lv_html_text) = VALUE string( ).

lv_html_text = |<BODY> | &&
 |<P><B>Test</B></BR>| &&
 |</BODY>|.

DATA(it_body_txt) = cl_document_bcs=>string_to_soli( ip_string = lv_html_text ).

TRY.
* it_body_txt beinhaltet die Zeilen des Body-Textes
* die Zeilen sind jeweils char255 Zeichen lang
* eine Zeile (line) ist vom Typ SOLI

* Document (Mail) erzeugen
* Email-Subject (i_subject) darf hier max. 50 Zeichen lang sein (Subject-Darstellung in der SOST)
* die "richtige" Übergabe des Email-Subjects erfolgt weiter unten in der Funktion set_message_subject( )
 DATA(o_document) = cl_document_bcs=>create_document( i_type = 'HTM'
 i_text = it_body_txt
 i_subject = CONV so_obj_des( lv_subject ) ).

* Sendrequest erzeugen
 DATA(o_send_request) = cl_bcs=>create_persistent( ).
* Email-Subject festlegen, ip_subject ist vom Typ String
 o_send_request->set_message_subject( ip_subject = lv_subject ).
* Die Mail an den Sendrequest hängen
 o_send_request->set_document( o_document ).

* SAP-User als Sender
 DATA(o_sender) = cl_sapuser_bcs=>create( sy-uname ).
* Email-Adresse als Sender
* DATA(o_sender) = cl_cam_address_bcs=>create_internet_address( i_address_string = 'email@email.com' ).
 o_send_request->set_sender( o_sender ).

* Empfänger -> beachte: u.U. sind Email-Adressen mit Umlauten nicht zulässig -> Exception
 DATA(o_recipient) = cl_cam_address_bcs=>create_internet_address( lv_recipient ).
 o_send_request->add_recipient( i_recipient = o_recipient
 i_express = abap_true
 " i_copy = abap_true " CC
 " i_blind_copy = abap_true " BCC
 ).

* Sofort senden
 o_send_request->set_send_immediately( abap_true ).

* Dokument senden
 IF o_send_request->send( i_with_error_screen = abap_true ) = abap_true.
 WRITE: / 'Email gesendet.'.
 ELSE.
 WRITE: / 'Fehler beim Email-Versand.'.
 ENDIF.

* Persistenzdienste des Objektes starten, sonst wird ggf. die Mail nicht gesendet
 COMMIT WORK.

 CATCH cx_root INTO DATA(e_text).
 WRITE: / e_text->get_text( ).
ENDTRY.

Re: CSV-Datei als E-mail versenden

Beitrag von DeathAndPain (Top Expert / 1806 / 214 / 396 ) »
Das wäre aber schlimm, denn das würde bedeuten, dass bei Testen von Code irgendwelche Emails in der Gegend rumfliegen und die Empfänger verunsichern können.

Der periodische Job, der den Versand aus der SOST-Queue durchführt, sollte nur im Produktivsystem eingeplant werden. Bei Bedarf kann man einzelne Emails aus der Transaktion SOST händisch abschicken, um zu sehen, wie sie aussehen, wenn sie ankommen.

Re: CSV-Datei als E-mail versenden

Beitrag von Bright4.5 (Specialist / 267 / 21 / 1 ) »
hmm aber so kann ich es wenigstens testen, ob auch wirklich die E-Mail richtig ankommt :)

Weiß denn jemand, wie ich mit dem Code hier meine interne Tabelle versenden kann ??

Oder weiß jemand wie ich eine CSV-Datei in einen String umwandeln kann ???

Code: Alles auswählen.

DATA: lv_recipient TYPE adr6-smtp_addr.
DATA: lv_subject TYPE string.

lv_recipient = 'email@email.com'.
lv_subject = 'Testemail'.

DATA(lv_html_text) = VALUE string( ).

lv_html_text = |<BODY> | &&
 |<P><B>Test</B></BR>| &&
 |</BODY>|.

DATA(it_body_txt) = cl_document_bcs=>string_to_soli( ip_string = lv_html_text ).

TRY.
* it_body_txt beinhaltet die Zeilen des Body-Textes
* die Zeilen sind jeweils char255 Zeichen lang
* eine Zeile (line) ist vom Typ SOLI

* Document (Mail) erzeugen
* Email-Subject (i_subject) darf hier max. 50 Zeichen lang sein (Subject-Darstellung in der SOST)
* die "richtige" Übergabe des Email-Subjects erfolgt weiter unten in der Funktion set_message_subject( )
 DATA(o_document) = cl_document_bcs=>create_document( i_type = 'HTM'
 i_text = it_body_txt
 i_subject = CONV so_obj_des( lv_subject ) ).

* Sendrequest erzeugen
 DATA(o_send_request) = cl_bcs=>create_persistent( ).
* Email-Subject festlegen, ip_subject ist vom Typ String
 o_send_request->set_message_subject( ip_subject = lv_subject ).
* Die Mail an den Sendrequest hängen
 o_send_request->set_document( o_document ).

* SAP-User als Sender
 DATA(o_sender) = cl_sapuser_bcs=>create( sy-uname ).
* Email-Adresse als Sender
* DATA(o_sender) = cl_cam_address_bcs=>create_internet_address( i_address_string = 'email@email.com' ).
 o_send_request->set_sender( o_sender ).

* Empfänger -> beachte: u.U. sind Email-Adressen mit Umlauten nicht zulässig -> Exception
 DATA(o_recipient) = cl_cam_address_bcs=>create_internet_address( lv_recipient ).
 o_send_request->add_recipient( i_recipient = o_recipient
 i_express = abap_true
 " i_copy = abap_true " CC
 " i_blind_copy = abap_true " BCC
 ).

* Sofort senden
 o_send_request->set_send_immediately( abap_true ).

* Dokument senden
 IF o_send_request->send( i_with_error_screen = abap_true ) = abap_true.
 WRITE: / 'Email gesendet.'.
 ELSE.
 WRITE: / 'Fehler beim Email-Versand.'.
 ENDIF.

* Persistenzdienste des Objektes starten, sonst wird ggf. die Mail nicht gesendet
 COMMIT WORK.

 CATCH cx_root INTO DATA(e_text).
 WRITE: / e_text->get_text( ).
ENDTRY.

Re: CSV-Datei als E-mail versenden

Beitrag von A6272 (Specialist / 231 / 6 / 36 ) »
Hallo,

CSV-Datei in einen String umwandeln, grob folgende Logik:

loop über die einzelnen Zeilen der CSV
concatenate String "Zeile der CSV" into String
Ende Loop

ggf. ist noch ein LF oder CR am Zeilenende erforderlich, je nachdem, ob es schon in "Zeile der CSV" enthalten ist oder nicht.

Grüße
Alex

Re: CSV-Datei als E-mail versenden

Beitrag von Bright4.5 (Specialist / 267 / 21 / 1 ) »
Das ist ja was ich bei dem Funktionsbaustein mit der E-Mail herausbekommen "siehe Code".
Jetzt bräuchte ich eine Möglichkeit, anstatt dies meine Tabelle in CSV-Format auszugeben.

Gibt es einen Methodenaufruf mit dem das geht?

Ich bin mit dem Problem schon völlig entnervt.

Code: Alles auswählen.

DATA(lv_html_text) = VALUE string( ).

*lv_html_text = |<BODY> | &&
* |<P><B>Test</B></BR>| &&
* |</BODY>|.
*
DATA(it_body_txt) = cl_document_bcs=>string_to_soli( ip_string = string ).

Re: CSV-Datei als E-mail versenden

Beitrag von Bright4.5 (Specialist / 267 / 21 / 1 ) »
oder wo pfleg ich den die interne Tabelle die ich ausgeben möchte sowie den Empfänger (also die E-Mail-Adresse) an den die E-Mail gesendet werden soll ein, mit den 3 Funktionsbausteinen von DeathAndPain. Dann versuch ich es mit den Funktionsbausteinen nochmal.

Re: CSV-Datei als E-mail versenden

Beitrag von Thomas R. (Expert / 754 / 74 / 34 ) »
Hallo Bright4.5,
manchmal habe ich den Eindruck, dass Du wie die Bohne Interesse daran hast eine Transferleistung zu erbringen.
Du fragst nach dem Empfänger - und hast einen Parameter RECIPIENTS STRUCTURE ZHR_EMAILEMPFAENGER im FuBa Z_EMAIL_INIT.
Du fragst nach der Tabelle - und hast einen Parameter DOKUMENT_IM_XLS_FORMAT im FuBa Z_EMAIL_ANHANG_XLS.

MfG
Thomas R.

Re: CSV-Datei als E-mail versenden

Beitrag von Bright4.5 (Specialist / 267 / 21 / 1 ) »
interessiert bin ich daran schon. Es funktioniert nur einfach kein einziges Funktionsbaustein oder Methode. Die Funktionsbausteine von D&P sind leider teilweise obsolet und ich müsste einiges umschreiben, was mich als Anfänger auch etwas überfordern würde. Ich denke, dass es sicherlich einen Funktionsbaustein geben müsste, bei dem man nur die gewünschte E-Mail-Adresse umändern muss und die interne Tabelle übergeben und es sollte eigentlich funktionieren.... Leider suche ich vergeblich :/

Re: CSV-Datei als E-mail versenden

Beitrag von black_adept (Top Expert / 3950 / 105 / 886 ) »
@Bright: Wo suchst du denn vergeblich? SAP selber stellt dir doch Demoprogramme zur Verfügung.
Folgende Demoprogramme versenden Emails inkl. Attachment - insbes. BCS_EXAMPLE_7 sollte schon fast das machen was du brauchst und das Coding ist nahezu trivial:
  • BCS_EXAMPLE_2 BCS Use, Example 2
  • BCS_EXAMPLE_5 BCS Use, Example 5 (Winword Attachment)
  • BCS_EXAMPLE_7 BCS: Send E-Mail with Self-Created Excel Attachment (Example)
  • BCS_TEST01 BCS Test: Various Send Settings
  • BCS_TEST02 Office Document -> MIME -> Office Document
  • BCS_TEST03 Inbound Processing Test
  • BCS_TEST04 BCS Test: Send Screen
  • BCS_TEST05 BCS Test: Binary Attachment
  • BCS_TEST06 BCS Use, Example 1
  • BCS_TEST10 BCS Test: Various Send Settings and Status Return
  • BCS_TEST11 Test: Copy Methods
DeathAndPain hat geschrieben:Das wäre aber schlimm, denn das würde bedeuten, dass bei Testen von Code irgendwelche Emails in der Gegend rumfliegen und die Empfänger verunsichern können.
Vielleicht ist es ja gar nicht so schlimm wie es aussieht. Auf diversen Kundensystemen die ich kenne, wurde in der SCOT der SMTP-Knoten so eingestellt, dass in nicht-Produktivsystemen Emails nur an firmeninterne Emailadressen und explizit gelistete Einzeladressen ( z.B. meine )geschickt werden können und der Rest auf Fehler läuft. ( Und wenn man gewisse eigengestrickte Bausteine verwendet wird auf nichtproduktiven Systemem noch ein Extratext eingefügt in Betreff und Mailtext, der darauf hinweist, dass es ein Test ist )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: CSV-Datei als E-mail versenden

Beitrag von Bright4.5 (Specialist / 267 / 21 / 1 ) »
Hallo black_adept,

vielen Dank schon mal für die Zusendung.

Ja, genau und dort bekomm ich folgenden Quellcode:

Code: Alles auswählen.

report bcs_example_7.

* This report provides an example for sending an Excel
* attachment in Unicode Systems

constants:
  gc_tab  type c value cl_bcs_convert=>gc_tab,
  gc_crlf type c value cl_bcs_convert=>gc_crlf.

parameters:
  mailto type ad_smtpadr
   default 'john.doe@crazy-company.com'.                    "#EC *

data send_request   type ref to cl_bcs.
data document       type ref to cl_document_bcs.
data recipient      type ref to if_recipient_bcs.
data bcs_exception  type ref to cx_bcs.

data main_text      type bcsy_text.
data binary_content type solix_tab.
data size           type so_obj_len.
data sent_to_all    type os_boolean.

start-of-selection.
  perform create_content.
  perform send.

*&---------------------------------------------------------------------*
*&      Form  send
*&---------------------------------------------------------------------*
form send.

  try.

*     -------- create persistent send request ------------------------
      send_request = cl_bcs=>create_persistent( ).

*     -------- create and set document with attachment ---------------
*     create document object from internal table with text
      append 'Hello world!' to main_text.                   "#EC NOTEXT
      document = cl_document_bcs=>create_document(
        i_type    = 'RAW'
        i_text    = main_text
        i_subject = 'Test Created By BCS_EXAMPLE_7' ).      "#EC NOTEXT

*     add the spread sheet as attachment to document object
      document->add_attachment(
        i_attachment_type    = 'xls'                        "#EC NOTEXT
        i_attachment_subject = 'ExampleSpreadSheet'         "#EC NOTEXT
        i_attachment_size    = size
        i_att_content_hex    = binary_content ).

*     add document object to send request
      send_request->set_document( document ).

*     --------- add recipient (e-mail address) -----------------------
*     create recipient object
      recipient = cl_cam_address_bcs=>create_internet_address( mailto ).

*     add recipient object to send request
      send_request->add_recipient( recipient ).

*     ---------- send document ---------------------------------------
      sent_to_all = send_request->send( i_with_error_screen = 'X' ).

      commit work.

      if sent_to_all is initial.
        message i500(sbcoms) with mailto.
      else.
        message s022(so).
      endif.

*   ------------ exception handling ----------------------------------
*   replace this rudimentary exception handling with your own one !!!
    catch cx_bcs into bcs_exception.
      message i865(so) with bcs_exception->error_type.
  endtry.

endform.                    "send

*&---------------------------------------------------------------------*
*&      Form  create_content
*&---------------------------------------------------------------------*
* Create Example Content
* 1) Write example text into a string
* 2) convert this string to solix_tab
*----------------------------------------------------------------------*
form create_content.

  data lv_string type string.
  data ls_t100 type t100.

* --------------------------------------------------------------
* as example content we use some system messages out of t100
* get them for all installed languages from db
* and write one line for each language into the spread sheet

* columns are separated by TAB and each line ends with CRLF

  concatenate 'This Is Just Example Text!'                  "#EC NOTEXT
              gc_crlf gc_crlf
              into lv_string.

* header line
  concatenate lv_string
              'MSGID'    gc_tab
              'MSGNO'    gc_tab
              'Language' gc_tab                             "#EC NOTEXT
              'Text'     gc_crlf                            "#EC NOTEXT
              into lv_string.

* data lines
  select * from t100 into ls_t100
    where arbgb = 'SO' and msgnr = '182'.

    concatenate lv_string
                ls_t100-arbgb gc_tab
                ls_t100-msgnr gc_tab
                ls_t100-sprsl gc_tab
                ls_t100-text  gc_crlf
                into lv_string.

  endselect.

  select * from t100 into ls_t100
    where arbgb = 'SO' and msgnr = '316'.

    concatenate lv_string
                ls_t100-arbgb gc_tab
                ls_t100-msgnr gc_tab
                ls_t100-sprsl gc_tab
                ls_t100-text  gc_crlf
                into lv_string.

  endselect.

* --------------------------------------------------------------
* convert the text string into UTF-16LE binary data including
* byte-order-mark. Mircosoft Excel prefers these settings
* all this is done by new class cl_bcs_convert (see note 1151257)

  try.
      cl_bcs_convert=>string_to_solix(
        exporting
          iv_string   = lv_string
          iv_codepage = '4103'  "suitable for MS Excel, leave empty
          iv_add_bom  = 'X'     "for other doc types
        importing
          et_solix  = binary_content
          ev_size   = size ).
    catch cx_bcs.
      message e445(so).
  endtry.

endform.                    "create_content

*---------------------------------------------------------------
* NOTES:
*---------------------------------------------------------------
* UTF-16LE including the BOM (Byte order mark)
* is preferred by Microsoft Excel. If you want to create
* other binary content you may choose another codepage (e.g.
* '4110' (UTF-8) which is standard for e-mails).
* Find SAP codepage names in the drop down list
* for the codepage setting of node SMTP in transaction SCOT.
* Or: leave iv_codepage and iv_add_bom empty. Then the target
* codepage is set according to SAPconnect settings
*
* Important:
* SAP neither guarantees that the attachment created
* by this report can be opened by all Excel Versions nor
* that it can be opened by any 3rd party software at all
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174




und wenn ich hier anstatt 'john.doe@crazy-company.com'. meine E-Mail-Adresse eintrage, und einfach versuchen möchte ob was ankommt. Kommt einfach nichts....

oder funktioniert das bei jemandem hier???

Re: CSV-Datei als E-mail versenden

Beitrag von black_adept (Top Expert / 3950 / 105 / 886 ) »
Bei mir landet nach Ausführen des Programms ein neuer Eintrag in der SOST, der dann halt von dort versendet werden kann ( falls der SMTP-Knoten es erlaubt )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Vergleichbare Themen

0
Antw.
1097
Views
Archiv-Datei per Mail versenden
von alanio » 28.06.2010 14:10 • Verfasst in ABAP® Core
2
Antw.
142
Views
E-Mail-Anhang aus Verzeichnis per Mail versenden
von Patrick1982 » 22.11.2023 15:19 • Verfasst in ABAP® für Anfänger
5
Antw.
3104
Views
E-Mail versenden aus PBO / PAI
von drkasper » 24.04.2007 11:20 • Verfasst in Dialogprogrammierung
2
Antw.
1905
Views
4.7 Mail versenden
von Baltasa » 06.03.2006 10:33 • Verfasst in ABAP® Core
3
Antw.
2104
Views
Einrichten zum Mail versenden
von Tommad » 28.05.2004 13:58 • Verfasst in Basis

Ü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

Aktuelle Forenbeiträge

Updates der Daten, Fehlermeldung
vor 15 Stunden von Egzon gelöst 1 / 42
Wie benutze ich COMMIT WORK richtig
vor 2 Tagen von msfox 17 / 427

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.

Aktuelle Forenbeiträge

Updates der Daten, Fehlermeldung
vor 15 Stunden von Egzon gelöst 1 / 42
Wie benutze ich COMMIT WORK richtig
vor 2 Tagen von msfox 17 / 427

Unbeantwortete Forenbeiträge

Updates der Daten, Fehlermeldung
vor 15 Stunden von Egzon 1 / 42
Zwischensumme Adobe Forms
vor 5 Wochen von Lucyalison 1 / 268
Group Items auf einer Filterbar
letzen Monat von Bright4.5 1 / 320