Send a PDF attachment in  plsql code.

Hi,
This is regarding automation process.
Im having a one OA request, it will do some insertions and deletions in some tables.
For example : t_tab is table consists of some rows.so i will query the table as
select * from t_tab
where create_date > '01-Jun-2012';
Now this query results should be stored in a PDF format file.and the same file i have to sent to the receiver.
I know how to send a text message ..But the requirement is to make a PDF format file and store the results as an attachment, and send it to receiver.
Please help me on this..

I hav to put (count(1) ) the sql results in pdf file.
and send that as attachment to one employee.
select count(1)
from t_tab
where create_date>'01-Jun-2012';
Is this possible without using any third party tools..only in PLSQL.
Version: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0

Similar Messages

  • Error during sending a PDF attachment of a mail

    Hi everebody,
                      I'm using a custom program [ see below ] ( in which there is the call to the std function SO_DOCUMENT_SEND_API1) to send a PDF attachment to an user's SAPOFFICE: in release 4.6C it works correctly but the same programm in ECC6 it doesn't work correctly.  I mean: the mail is sent correctly with the attachment, but when I try to open the attachment this one doesn't open correctly showing a PDF error message.
    Any help?
                gino bonfiglioli
    *& Report  Z_UT_CONVERT_SPOOL_PDF
    REPORT  z_ut_convert_spool_pdf.
    TABLES: tsp01.
    variabili globali
    *data: fm_name            type rs38l_fnam,
         output_options     type ssfcompop,
         control_parameters type ssfctrlop,
         job_output_info    type ssfcrescl,
         job_output_options type ssfcresop,
    DATA: spoolno            LIKE tsp01-rqident,
          dir_pdf            LIKE rlgrap-filename,
          numbytes           TYPE i,
          pagecount          TYPE i,
          w_cnt              TYPE i,
          wk_subrc           LIKE sy-subrc,
          pdfspoolid         LIKE tsp01-rqident,
          gd_buffer          TYPE string,
          pdf                LIKE tline OCCURS 100 WITH HEADER LINE,
          stampante          LIKE usr01-spld,
          tot_line   TYPE sy-tabix,
          tot_line2  TYPE sy-tabix,
          start_line TYPE sy-tabix.
    tabelle interne per 1a mail
    DATA: BEGIN OF it_email OCCURS 100.
            INCLUDE STRUCTURE solisti1.
    DATA: END OF it_email.
    DATA: BEGIN OF email_data.
            INCLUDE STRUCTURE sodocchgi1.
    DATA: END OF email_data.
    DATA: BEGIN OF email_send OCCURS 10.
            INCLUDE STRUCTURE somlreci1.
    DATA: END OF email_send.
    DATA: packing_list TYPE STANDARD TABLE OF sopcklsti1 WITH HEADER LINE,
          it_mess_att  LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          receivers    TYPE STANDARD TABLE OF somlreci1 WITH HEADER LINE.
    fine tabelle interne per 1a mail
    PARAMETER: p_spool LIKE tsp01-rqident.
    START-OF-SELECTION.
      PERFORM conversione_spool_pdf USING wk_subrc.
      IF wk_subrc EQ 0.
        PERFORM invio_mail.
      ENDIF.
    *&      Form  CONVERSIONE_SPOOL_PDF
          text
         -->P_P_SUBRC  text
    FORM conversione_spool_pdf  USING    p_subrc.
    **- Conversione in PDF
      CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
          EXPORTING
            src_spoolid                    = p_spool
            no_dialog                      = ' '
          DST_DEVICE                     =
          PDF_DESTINATION                =
          IMPORTING
            pdf_bytecount                  = numbytes
            pdf_spoolid                    = pdfspoolid
            otf_pagecount                  = pagecount
           btc_jobname                    = jobname
           btc_jobcount                   = jobcount
          TABLES
            pdf                            = pdf
          EXCEPTIONS
            err_no_otf_spooljob            = 1
            err_no_spooljob                = 2
            err_no_permission              = 3
            err_conv_not_possible          = 4
            err_bad_dstdevice              = 5
            user_cancelled                 = 6
            err_spoolerror                 = 7
            err_temseerror                 = 8
            err_btcjob_open_failed         = 9
            err_btcjob_submit_failed       = 10
            err_btcjob_close_failed        = 11.
      p_subrc = sy-subrc.
    ENDFORM.                    " CONVERSIONE_SPOOL_PDF
    *&      Form  invio_mail
          text
    -->  p1        text
    <--  p2        text
    FORM invio_mail .
    Transfer the 132-long strings to 255-long strings
      LOOP AT pdf.
        TRANSLATE pdf USING ' ~'.
        CONCATENATE gd_buffer pdf INTO gd_buffer.
      ENDLOOP.
      TRANSLATE gd_buffer USING '~ '.
      DO.
        it_mess_att = gd_buffer.
        APPEND it_mess_att.
        SHIFT gd_buffer LEFT BY 255 PLACES.
        IF gd_buffer IS INITIAL.
          EXIT.
        ENDIF.
      ENDDO.
    Testo della mail
      CLEAR it_email. REFRESH it_email.
      it_email-line = 'Testo della mail'.
      APPEND it_email.
    Creazione messaggio
      email_data-obj_name      = 'MESSAGE'.
      email_data-obj_descr     = 'Conversione spool n.'.
      email_data-obj_descr+26  = p_spool.
      email_data-obj_langu     = 'I'.
      email_data-sensitivty    = 'F'.
      READ TABLE it_mess_att INDEX w_cnt.
      email_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_mess_att ).
      start_line = 1.
      DESCRIBE TABLE it_email LINES tot_line.
      packing_list-transf_bin = ' '.
      packing_list-doc_type   = 'RAW'.
      packing_list-head_start = 1.
      packing_list-head_num   = 0.
      packing_list-body_start = 1.
      packing_list-body_num   = tot_line.
      packing_list-obj_langu  = sy-langu.
      APPEND packing_list.
      APPEND LINES OF it_mess_att TO it_email.
      CLEAR packing_list.
    Riga iniziale = ultima riga messaggio precedente + 1
      start_line = tot_line + 1.
      DESCRIBE TABLE it_mess_att LINES tot_line.
      packing_list-transf_bin = 'X'.
      packing_list-head_start = 1.
      packing_list-head_num   = 1.
      packing_list-body_start = 1.
      DESCRIBE TABLE it_mess_att LINES packing_list-body_num.
      packing_list-doc_type   = 'PDF'.
      packing_list-obj_descr  = 'Allegato PDF.'.
      packing_list-doc_size   =  packing_list-body_num * 255.
      packing_list-obj_langu  = sy-langu.
      APPEND packing_list.
    destinatario interno a SAP
      receivers-receiver = sy-uname.
      receivers-rec_type = 'B'.
      receivers-express = 'X'.
      APPEND receivers.
    destinatario esterno a SAP: deve essere un idirizzo email:
    receivers-receiver = '[email protected]'.
    receivers-rec_type = 'U'.
    APPEND receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
      EXPORTING
        document_data                    = email_data
        put_in_outbox                    = 'X'
       SENDER_ADDRESS                   = SY-UNAME
        sender_address_type              = 'B'
       COMMIT_WORK                      = 'X'
    IMPORTING
      SENT_TO_ALL                      =
      NEW_OBJECT_ID                    =
      SENDER_ID                        =
      TABLES
        packing_list                   = packing_list
        contents_bin                   = it_mess_att
        contents_txt                   = it_email
        receivers                      = 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.
      IF sy-subrc <> 0.
    errore invio mail
      ENDIF.

    Hi,
    Try to use fm 'SO_NEW_DOCUMENT_ATT_SEND_API1' instead of SO_DOCUMENT_SEND_API1.
    Please check documentation of fm SO_DOCUMENT_SEND_API1 in ECC 6.

  • JavaMail send 9M pdf attach through Gmail

    Hello Everyone,
    I have this issue while trying to send email with attach (an pdf of 9M) . In the beginning I can see in the console that packets are sent really fast. Everything seem OK, but in time the speed decrease, Thus in about 10 minutes or more it barely sends anything. No errors whatsoever.
    If I am sending smaller attachments (under 900K) they work fine, i receive them, open them...all is great.
    I performed this test, sending the same content with the same attach directly from gmail web mail and it was uploaded in about 10 minutes- which i find it acceptable. Why does JavaMail take so long?
    My application is a standalone app , a swing app. I tried sending the mail both from GUI's main thread and from a distinct thread. No big difference.
    Anyone any idea? Someone hit this issue before?
    Here is some code:
    Properties props = new Properties();
              props.put("mail.smtp.user", userName);
    props.put("mail.smtp.host", host);
    if(!"".equals(port))
    props.put("mail.smtp.port", port);
    //if(!"".equals(starttls))
    //props.put("mail.smtp.starttls.enable",starttls);
    props.put("mail.smtp.auth", auth);
    if(debug)
    props.put("mail.smtp.debug", "true");
    else
    props.put("mail.smtp.debug", "false");          
              if(!"".equals(port))
    props.put("mail.smtp.socketFactory.port", port);
              if(!"".equals(socketFactoryClass))
    props.put("mail.smtp.socketFactory.class",socketFactoryClass);
              //if(!"".equals(fallback))
    //props.put("mail.smtp.socketFactory.fallback", fallback);
    try
    Session session = Session.getDefaultInstance(props, null);
    session.setDebug(debug);
    MimeMessage msg = new MimeMessage(session);
    //msg.setText(text);
    msg.setSubject(subject);
    msg.setFrom(new InternetAddress("[email protected]"));
    for(int i=0;i<to.length;i++)
    msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    for(int i=0;i<cc.length;i++)
    msg.addRecipient(Message.RecipientType.CC, new InternetAddress(cc[i]));
    for(int i=0;i<bcc.length;i++)
    msg.addRecipient(Message.RecipientType.BCC, new InternetAddress(bcc[i]));
    // create the message part
    MimeBodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setText(text);
    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);
    messageBodyPart = new MimeBodyPart();
    DataSource source = new FileDataSource("f:/__BOOKS__/1000_Java_Tips_low.pdf");
    messageBodyPart.setDataHandler(new DataHandler(source));
    messageBodyPart.setFileName("1000_Java_Tips_low.pdf");
    messageBodyPart.setFileName(source.getName());
    //messageBodyPart.attachFile("f:/__BOOKS__/J2EE JSF Tutorial.pdf");
    multipart.addBodyPart(messageBodyPart);
    msg.setContent(multipart);
    msg.saveChanges();
    Transport transport = session.getTransport("smtp");
    transport.connect(host, userName, passWord);
    transport.sendMessage(msg, msg.getAllRecipients());
    transport.close();
    return true;
    Thanks and best regards,
    Ionut.

    Off course, i let the application run just to see it manage to send the mail. But after about an hour or more i get this error:
    GmItAHP6Wj1nblOEOurlwBQ1DEfXSmQPShOnSIN0mimP3+z9NI5wNEnVWNfvIUI1JXkagvIO8yvS
    java.net.SocketException: Connection reset by peer: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at com.sun.net.ssl.internal.ssl.OutputRecord.writeBuffer(OutputRecord.java:295)
    at com.sun.net.ssl.internal.ssl.OutputRecord.write(OutputRecord.java:284)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:727)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:715)
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
    at com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:114)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
    at com.sun.mail.util.CRLFOutputStream.write(CRLFOutputStream.java:84)
    at com.sun.mail.smtp.SMTPOutputStream.write(SMTPOutputStream.java:87)
    at com.sun.mail.util.CRLFOutputStream.write(CRLFOutputStream.java:75)
    at com.sun.mail.util.BASE64EncoderStream.write(BASE64EncoderStream.java:140)
    at javax.activation.DataHandler.writeTo(DataHandler.java:322)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1403)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:874)
    at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:444)
    at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:102)
    at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:897)
    at javax.activation.DataHandler.writeTo(DataHandler.java:330)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1403)
    at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1745)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:636)
    at ro.crm.johnny.mail.Mailer.sendMail(Mailer.java:160)
    at ro.crm.johnny.mail.Mailer.sendit(Mailer.java:45)
    at ro.crm.johnny.MainFrame.cmdSendEmailActionPerformed(MainFrame.java:1306)
    at ro.crm.johnny.MainFrame.access$2100(MainFrame.java:65)
    at ro.crm.johnny.MainFrame$22.actionPerformed(MainFrame.java:811)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
    at java.awt.Component.processMouseEvent(Component.java:5517)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
    at java.awt.Component.processEvent(Component.java:5282)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3984)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3819)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1791)
    at java.awt.Component.dispatchEvent(Component.java:3819)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    javax.mail.MessagingException: IOException while sending message;
    nested exception is:
    java.net.SocketException: Connection reset by peer: socket write error
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:676)
    at ro.crm.johnny.mail.Mailer.sendMail(Mailer.java:160)
    Anyone, Any idea yet?

  • How can I send a .pdf attachement using maildemo_sql.txt

    Hi
    I have created a PL/SQL package using the following link.
    Could you plese tell me how can I send a .pdf as an attachement using the follwing package?
    http://www.oracle.com/technology/sample_code/tech/pl_sql/htdocs/maildemo_sql.txt
    regards

    When using the "MailDemo" package, in order to send email attachements, the document you attach MUST reside on the Database Server or UTL_SMTP or UTL_MAIL Oracle packages won't be able to find the file. I recommend you define a location (directory) on the database server file system where all email attachements must be stored and reference this location using an Oracle Directory object. You will need to modify the BEGIN_ATTACHMENT procedure to add the file location referenced by the Oracle Directory object to the filename parameter. For example:
    /* Create the Oracle DIRECTORY */
    CREATE OR REPLACE DIRECTORY FILE_ATTACHMENTS as '/temp/attachments/';
    /* Modification to MAILDEMO */
      PROCEDURE begin_attachment(conn         IN OUT NOCOPY utl_smtp.connection,
                        mime_type    IN VARCHAR2 DEFAULT 'text/plain',
                        inline       IN BOOLEAN  DEFAULT TRUE,
                        filename     IN VARCHAR2 DEFAULT NULL,
                        transfer_enc IN VARCHAR2 DEFAULT NULL) IS
      BEGIN
        write_boundary(conn);
        write_mime_header(conn, 'Content-Type', mime_type);
        IF (filename IS NOT NULL) THEN
           IF (inline) THEN
           write_mime_header(conn, 'Content-Disposition',
             /* 'inline; filename="'||BFILENAME('filename||'"'); */ /* Line BEFORE */
               'inline; filename="'||BFILENAME('FILE_ATTACHMENTS',filename)||'"'); /* Line AFTER */
           ELSE
           write_mime_header(conn, 'Content-Disposition',
             /* 'attachment; filename="'||filename||'"'); */  /* Line BEFORE */
               'attachment; filename="'||BFILENAME('FILE_ATTACHMENTS',filename)||'"');  /* Line AFTER */
           END IF;
        END IF;
        IF (transfer_enc IS NOT NULL) THEN
          write_mime_header(conn, 'Content-Transfer-Encoding', transfer_enc);
        END IF;
        utl_smtp.write_data(conn, utl_tcp.CRLF);
      END;If you have to send the file attachment from the User's workstation, then I suggest you either add the ability to FTP a file from a users workstation to the Database Server; use a javabean to send email directly from the client workstation or use WebUtil to open an Outlook message and attach the file using Outlook. I personally prefer using the database package to send email because you have a central point that all processes use and that makes the process easier to maintain. If you opt to try the Java Bean or WebUtil options, here are some great links that work really well also.
    Java Option:
    Send email with html body and local file attachments
    WebUtil Option:
    Sending Email via Outlook via forms
    Re: Sending email from Oracle Forms with attachments
    I cannot confirm the WebUtil options work as I have not tested these myself, however, I have tested the Java option and it works fine.
    Hope this helps,
    Craig B-)
    If a response is helpful or correct, please mark it accordingly.

  • Sending PO (PDF attach.) via email: adding email body text

    Hi,
    I need to send Purchase Orders to Vendors as PDF attachments to emails; I have successfully configured all the necessary:
    For Output Type NEU
    1) Access to conditions (General Data) set to X
    2) Dispatch time 3 Send with application own transaction
    3) Transmission Medium 5 for External send
    4) Processing routines 5 includes a customer Program and Form to make use of my SAPScript
    I have set up a Communication Strategy (NET - Internet) and created a condition based on a specific document type.
    Using ME9F I can select my PO and successfully output the message - I can view the request using SOST and an email with the PO attached as PDF is sent to the correct recipient (email address of Vendor).
    I would like though to add some text to the body of the email, which is totally empty. Can anyone please advise on how to achieve this? In the Output Type config there is a section "Mail title and texts"... can anyone tell me whether this section can be used to add body text to the email and how? I have managed to customise the "Title/Subject" of the email and PO but cannot find a way to add some text in the email body.
    Thank you very much for your help.
    Gab

    Hi Danilo,
    You need to do some configuration for this.
    - Goto NACE .
    - Select EF and click on OUTPUT TYPES.
    - Then select Output Type NEU and click on processing routines .
    - In that you have to add a new entry - medium 5 .
    - Then you need to assign a program, form routine and form.
    - You can use the standard program i.e. SAPFM06P, FORM routine is always ENTRY_NEU and standard MEDRUCK.
    - Then in PARTNER FUNCTION you need to add a new entry : medium - 5 and function - VN .
    - For subject of the mail goto Mail Title and Texts. In title give PO No. &EKKO-EBELN& .
    - Under General data -> Replacement of text symbols give programm as SAPMM06E and Form Routine as
    TEXT_SYMBOL_REPLACE .
    - Now the subject will be PO No. 1800004202.
    - You need to maintain your email id in tcode SU01 and also the vendor's email id.
    - Now while creating a new purchase order , change the medium to External Send .
    - Then goto Communication Method and select CS01 . ALSO make sure that the Cover Page Text has value PO No. &EKKO-EBELN& .
    - Goto tcode ME9F .
    - Execute.
    - Select the checkbox and click on Output Message.
    - You will get a message MAII 00000000000001 generated .
    If the BASIS guys have made the necessary configuration for sending mail then the mail will go .
    You can see the status in tcode SOST.
    If you want to use a z-programm and z-form then you need add the functions used in standard programm SAPFM06P for generating mail in your z-programm.
    Hope it helps,
    Swapnil

  • Sending a PDF attachment by mail

    Hello Experts,
    I need to write down a report in which you can generate an e-mail attaching automatically one or more PDF already downloaded on my PC (generated by a previous report) i.e. c:\test.pdf
    For info, this is the last part of a report that generates PDF from a standard report result:
    - I call RFZALI20 for a specific set of parameters (LAUFD, LAUFI, LIFNR)
    - I generate a spool with the results (customer wants exactly the "screenshots" of report result) and then convert it in pdf with a submit to RSTXPDF4
    - Now I have to send it by mail to the vendor...how can I do that??
    thanks in advance
    Chiara

    hi
    Store all your texts like dear sir , please find the attachment in text elements example text-001 contains please find the attachments and text-002 contains thank you and so on.
    Once you do this the place where you call your pdf palce them there and concat them.
    example:
    data: wa_msg type solisti1,
    i_msg type standard table of solisti1.
    wa_msg-line = text-001.
    append wa_msg to i_msg.
    then you fill the receivers and call the FM for sending pdf mail
    regards
    Sachin Sharma

  • I am unable to send a PDF attachment using mac mail so that it appears in the body of the email when arrives in the recipient's inbox.

    I attach the pdf file as a view in place instead of view as icon, but it arrives in the recipient's inbox as a pdf icon attachment.  I have heard that there are programs that can make the attachment be viewed in the body of the email, but i have been unable to find them.  Does anyone have any suggestions??  I have called apple care, and been to the genius bar, but nothing.  it seems that if the email is sent from mac mail to mac mail it works, but to any other mail program they only receive the icons.

    new account are created without a password, so asking for it is normal.
    see http://thunderbirdtweaks.blogspot.com.au/2011/07/pssswords.html
    Compare the passwords Thunderbird has for the other accounts and see if using the same one is what you need to do.

  • Can not send a pdf attachment from 1

    my 1&1 email wont let me send PDF attachments ,it just
    stays at the load screen and never completes

    Hi sean4adobe,
    I'm sorry you're having trouble with your mail client. If you're unable to send PDF attachments, I believe the issue lies with 1&1, and not with Acrobat. Have you tried contacting their support? I did a quick google search, but didn't come up with anything that  looked useful.
    Best,
    Sara

  • Problem in sending pdf attachment

    hi all
    i am facing a problem when i am sending a pdf attachment in mail... It is showing an errror that the file is not decode properly as it is an email attachment. The below code works fine for other file types. please help me

    FUNCTION ZMAIL_READ.
    *"*"Local Interface:
    *"  IMPORTING
    *"     VALUE(SUBJECT) TYPE  SO_OBJ_DES
    *"     VALUE(TEXT) TYPE  STRING
    *"     VALUE(SENDER) TYPE  ADR6-SMTP_ADDR
    *"     VALUE(RECEIVER) TYPE  ADR6-SMTP_ADDR
    *"     VALUE(ATTACHMENTS) TYPE  Z_T_XATTACH OPTIONAL
    *"  EXPORTING
    *"     VALUE(MESSAGE) TYPE  STRING
    DATA: lo_sender TYPE REF TO if_sender_bcs VALUE IS INITIAL,
          lo_bcs_send_request TYPE REF TO cl_bcs,
          l_send type ADR6-SMTP_ADDR ,
          l_rec type  ADR6-SMTP_ADDR .
    data: it_text type table of soli,
          wa_text type soli.
    DATA: lo_send_request TYPE REF TO cl_bcs VALUE IS INITIAL.
    DATA: lo_recipient TYPE REF TO if_recipient_bcs VALUE IS INITIAL.
    DATA: lv_recipient_uid TYPE uname,
          lv_recipient_mail TYPE adr6-smtp_addr.
    data: lo_message type ref to cx_send_req_bcs value is initial,
          text_val type string.
    data: it_userlist type table of BAPIUSNAME,
          wa_userlist type BAPIUSNAME.
    data: it_selection_range type table of BAPIUSSRGE,
          wa_selection_range type BAPIUSSRGE.
    data: wa_attachment TYPE zxattach,
          attachment_sub type SO_OBJ_DES.
    DATA: xstr type xstring,
          str TYPE string,
          str1 type string,
          it_str2 type table of soli,
          wa_STR2 TYPE SOLI,
    DATA: LOC_CONV TYPE REF TO CL_ABAP_CONV_IN_CE,
          wa_soli type soli,
          it_soli type table of soli,
          it1_solix type solix_tab.
    data result TYPE boolean.
    data: i_ext(10) type c,
          i_type type soodk-objtp.
    wa_text-line = text.
    append wa_text to it_text.
    CLASS cl_bcs DEFINITION LOAD.
    try.
    lo_send_request = cl_bcs=>create_persistent( ).
    catch cx_send_req_bcs.
    endtry.
    * Message body and subject
    data: lo_document TYPE REF TO cl_document_bcs VALUE IS INITIAL.
    try.
    lo_document = cl_document_bcs=>create_document(
         i_type = 'RAW'
         i_text =  it_text
         i_subject = subject ).
    catch cx_send_req_bcs.
    catch cx_document_bcs.
    catch cx_address_bcs.
    endtry.
    loop at attachments into wa_attachment.
    attachment_sub = wa_attachment-file_name.
    it_str2 = wa_attachment-attach.
    loop at it_str2 into wa_str2.
    str1 = wa_str2-line.
    try.
    CALL FUNCTION 'SSFC_BASE64_DECODE'
      EXPORTING
        B64DATA                        = str1
    *   B64LENG                        =
    *   B_CHECK                        =
      IMPORTING
        BINDATA                        = xstr.
    catch cx_sy_dyn_call_illegal_type.
    endtry.
    try.
    CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
      EXPORTING
        BUFFER                = xstr
       APPEND_TO_TABLE       = 'X'
    * IMPORTING
    *   OUTPUT_LENGTH         =
      TABLES
        BINARY_TAB            = it1_solix
    catch cx_sy_dyn_call_illegal_type.
    endtry.
    endloop.
    try.
    CALL FUNCTION 'SA_KW_RFC_FILENAME_EXT_GET'
      EXPORTING
       AREA            = 'IWBSOLAR'
        MIMETYPE        = wa_attachment-type
    IMPORTING
       EXTENSION       = i_ext
    catch cx_sy_dyn_call_illegal_type.
    endtry.
    i_type = i_ext.
    try.
      lo_document->add_attachment(
      EXPORTING
        i_attachment_type = i_type
        i_attachment_subject = attachment_sub
        i_att_content_hex = it1_solix ).
           CATCH cx_document_bcs.
    endtry.
    endloop.
    try.
    lo_send_request->set_document( lo_document ).
    CATCH cx_send_req_bcs.
    endtry.
    wa_selection_range-PARAMETER = 'address'.
    wa_selection_range-field = 'e_mail'.
    wa_selection_range-sign = 'I'.
    wa_selection_range-option = 'EQ'.
    wa_selection_range-low = receiver.
    append wa_selection_range to it_selection_range.
    try.
    CALL FUNCTION 'BAPI_USER_GETLIST'
    * EXPORTING
    *   MAX_ROWS              = 0
    *   WITH_USERNAME         = ' '
    * IMPORTING
    *   ROWS                  =
    TABLES
        SELECTION_RANGE       = it_selection_range
        USERLIST              = it_userlist.
    catch cx_sy_dyn_call_illegal_type.
    endtry.
    read table it_userlist into wa_userlist index 1.
    try.
      lo_sender = cl_cam_address_bcs=>create_internet_address( sender ).
      lo_send_request->set_sender(
         EXPORTING
         i_sender = lo_sender ).
    catch cx_send_req_bcs.
    catch cx_document_bcs.
    catch cx_address_bcs.
      return.
    endtry.
    try.
        lo_recipient = cl_sapuser_bcs=>create( wa_userlist-USERNAME ).
        lo_send_request->add_recipient(
           EXPORTING
             i_recipient = lo_recipient ).
    *         i_express = 'X' ).
      catch cx_send_req_bcs.
      catch cx_document_bcs.
      catch cx_address_bcs.
    endtry.
    try.
    ** Send email
         LO_SEND_REQUEST->SET_SEND_IMMEDIATELY( 'X' ).
         lo_send_request->send( EXPORTING
         i_with_error_screen = ' '
         RECEIVING
         result = result ).
         COMMIT WORK.
    CATCH CX_DOCUMENT_BCS.
    CATCH CX_SEND_REQ_BCS INTO lo_message.
    CATCH CX_ADDRESS_BCS.
    text_val = lo_message->IF_MESSAGE~GET_TEXT( ).
    endtry.
    if result = 'X'.
      message = 'E-Mail sent'.
    else.
      message = 'E-Mail not sent'.
    endif.
    ENDFUNCTION.

  • Sending smartform through email as PDF attachment

    Hi,
    I want to send a smartform through email as pdf attachment.In the code I have hardcoded the receiver mail id.But I don't want this to be sent only to a particular receiver.I want this to be sent as many people as I can without hardcoding their mail id's in the program.How can I do that?
    Regards,
    Hema

    **Data Declarations
    **Internal Table
    DATA : BEGIN OF it_spfli OCCURS 0,
              carrid LIKE spfli-carrid,
              connid LIKE spfli-connid,
           END OF it_spfli.
    DATA:   it_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
            it_contents     LIKE solisti1 OCCURS 0 WITH HEADER LINE,
    storing receivers      
            it_receivers    LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
    **storing file attachment data
            it_attachment   LIKE solisti1 OCCURS 0 WITH HEADER LINE,                    gd_doc_data     LIKE sodocchgi1,
            gd_error        TYPE sy-subrc,
            l_gntxt         LIKE t357g_t-gntxt,
            lv_message(100) TYPE c.
    DATA:   it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE. "storing mail body
    DATA : psubject(30) TYPE c VALUE 'Sample Mail'. "subject of the mail
    DATA : ld_format TYPE so_obj_tp , "file format
           ld_attfilename TYPE so_obj_des, "file name
           w_cnt TYPE i.
    **Selecting the data
    SELECT carrid connid INTO TABLE it_spfli FROM spfli WHERE carrid EQ 'AA'.
    **Perform for populating mail body
    PERFORM populate_message.
    **Perform for populating file attachment
    PERFORM populate_attachment.
    **Perform for populating mail characteristic info
    PERFORM populate_pack.
    **Perform for populating receivers
    PERFORM populate_receivers.
    **Perform to send mail
    PERFORM send_mail.
    *&      Form  populate_message
          text
    -->  p1        text
    <--  p2        text
    FORM populate_message .
    **Populating the body
      lv_message = 'Sample mail for testing purpose.'.
      APPEND lv_message TO it_message.
    ENDFORM.                    " populate_message
    *&      Form  populate_attachment
          text
    -->  p1        text
    <--  p2        text
    FORM populate_attachment .
    **Populating the attachment file with the data from final intenal table
      CONCATENATE 'CARRIER ID'
                  'CONNECTION ID'
                  INTO it_attachment SEPARATED BY
                  cl_abap_char_utilities=>horizontal_tab.
      CONCATENATE cl_abap_char_utilities=>cr_lf it_attachment INTO
      it_attachment.
      APPEND it_attachment.
      LOOP AT it_spfli.
        CONCATENATE it_spfli-carrid it_spfli-connid INTO it_attachment SEPARATED BY
                 cl_abap_char_utilities=>horizontal_tab.
        CONCATENATE cl_abap_char_utilities=>cr_lf it_attachment INTO
        it_attachment.
        APPEND it_attachment.
      ENDLOOP.
    ENDFORM.                    " populate_attachment
    *&      Form  populate_receivers
          text
    -->  p1        text
    <--  p2        text
    FORM populate_receivers .
    **Populating Mail Recepients
    **If there are more than one mail recepient then loop and append them to it_receivers
      it_receivers-receiver = '[email protected]'.
      it_receivers-rec_type = 'U'.
      it_receivers-com_type = 'INT'.
      it_receivers-notif_del = 'X'.
      it_receivers-notif_ndel = 'X'.
      it_receivers-express = 'X'.
      APPEND it_receivers.
    ENDFORM.                    " populate_receivers
    *&      Form  populate_pack
          text
    -->  p1        text
    <--  p2        text
    FORM populate_pack .
    **File Type
      ld_format = 'XLS'.
    **File Name
      ld_attfilename = 'File1'.
    Fill the document data.
      gd_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      gd_doc_data-obj_langu = sy-langu.
      gd_doc_data-obj_name = 'SAPRPT'.
      gd_doc_data-obj_descr = psubject .
      gd_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR gd_doc_data.
    Populate the subject/generic message attributes
      gd_doc_data-obj_langu = sy-langu.
      READ TABLE it_attachment INDEX w_cnt.
      gd_doc_data-doc_size = ( w_cnt - 1 ) * 255 + STRLEN( it_attachment ).
      gd_doc_data-obj_name  = 'SAPRPT'.
      gd_doc_data-obj_descr = psubject.
      gd_doc_data-sensitivty = 'F'.
    Describe the body of the message
      CLEAR it_packing_list.
      REFRESH it_packing_list.
      it_packing_list-transf_bin = space.
      it_packing_list-head_start = 1.
      it_packing_list-head_num = 0.
      it_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES it_packing_list-body_num.
      it_packing_list-doc_type = 'RAW'.
      APPEND it_packing_list.
    **Describe the attachment info
      it_packing_list-transf_bin = 'X'.
      it_packing_list-head_start = 1.
      it_packing_list-head_num = 1.
      it_packing_list-body_start = 1.
      DESCRIBE TABLE it_attachment LINES  it_packing_list-body_num.
      it_packing_list-doc_type = ld_format.
      it_packing_list-obj_name = ld_attfilename.
      it_packing_list-obj_descr = ld_attfilename.
      it_packing_list-doc_size = it_packing_list-body_num * 255.
      APPEND it_packing_list.
    ENDFORM.                    " populate_pack
    *&      Form  send_mail
          text
    -->  p1        text
    <--  p2        text
    FORM send_mail .
    **Function Module to send mail
      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        EXPORTING
          document_data              = gd_doc_data
          put_in_outbox              = 'X'
          commit_work                = 'X'
        TABLES
          packing_list               = it_packing_list
          contents_bin               = it_attachment
          contents_txt               = it_message
          receivers                  = it_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.
    ENDFORM.                    " send_mail

  • How to send mail with pdf attachment.

    hello,
    I want to know if I can send a pdf attachment via mail. My PDF file is somewhere in the server and its content doesn't need to be changed by the program. the program just needs to find the pdf in server, then it will just send pdf file as attachment to the mail. is it possible ? thanks in advance.

    Hi Friend,
    You can easily send the document by email as follows :
    REPORT ZSENDEXTERNAL.
    DATA: OBJPACK   LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
    DATA: OBJHEAD   LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.
    DATA: OBJBIN    LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
    DATA: OBJTXT    LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
    DATA: RECLIST   LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.
    DATA: DOC_CHNG  LIKE SODOCCHGI1.
    DATA: TAB_LINES LIKE SY-TABIX.
    Creation of the document to be sent
    File Name
    DOC_CHNG-OBJ_NAME = 'SENDFILE'.
    Mail Subject
    DOC_CHNG-OBJ_DESCR = 'Send External Mail'.
    Mail Contents
    OBJTXT = 'Minimum bid : $250000'.
    APPEND OBJTXT.
    OBJTXT = 'A representation of the pictures up for auction'.
    APPEND OBJTXT.
    OBJTXT = 'was included as attachment.'.
    APPEND OBJTXT.
    DESCRIBE TABLE OBJTXT LINES TAB_LINES.
    READ TABLE OBJTXT INDEX TAB_LINES.
    DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).
    Creation of the entry for the compressed 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.
    Creation of the document attachment
    (Assume that the data in OBJBIN is in BMP format)
    *OBJBIN = ' \O/ '. APPEND OBJBIN.
    *OBJBIN = ' | '. APPEND OBJBIN.
    *OBJBIN = ' / \ '. APPEND OBJBIN.
    *DESCRIBE TABLE OBJBIN LINES TAB_LINES.
    *OBJHEAD = 'PICTURE.BMP'.
    *APPEND OBJHEAD.
    Creation of the entry for the compressed attachment
    *OBJPACK-TRANSF_BIN = 'X'.
    *OBJPACK-HEAD_START = 1.
    *OBJPACK-HEAD_NUM = 1.
    *OBJPACK-BODY_START = 1.
    *OBJPACK-BODY_NUM = TAB_LINES.
    *OBJPACK-DOC_TYPE = 'PDF'.
    *OBJPACK-OBJ_NAME = 'PICTURE'.
    *OBJPACK-OBJ_DESCR = 'Representation of object 138'.
    *OBJPACK-DOC_SIZE = TAB_LINES * 255.
    *APPEND OBJPACK.
    Completing the recipient list
    RECLIST-RECEIVER = <External Email id >.
    RECLIST-REC_TYPE = 'U'.
    APPEND RECLIST.
    *RECLIST-RECEIVER = 'SAPUSERNAME'.
    *RECLIST-REC_TYPE = 'P'.
    *APPEND RECLIST.
    Sending the document
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
       DOCUMENT_DATA = DOC_CHNG
       PUT_IN_OUTBOX = 'X'
    TABLES
       PACKING_LIST = OBJPACK
       OBJECT_HEADER = OBJHEAD
       CONTENTS_BIN = OBJBIN
       CONTENTS_TXT = OBJTXT
       RECEIVERS = RECLIST
    EXCEPTIONS
       TOO_MANY_RECEIVERS = 1
       DOCUMENT_NOT_SENT = 2
       OPERATION_NO_AUTHORIZATION = 4
    OTHERS = 99.
    CASE SY-SUBRC.
       WHEN 0.
       WRITE: / 'Result of the send process:'.
    LOOP AT RECLIST.
       WRITE: / RECLIST-RECEIVER(48), ':'.
       IF RECLIST-RETRN_CODE = 0.
          WRITE 'The document was sent'.
       ELSE.
          WRITE 'The document could not be sent'.
    ENDIF.
    ENDLOOP.
    WHEN 1.
       WRITE: / 'No authorization for sending to the specified number',
                'of recipients'.
    WHEN 2.
       WRITE: / 'Document could not be sent to any recipient'.
    WHEN 4.
       WRITE: / 'No send authorization'.
    WHEN OTHERS.
       WRITE: / 'Error occurred while sending'.
    ENDCASE.
    Regards
    Dhirendra Pandit

  • How do I send a adobe pdf attachment to a flash drive from e-mail account?

    How do I send a pdf attachment from my e-mail to a flash drive?
    Thank you for your assisttance.

    In the email client save the attachment to the flash drive.

  • Error when opening the PDF attachment

    Hi,
    We are able to successfully send the PDF attachment to external email id  from SAP SCRIPT:
    but when we are opening the PDF attachment we are getting the following error:
    "Adobe Reader could not open because it is not either a supported file type or the file has been damaged ..etc.."
    Is any logic need to write for the above or any parameters are missing .
    Can any one help...
    Thanks in advance.

    Hi Ramana,
                Just try below given example code.....In which I have just different function Module to convert from OFT to PDF....
       AT END OF VSTEL.
          IF R_EMAIL = 'X'.
    *--Opening Layout set for Printing
            PERFORM CLOSE_FORM.
           SELECT SINGLE SMTP_ADDR INTO V_EMAIL
           FROM ADR6
           WHERE ADDRNUMBER = T_ADRC-ADDRNUMBER.
            CLEAR T_LIPS.
            READ TABLE T_LIPS WITH KEY VBELN = T_LIKP-VBELN.
            CLEAR T_VBAK.
            READ TABLE T_VBAK WITH KEY VBELN = T_LIPS-VGBEL.
            CLEAR V_ADRNR.
            SELECT SINGLE ADRNR
            INTO V_ADRNR
            FROM T001
            WHERE  BUKRS = T_VBAK-BUKRS_VF.
            REFRESH T_CC_EMAIL.
            CLEAR T_CC_EMAIL.
            SELECT  SMTP_ADDR INTO TABLE T_CC_EMAIL
            FROM ADR6
            WHERE ADDRNUMBER = V_ADRNR.
         SELECT SINGLE smtp_addr
         INTO cc_email
         FROM adr6
         WHERE addrnumber = v_adrnr.
            IF T_TO_EMAIL[] IS INITIAL.
              CLEAR T_CC_EMAIL.
              REFRESH T_CC_EMAIL.
            ENDIF.
            PERFORM BUILD_PDF_DATA_TABLE.
    Populate message body text
            PERFORM POPULATE_EMAIL_MESSAGE_BODY.
            CONCATENATE  T_LIKP-VSTEL '-' 'Warehouse Release' INTO V_SUBJECT SEPARATED BY SPACE.
    Send file by email as .xls speadsheet
            PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT
                                         TABLES IT_MESSAGE
                                                PT_CONTENTS_BIN       "LINES    "it_attach
                                          USING V_EMAIL
                                                V_SUBJECT
                                                'PDF'
                                                'Delivery'
                                                'Deliveries'
                                       CHANGING GD_ERROR
                                                GD_RECIEVER.
      Instructs mail send program for SAPCONNECT to send email(rsconn01)
            PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
          ENDIF.
        ENDAT.
    ***---/End by sagun
      ENDLOOP. "loop at t_likp.
    ***---/added by sagun 25.05.2007
      IF R_EMAIL = 'X'.
        WRITE /01 SY-ULINE(180).
        WRITE :/55 'End of Report'.
      ENDIF.
    ***---/end by sagun
    ENDFORM.                    " PRINT_DELIVERY
    *&      Form  close_form
          text
    -->  p1        text
    <--  p2        text
    FORM CLOSE_FORM .
      IF R_PRINT = 'X'.                   " added by sagun 24.05.2007
        CALL FUNCTION 'CLOSE_FORM'
    IMPORTING
      RESULT                         =
      RDI_RESULT                     =
    TABLES
      OTFDATA                        =
         EXCEPTIONS
           UNOPENED                       = 1
           BAD_PAGEFORMAT_FOR_PRINT       = 2
           SEND_ERROR                     = 3
           SPOOL_ERROR                    = 4
           CODEPAGE                       = 5
           OTHERS                         = 6
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF.                             " added by sagun 24.05.2007
      IF R_EMAIL = 'X'.
    *otf_table  like itcoo occurs 0 with header line
        CALL FUNCTION 'CLOSE_FORM'
         IMPORTING
           RESULT   = .
             TABLES
               OTFDATA  = HOTFDATA
             EXCEPTIONS
               UNOPENED = 3.
      ENDIF.
    ENDFORM.                    " close_form
    *&      Form  BUILD_PDF_DATA_TABLE
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_PDF_DATA_TABLE .
      DATA :  LC_FORMAT(3) TYPE C VALUE 'PDF'.
    DATA: lt_tline TYPE tp_tline_standard_table,
      DATA :  L_BIN_FILESIZE TYPE I,
              PC_CONTENTS_BIN_LINES TYPE I.
      CALL FUNCTION 'CONVERT_OTF'
        EXPORTING
          FORMAT                = LC_FORMAT
        IMPORTING
          BIN_FILESIZE          = L_BIN_FILESIZE
        TABLES
          OTF                   = HOTFDATA
          LINES                 = LINES
        EXCEPTIONS
          ERR_MAX_LINEWIDTH     = 1
          ERR_FORMAT            = 2
          ERR_CONV_NOT_POSSIBLE = 3
          OTHERS                = 4.
      IF SY-SUBRC = 0.
        CALL FUNCTION 'QCE1_CONVERT'
          TABLES
            T_SOURCE_TAB         = LINES
            T_TARGET_TAB         = PT_CONTENTS_BIN
          EXCEPTIONS
            CONVERT_NOT_POSSIBLE = 1
            OTHERS               = 2.
        IF SY-SUBRC = 0.
          DESCRIBE TABLE PT_CONTENTS_BIN LINES PC_CONTENTS_BIN_LINES.
        ELSE.
    ... -->
        ENDIF.
      ELSE.
    An OTF conversion error occured
    -->
      ENDIF.
    ENDFORM.                    " BUILD_PDF_DATA_TABLE
    *&      Form  POPULATE_EMAIL_MESSAGE_BODY
          text
    -->  p1        text
    <--  p2        text
    FORM POPULATE_EMAIL_MESSAGE_BODY .
      REFRESH IT_MESSAGE.
      IT_MESSAGE = 'Please find enclosed here with our Warehouse Release Document(s)'.
      APPEND IT_MESSAGE.
      CLEAR IT_MESSAGE.
      APPEND IT_MESSAGE.
      APPEND IT_MESSAGE.
      APPEND IT_MESSAGE.
      APPEND IT_MESSAGE.
      IT_MESSAGE = 'For United Phosphorous Inc.'.
      APPEND IT_MESSAGE.
      CLEAR IT_MESSAGE.
    APPEND it_message.
    APPEND it_message.
    APPEND it_message.
      IT_MESSAGE = 'TEST EMAIL from 520 clinet please ignore it'.
      APPEND IT_MESSAGE.
    ENDFORM.                    " POPULATE_EMAIL_MESSAGE_BODY
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          text
         -->PIT_MESSAGE  text
         -->PIT_ATTACH  text
         -->P_EMAIL  text
         -->P_MTITLE  text
         -->P_FORMAT   text
         -->P_FILENAME   text
         -->P_ATTDESCRIPTION   text
         -->P_SENDER_ADDRESS   text
         -->P_SENDER_ADDRES_TYPE   text
         <--P_ERROR  text
         <--P_RECIEVER  text
    FORM SEND_FILE_AS_EMAIL_ATTACHMENT  TABLES    PIT_MESSAGE
                                                  PIT_ATTACH
                                            USING P_EMAIL
                                                  P_MTITLE
                                                  P_FORMAT
                                                  P_FILENAME
                                                  P_ATTDESCRIPTION
                                                  P_SENDER_ADDRESS
                                                  P_SENDER_ADDRES_TYPE
                                         CHANGING P_ERROR
                                                  P_RECIEVER.
      DATA: LD_ERROR    TYPE SY-SUBRC,
           ld_reciever TYPE sy-subrc,...
             LD_MTITLE LIKE SODOCCHGI1-OBJ_DESCR,
             LD_EMAIL LIKE  SOMLRECI1-RECEIVER,
             LD_FORMAT TYPE  SO_OBJ_TP ,
             LD_ATTDESCRIPTION TYPE  SO_OBJ_NAM ,
             LD_ATTFILENAME TYPE  SO_OBJ_DES ,
             LD_SENDER_ADDRESS LIKE  SOEXTRECI1-RECEIVER,
             LD_SENDER_ADDRESS_TYPE LIKE  SOEXTRECI1-ADR_TYP,
             LD_RECEIVER LIKE  SY-SUBRC.
    p_filename  = 'INVOICE'.
      LD_EMAIL   = P_EMAIL.
      LD_MTITLE = P_MTITLE.
      LD_FORMAT              = P_FORMAT.
      LD_ATTDESCRIPTION      = P_ATTDESCRIPTION.
      LD_ATTFILENAME         = P_FILENAME.
      LD_SENDER_ADDRESS      = P_SENDER_ADDRESS.
      LD_SENDER_ADDRESS_TYPE = P_SENDER_ADDRES_TYPE.
    Fill the document data.
      W_DOC_DATA-DOC_SIZE = 1.
    Populate the subject/generic message attributes
      W_DOC_DATA-OBJ_LANGU = SY-LANGU.
      W_DOC_DATA-OBJ_NAME  = 'SAPRPT'.
      W_DOC_DATA-OBJ_DESCR = LD_MTITLE .
      W_DOC_DATA-SENSITIVTY = 'F'.
    Fill the document data and get size of attachment
      CLEAR W_DOC_DATA.
      READ TABLE PIT_ATTACH INDEX W_CNT.
      W_DOC_DATA-DOC_SIZE =
         ( W_CNT - 1 ) * 255 + STRLEN( PIT_ATTACH ).
      W_DOC_DATA-OBJ_LANGU  = SY-LANGU.
      W_DOC_DATA-OBJ_NAME   = 'SAPRPT'.
      W_DOC_DATA-OBJ_DESCR  = LD_MTITLE.
      W_DOC_DATA-SENSITIVTY = 'F'.
      CLEAR T_ATTACHMENT.
      REFRESH T_ATTACHMENT.
      T_ATTACHMENT[] = PIT_ATTACH[].
    Describe the body of the message
      CLEAR T_PACKING_LIST.
      REFRESH T_PACKING_LIST.
      T_PACKING_LIST-TRANSF_BIN = SPACE.
      T_PACKING_LIST-HEAD_START = 1.
      T_PACKING_LIST-HEAD_NUM = 0.
      T_PACKING_LIST-BODY_START = 1.
      DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.
      T_PACKING_LIST-DOC_TYPE = 'RAW'.
      APPEND T_PACKING_LIST.
    Create attachment notification
      T_PACKING_LIST-TRANSF_BIN = 'X'.
      T_PACKING_LIST-HEAD_START = 1.
      T_PACKING_LIST-HEAD_NUM   = 1.
      T_PACKING_LIST-BODY_START = 1.
      DESCRIBE TABLE T_ATTACHMENT LINES T_PACKING_LIST-BODY_NUM.
      T_PACKING_LIST-DOC_TYPE   =  LD_FORMAT.
      T_PACKING_LIST-OBJ_DESCR  =  LD_ATTDESCRIPTION.
      T_PACKING_LIST-OBJ_NAME   =  LD_ATTFILENAME.
      T_PACKING_LIST-DOC_SIZE   =  T_PACKING_LIST-BODY_NUM * 255.
      APPEND T_PACKING_LIST.
    Add the recipients email address
      CLEAR T_RECEIVERS.
      REFRESH T_RECEIVERS.
      LOOP AT T_TO_EMAIL WHERE EMAIL <> SPACE.
        CLEAR T_RECEIVERS.
        T_RECEIVERS-RECEIVER = T_TO_EMAIL-EMAIL.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COM_TYPE = 'INT'.
        T_RECEIVERS-NOTIF_DEL = 'X'.
        T_RECEIVERS-NOTIF_NDEL = 'X'.
        APPEND T_RECEIVERS.
        CLEAR T_RECEIVERS.
      ENDLOOP.
    copy email address
      CLEAR T_RECEIVERS.
      IF NOT T_RECEIVERS[] IS INITIAL.
        LOOP AT T_CC_EMAIL.
          T_RECEIVERS-RECEIVER = T_CC_EMAIL-EMAIL.
          T_RECEIVERS-REC_TYPE = 'U'.
          T_RECEIVERS-COM_TYPE = 'INT'.
    t_receivers-notif_del = 'X'.
    t_receivers-notif_ndel = 'X'.
          T_RECEIVERS-COPY       = 'X'.
          APPEND T_RECEIVERS.
          CLEAR T_RECEIVERS.
        ENDLOOP.
      ENDIF.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
        EXPORTING
          DOCUMENT_DATA              = W_DOC_DATA
          PUT_IN_OUTBOX              = 'X'
          SENDER_ADDRESS             = LD_SENDER_ADDRESS
          SENDER_ADDRESS_TYPE        = LD_SENDER_ADDRESS_TYPE
          COMMIT_WORK                = 'X'
        IMPORTING
          SENT_TO_ALL                = W_SENT_ALL
        TABLES
          PACKING_LIST               = T_PACKING_LIST
          CONTENTS_BIN               = T_ATTACHMENT
          CONTENTS_TXT               = IT_MESSAGE
          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.
    Populate zerror return code
      LD_ERROR = SY-SUBRC.
    Populate zreceiver return code
    LOOP AT t_receivers.
       ld_receiver = t_receivers-retrn_code.
    ENDLOOP.
      IF SY-SUBRC = 0.
        FORMAT COLOR COL_NORMAL ON.
        LOOP AT T_LOG.
          WRITE :/03 T_LOG-VBELN,
                  19 SY-VLINE,
                  20 T_LOG-KUNNR,
                  34 SY-VLINE,
                  35 T_LOG-NAME1,
                  76 SY-VLINE,
                  77 T_LOG-EMAIL,
                  110 SY-VLINE,
                  111 'Email Sent Successfuly',
                  180 SY-VLINE.
        ENDLOOP . "t_log
        FORMAT COLOR COL_NORMAL OFF.
        CLEAR T_LOG.
        REFRESH T_LOG.
      ENDIF.
      IF SY-SUBRC NE 0.
        CASE LD_ERROR.
          WHEN   1.
            V_ERROR =  'too_many_receivers' .
          WHEN   2.
            V_ERROR =  'Email address not found in Customer Master' .
          WHEN   3.
            V_ERROR =  'document_type_not_exist'.
          WHEN   4.
            V_ERROR =  'operation_no_authorization'.
          WHEN   5.
            V_ERROR =  'Email address not found in Customer Master'.
          WHEN   6.
            V_ERROR =   'x_error'.
          WHEN   7.
            V_ERROR =   'enqueue_error'.
          WHEN   8.
            V_ERROR =   'Error in sending email' .
        ENDCASE.
        FORMAT COLOR COL_NEGATIVE ON.
        LOOP AT T_LOG.
          WRITE :/03 T_LOG-VBELN,
             19 SY-VLINE,
             20 T_LOG-KUNNR,
             34 SY-VLINE,
             35 T_LOG-NAME1,
             76 SY-VLINE,
             77 T_LOG-EMAIL,
             110 SY-VLINE,
             111 V_ERROR,
             180 SY-VLINE.
        ENDLOOP . "t_log
        FORMAT COLOR COL_NEGATIVE OFF.
        CLEAR T_LOG.
        REFRESH T_LOG.
      ENDIF.
    ENDFORM.                    " SEND_FILE_AS_EMAIL_ATTACHMENT
    *&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
          text
    -->  p1        text
    <--  p2        text
    FORM INITIATE_MAIL_EXECUTE_PROGRAM .
      WAIT UP TO 2 SECONDS.
      SUBMIT RSCONN01 WITH MODE = 'INT'
                    WITH OUTPUT = 'X'
                    AND RETURN.
    ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM
    Reward Point If it usefull....
    Cheers,
    Sagun Desai....

  • Conver SAPscript data to PFD and send mail as attachement

    Hi all,
    I have reqirement as conver SAP script data to PDF and send id as attachemetn to respective email ids.
    I have data in t_tdline internal table after CLOSE_FORM. Now I'm able to convert to PDF and sending a mail (checking in SOST). But not able to send as an attachement.
    Can anybody suggest the steps with respective function modules to convert to pdf and send as an attachement.
    Thanks in advance.

    So once you have the data in TDLINE, you have to convert it to PDF attachment using below code
    DATA : l_o_send_request TYPE REF TO cl_bcs,
      l_o_document TYPE REF TO cl_document_bcs,
      l_o_sender TYPE REF TO cl_sapuser_bcs,
    *  l_o_recipient TYPE REF TO cl_cam_address_bcs,
      l_o_recipient TYPE REF TO cl_sapuser_bcs,
      bcs_exception TYPE REF TO cx_bcs,
      l_v_ret TYPE os_boolean,
      l_it_contents TYPE bcsy_text,
      l_wa_contents TYPE LINE OF bcsy_text,
      l_it_attachment TYPE solix_tab,
      l_s_attachment  TYPE solix.
    CALL METHOD cl_document_bcs=>xstring_to_solix
      EXPORTING
        ip_xstring = pdfobject-pdf
      receiving
        rt_solix   = l_it_attachment
      TRY.
          l_o_send_request = cl_bcs=>create_persistent( ).
          l_o_sender = cl_sapuser_bcs=>create( sy-uname ).
    *      l_o_sender = cl_cam_address_bcs=>create_internet_address( '<SY-UNAME>' ).
          l_o_send_request->set_sender( i_sender = l_o_sender ).
          " recipient TO
    *      l_o_recipient = cl_cam_address_bcs=>create_internet_address( 'abcd<at>email' ).
          l_o_recipient = cl_sapuser_bcs=>create( '<SY-UNAME>' ).
          l_o_send_request->add_recipient(
          i_recipient = l_o_recipient
          i_copy = '' " CC indicator
          " email contents
          CLEAR l_wa_contents.
          l_wa_contents-line = 'Find attached the output of the Adobe Forms'.
          APPEND l_wa_contents TO l_it_contents.
          " create documents
          l_o_document = cl_document_bcs=>create_document(
          i_type = 'RAW' " RAW document format
          i_text = l_it_contents
          i_subject = 'This Is The Subject for Email With Attachment'
          l_o_document->add_attachment(
          i_attachment_type = 'PDF' " add PDF attachment
          i_attachment_subject = 'PDF attachment'
          i_att_content_hex = l_it_attachment
          l_o_send_request->set_document( l_o_document ).
          " send email
          l_o_send_request->set_send_immediately( 'X' ).
          l_v_ret = l_o_send_request->send( ).
        CATCH cx_bcs INTO bcs_exception.
      ENDTRY.
      COMMIT WORK.

  • 2 PDF attachment in a single mail

    Hi All ,
      Have any body seen the functionality of sending 2 PDF attachment in a mail .
    If yes please provide some pointers .
    Regards
    Saurabh Garg

    Hi,
    I have develop this code to send multiple HTML attachments using CL_BCS class
    Form f_send_html_mail.
      data: send_request       type ref to cl_bcs.
      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: exception_info     type ref to if_os_exception_info,
      bcs_exception            type ref to cx_document_bcs.
      data i_attachment_size type sood-objlen.
      data v_status          type bcs_stml.
      data v_request_status  type bcs_rqst.
      data : v_desc like sopcklsti1-obj_descr.
          concatenate 'Doc-' pdocno into v_desc.
          condense v_desc no-gaps.
          submit yttcr0001 exporting list to memory
                   with p_docno = pdocno
                   and return.
        call function 'LIST_FROM_MEMORY'
          tables
            listobject = report_list
          exceptions
            not_found  = 1
            others     = 2.
        call function 'WWW_HTML_FROM_LISTOBJECT'
          exporting
            template_name = 'WEBREPORTING_REPORT'
          tables
            html          = report_html
            listobject    = report_list.
        describe table objbin lines tab_lines.
        v_lines = tab_lines + 1.
        loop at report_html.
          move report_html to it_attach1.
          append it_attach1.
        endloop.
      send_request = cl_bcs=>create_persistent( ).
      try.
          document = cl_document_bcs=>create_document(
                                        i_type    = 'RAW'
                                        i_text = it_content[]
                                        i_subject = subject ).
          if not attach_name1 is initial.
            call method document->add_attachment
              exporting
                i_attachment_type    = attach_ext1
                i_attachment_subject = attach_name1
                i_att_content_text   = it_attach1[].
          endif.
         "<<< if you want multiple attachment then use this
          if not attach_name2 is initial.
            call method document->add_attachment
              exporting
                i_attachment_type    = attach_ext2
                i_attachment_subject = attach_name2
                i_att_content_text   = it_attach2[].
          endif.
          call method send_request->set_document( document ).
          sender = cl_sapuser_bcs=>create( sy-uname ).
          call method send_request->set_sender
            exporting
              i_sender = sender.
          loop at it_recipient.
            translate it_recipient-smtp_addr to lower case.
            recipient = cl_cam_address_bcs=>create_internet_address( it_recipient-smtp_addr ).
            call method send_request->add_recipient
              exporting
                i_recipient  = recipient
                i_express    = ' '
                i_copy       = ' '
                i_blind_copy = ' '
                i_no_forward = ' '.
          endloop.
          move : 'E' to v_request_status.
          v_status = v_request_status.
          call method send_request->set_status_attributes
            exporting
              i_requested_status = v_request_status
              i_status_mail      = v_status.
          call method send_request->send( ).
          commit work.
        catch cx_document_bcs into bcs_exception.
      endtry.
    endform.                               

Maybe you are looking for

  • Songs from Itunes store quit playing midstream

    I just down loaded a lot of songs, and a lot of them are skipping to the next song every time it gets to the same place in the song. ....not all are doing this...but most. I have the most recent Itunes installed, and am on a windows 7 pc. I created a

  • Transferring files to new Mac from pc

    Hi, our old PC recently crashed and we have now "seen the light" and bought a new mac. Luckily, we were able to get a back-up of the hard drive of the old PC. I was wondering how to get my music from the back-up discs of my PC into I -tunes on my mac

  • Mac OSX 10.5.8 Freezed - a way to do it

    Hi. This is not really a call for help, I only want to share this with you. Sometimes I use my cell phone to an emergency connection to Internet - when the official way is down. I call for it at preferences panel by bluetooth, and MacMini call my cel

  • Actions won't play after update

    I just updated to PS CC 2014.  I uninstalled and reinstalled my actions to troubleshoot because they wont play when clicked on.  I also tried restarting my computer with no luck.  Does anyone know what I can do to fix this?  Thank you!

  • [SOLVED]What's the matter with 'man'?

    Hello! I'm using arch for sometime but I found that 'man' in arch can hardly show me the manual page of a command. 0 hzqtc @ pts/2 % man zsh No manual entry for zsh 1 hzqtc @ pts/2 % man xbindkeys No manual entry for xbindkeys 1 hzqtc @ pts/2 % What