Mail mit Anhang versenden

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

Mail mit Anhang versenden

Beitrag von jokabi (ForumUser / 23 / 5 / 0 ) »
Hallo zusammen.

Habe nochmal einen Schritt zurück gemacht ;-)
Ich möchte eine Mail senden, die die ersten 200 Zeilen von 'SPFLI' als csv-Datei im Anhang haben soll.

Dazu wollte ich die Klassen cl_bcs bzw. cl_document_bcs verwenden.

Mein Code sieht jetzt folgendermaßen aus:

Code: Alles auswählen.

 
DATA: send_request       TYPE REF TO cl_bcs.
DATA: text               TYPE bcsy_text.
DATA: document           TYPE REF TO cl_document_bcs.
DATA: sender             TYPE REF TO cl_sapuser_bcs.
DATA: recipient          TYPE REF TO if_recipient_bcs.
DATA: bcs_exception      TYPE REF TO cx_bcs.
DATA: sent_to_all        TYPE os_boolean,
      lv_file            TYPE c LENGTH 50,
      lz_table           type TABLE OF spfli.


SELECT * UP TO 1000 ROWS FROM spfli INTO TABLE lz_table.
  TRY.
*     -------- create persistent send request ------------------------
      send_request = cl_bcs=>create_persistent( ).


*     -------- create and set document -------------------------------
*     create document from internal table with text
      APPEND 'Hello world!' TO text.
      document = cl_document_bcs=>create_document(
                      i_type    = 'RAW'
                      i_text    = text
                      i_length  = '12'
                      i_subject = 'test created by BCS_EXAMPLE_1' ).

lv_file = 'Testanhang'.
    document->add_attachment(
            i_attachment_type    = 'RAW'                    "#EC NOTEXT
            i_attachment_subject = lv_file                  "#EC NOTEXT
            i_att_content_text    = lz_table ).
          CATCH cx_document_bcs.
            MESSAGE 'Table not attached' TYPE 'I'.

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

*     --------- set sender -------------------------------------------
*     note: this is necessary only if you want to set the sender
*           different from actual user (SY-UNAME). Otherwise sender is
*           set automatically with actual user.

      sender = cl_sapuser_bcs=>create( sy-uname ).
      CALL METHOD send_request->set_sender
        EXPORTING
          i_sender = sender.

*     --------- add recipient (e-mail address) -----------------------
*     create recipient - please replace e-mail address !!!
      recipient = cl_cam_address_bcs=>create_internet_address(
                                        'blabla@bla.com').

*     add recipient with its respective attributes to send request
      CALL METHOD send_request->add_recipient
        EXPORTING
          i_recipient = recipient
          i_express   = 'X'.

*     ---------- send document ---------------------------------------
      CALL METHOD send_request->send(
        EXPORTING
          i_with_error_screen = 'X'
        RECEIVING
          result              = sent_to_all ).
      IF sent_to_all = 'X'.
        WRITE text-003.
      ENDIF.

      COMMIT WORK.


Das funktioniert so nicht, da der Anhang als Tabelle typunkompatibel ist. Wie konvertiere ich denn eine Tabelle in den richtigen Typen? Und was gebe ich an, wenn ich eine csv-Datei daraus machen will? Funktioniert so etwas?

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


Re: Mail mit Anhang versenden

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
Guck dir mal den Report BCS_EXAMPLE_7 an, der sollte dich in die richtige Richtung führen.
Gruß
Frank

Re: Mail mit Anhang versenden

Beitrag von jokabi (ForumUser / 23 / 5 / 0 ) »
Hey danke!
Das hat echt geholfen :-)
Jetzt habe ich ein neues Problem: Ich habe das ganze erweitert für 'beliebige' Tabellen anstelle der SPFLI, die ich über einen Fieldcatalog beschreibe.

In dem Beispiel werden im concatenate ja immer explizit die Tabellenfelder aufgerufen:

Code: Alles auswählen.

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.
Ich müsste das ganze ja irgendwie über einen doppelten Loop machen:

Code: Alles auswählen.

 SELECT * UP TO 1000 ROWS FROM (db_tab) INTO TABLE lz_table.

        LOOP AT lz_table INTO <ls_tablecontent>.
Loop at fieldcatalog into ls_fieldcatalog.
            concatenate lv_string gc_tab <ls_tablecontent>-(fieldcatalog-fieldname) ?
endloop.
        ENDLOOP.

Aber so kann ich ja nicht auf die Tabelleninhalte zugreifen. (Also da, wo das '?' ist.) Gibt es da eine Möglichkeit?

Re: Mail mit Anhang versenden

Beitrag von a-dead-trousers (Top Expert / 4394 / 223 / 1182 ) »
ASSIGN COMPONENT ... OF STRUCTURE ... TO ...
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.
823
Views
E-Mail-Anhang aus Verzeichnis per Mail versenden
von Patrick1982 » 22.11.2023 15:19 • Verfasst in ABAP® für Anfänger
1
Antw.
5603
Views
2
Antw.
4053
Views
Mail versenden aus SAP (ohne Anhang)
von Schäfer_anfänger » 25.01.2017 07:45 • Verfasst in ABAP® für Anfänger
1
Antw.
6265
Views
Versand einer E-Mail aus SAP mit PDF Anhang und E-Mail Text
von Haubentaucher » 31.08.2006 07:28 • Verfasst in ABAP® Core
5
Antw.
4660
Views
Email mit Anhang versenden
von funky_escobar » 27.08.2007 09:44 • Verfasst in ABAP® Core

Über diesen Beitrag


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

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1575
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8182