gelöst ALV Tabelle als Excel in Mail versenden


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

gelöst ALV Tabelle als Excel in Mail versenden

Beitragvon Dyrdek » 16.01.2017, 09:34

Guten Morgen zusammen,

Ich muss ein Protokoll, welches als ALV ausgegeben wird, gleichzeitig als E-Mail an eine angegebene Adresse versenden.
Gibt es hier Funktionsbausteine oder eine andere Möglichkeit das umzusetzen?
Habe einen Vorschlag von einem Kollege erhalten aber aus irgendeinem Grund wird keine E-Mail versandt, obwohl der Bool-Wert für versendet auf True steht. :/

Hoffe jemand kann mir weiterhelfen oder hat eine andere Idee wie ich das Ganze umsetzen kann.
Danke schon mal im Voraus!

Gruß
Dominic

Der Vollständigkeit halber hier mein aktueller Code:
Code: Alles auswählen
FORM SEND_MAIL .
 
  CONSTANTS:
    gc_subject TYPE so_obj_des VALUE 'Anzhal Essenscheks',
    gc_raw     TYPE char03 VALUE 'RAW'.
 
  DATA:
    gv_sent_to_all   TYPE os_boolean,
    gv_email         TYPE adr6-smtp_addr,
    gv_text          TYPE bcsy_text,
    gr_send_request  TYPE REF TO cl_bcs,
    gr_bcs_exception TYPE REF TO cx_bcs,
    gr_recipient     TYPE REF TO if_recipient_bcs,
    gr_sender        TYPE REF TO cl_sapuser_bcs,
    gr_document      TYPE REF TO cl_document_bcs,
    lv_xlsx          TYPE XSTRING,
    lt_xml_tab       type solix_tab,
    lv_xml_length    type i,
    lv_xml_length_c  type sood-objlen.
 
 
  TRY.
      "Create send request
      gr_send_request = cl_bcs=>create_persistent( ).
 
 
      "Email FROM...
      gr_sender = cl_sapuser_bcs=>create( sy-uname ).
      "Add sender to send request
      CALL METHOD gr_send_request->set_sender
        EXPORTING
          i_sender = gr_sender.
 
 
      "Email TO...
      gv_email = p_mail.
      gr_recipient = cl_cam_address_bcs=>create_internet_address( gv_email ).
      "Add recipient to send request
      CALL METHOD gr_send_request->add_recipient
        EXPORTING
          i_recipient = gr_recipient
          i_express   = 'X'.
 
 
******  ---XLSX holen und aufbereiten---------------------------------------*
**********************************************************************
      lv_xlsx  = lo_alv_table->to_xml(
       xml_type    = if_salv_bs_xml=>c_type_xlsx
       xml_flavour = if_salv_bs_c_tt=>c_tt_xml_flavour_full "C_TT_XML_FLAVOUR_EXPORT
      ).
 
**********************************************************************
 
      CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
        EXPORTING
          buffer        = lv_xlsx
        IMPORTING
          output_length = lv_xml_length
        TABLES
          binary_tab    = lt_xml_tab
        EXCEPTIONS
          others        = 1.
 
      lv_xml_length_c = lv_xml_length.
 
 
      "Email BODY
      APPEND 'Tabelle mit Anzahl der Essenschecks' TO gv_text.
      gr_document = cl_document_bcs=>create_document(
                      i_type    = gc_raw
                      i_text    = gv_text
                      i_length  = '12'
                      i_subject = gc_subject ).
      "Add document to send request
 
      gr_document->ADD_ATTACHMENT(
                            I_ATTACHMENT_TYPE     = 'xls'
                            i_attachment_subject  = 'Essenschecks.xlsx'
                            i_att_content_hex    = lt_xml_tab
                            I_ATTACHMENT_SIZE  = lv_xml_length_c ).
 
      CALL METHOD gr_send_request->set_document( gr_document ).
 
 
      "Send email
      CALL METHOD gr_send_request->send(
        EXPORTING
          i_with_error_screen = 'X'
        RECEIVING
          result              = gv_sent_to_all ).
      IF gv_sent_to_all = 'X'.
*        WRITE 'Email sent!'.
      ENDIF.
 
      "Commit to send email
      COMMIT WORK.
 
 
      "Exception handling
    CATCH cx_bcs INTO gr_bcs_exception.
*      WRITE:
*        'Error!',
*        'Error type:',
*        gr_bcs_exception->error_type.
  ENDTRY.
 
ENDFORM.                    " SEND_MAIL
Dyrdek
Specialist
 
Beiträge: 287
Registriert: 06.02.2014, 11:06
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: ALV Tabelle als Excel in Mail versenden

Beitragvon a-dead-trousers » 16.01.2017, 11:17

Dyrdek hat geschrieben:Habe einen Vorschlag von einem Kollege erhalten aber aus irgendeinem Grund wird keine E-Mail versandt, obwohl der Bool-Wert für versendet auf True steht. :/

Das Coding verwende ich in einer ähnlicher Form selbst, daran kann es also nicht liegen. Ich denke eher an ein Konfigurationsproblem der Basis Komponenten für den Email-Versand.
Ist der Job für den Email-Versand eingerichtet? Ist der Email-Versand am System überhaupt eingerichtet? Ist für alle User ein zugehöriger SAPOffice-User angelegt worden? "Vertraut" (Trusted-Beziehung) der Mail-Server dem SAP-System und den darauf eingerichteten Benutzern?

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.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 2571
Registriert: 07.02.2011, 13:40
Dank erhalten: 581 mal
Ich bin: Entwickler/in

Re: ALV Tabelle als Excel in Mail versenden

Beitragvon black_adept » 16.01.2017, 11:41

Da du keinen Sofortversand eingeschaltet hast - steht die Email evtl. noch in der Queue ( Transaktion SOST )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2575
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 348 mal
Ich bin: Freiberufler/in

Re: ALV Tabelle als Excel in Mail versenden

Beitragvon Mole1986m » 16.01.2017, 11:45

wie black_adept bereits sagte, schau mal in der SOST nach ob die E-Mail in der Queue hängt.
Selektiere in der SOST unter Sendestatus auch die "Wartend" E-Mails oder evtl. auch unter Weitere "Noch kein Eintrag in der Warteschlange".
Mole1986m
ForumUser
 
Beiträge: 6
Registriert: 22.12.2015, 18:02
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: ALV Tabelle als Excel in Mail versenden

Beitragvon JHM » 16.01.2017, 11:48

a-dead-trousers hat geschrieben:Ist der Job für den Email-Versand eingerichtet? Ist der Email-Versand am System überhaupt eingerichtet? Ist für alle User ein zugehöriger SAPOffice-User angelegt worden? "Vertraut" (Trusted-Beziehung) der Mail-Server dem SAP-System und den darauf eingerichteten Benutzern?


Dafür schaut man doch mittels der TA SOST nach.
Ist dort ein Eintrag für die erzeugte eMail zufinden? Welcher Status/Fehlercode hat sie.

Wenn man auf sofort versenden stellt:
Code: Alles auswählen
     call method lr_send_request->set_send_immediately
        exporting
          i_send_immediately = 'X'.
 

Braucht es nicht zwingend einen Sendejob.

Beim Attachment scheint mir die Dateierweiterung noch falsch:
Code: Alles auswählen
gr_document->ADD_ATTACHMENT(
                            I_ATTACHMENT_TYPE     = 'xls'
                            i_attachment_subject  = 'Essenschecks'             "ohne Dateiendung
                            i_att_content_hex    = lt_xml_tab
                            i_attachment_header   = |&SO_FILENAME= Essenschecks.xlsx| "zusätzlich nochmal mit richtiger Dateiendung
                            I_ATTACHMENT_SIZE  = lv_xml_length_c ).
 
Gruß Hendrik
JHM
Top Expert
 
Beiträge: 1123
Registriert: 15.02.2006, 12:39
Wohnort: Aachen
Dank erhalten: 176 mal

Re: ALV Tabelle als Excel in Mail versenden

Beitragvon a-dead-trousers » 16.01.2017, 15:30

JHM hat geschrieben:
a-dead-trousers hat geschrieben:Ist der Job für den Email-Versand eingerichtet? Ist der Email-Versand am System überhaupt eingerichtet? Ist für alle User ein zugehöriger SAPOffice-User angelegt worden? "Vertraut" (Trusted-Beziehung) der Mail-Server dem SAP-System und den darauf eingerichteten Benutzern?

Dafür schaut man doch mittels der TA SOST nach.

Die TA kannte ich nicht. Hab das immer an die Basis-Truppe weiterdelegiert. :oops:
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
a-dead-trousers
Top Expert
 
Beiträge: 2571
Registriert: 07.02.2011, 13:40
Dank erhalten: 581 mal
Ich bin: Entwickler/in

Re: ALV Tabelle als Excel in Mail versenden

Beitragvon Dyrdek » 16.01.2017, 17:41

Ok danke euch für die Hilfe! :)
Habe den Fehler gefunden, ist mir wohl beim übertragen auf mein Projekt passiert.

Das Coding funktioniert einwandfrei.

In die SOST habe ich bereits reingeschaut und als ich meinen Fehler behoben habe wurden Sie da auch wie erwähnt in der Queue angezeigt.

Danke nochmal! Jetzt passt alles. :)
Schönen Feierabend!
Dyrdek
Specialist
 
Beiträge: 287
Registriert: 06.02.2014, 11:06
Dank erhalten: 0 mal
Ich bin: Entwickler/in


Zurück zu ABAP® Core

  Aktuelle Beiträge   
Pop-up Fenster/Button auf dem selection screen
vor 7 Stunden von JHM 2 Antw.
Große Umsatzprobe Differenz SAPF190
vor 3 Tagen von wreichelt 1 Antw.
gelöst CL_ABAP_CLASSDESCR und Syntaxfehler
vor 3 Tagen von GastX 4 Antw.
gelöst Parameter-ID für Z-Programme einrichten
vor 3 Tagen von Roddy 2 Antw.
PDF-Datei nach Upgrade deutlich zu groß
vor 5 Tagen von ewx 1 Antw.

  Ähnliche Beiträge beta
Interne Tabelle als Excel versenden
02.04.2004, 16:20 von Patricia 5 Antw.
Mail aus SAP versenden
08.09.2003, 15:16 von CaptainTom 3 Antw.
4.7 Mail versenden
06.03.2006, 15:44 von Baltasa 2 Antw.
gelöst Spoolaufträge per Mail versenden
22.06.2005, 11:58 von Asaph 2 Antw.
E-mail aus ABAP Report versenden
07.02.2006, 14:10 von Gast 1 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!