How to Convert file to excel and send it via email

Hi experts.
Can anyone tell me how to convert a spool data in to excel format and the send it through e-mail......
We have a function module for converting spool data to pdf and send it through mail ie FM CONVERT_ABAPSPOOLJOB_2_PDF,
but is there any FM for Excel ....
Kindly help me.....
Thanks
Naveen

you can send a file as an exel attachment in mail,
step 1:
   send file data to an internal table.
step 2:
   loop through the internal table(itab).
    concatinate itab-field1
                      abap_char_utilities=>horizontal tab
                     itab-field2
                     abap_char_utilities=>horizontal tab
                    abap_char_utilities=>vertical tab
        into t_attachment-line
append t_attachment
step 3:
Fill the document data and get size of attachment
  CLEAR w_doc_data.
  READ TABLE it_attach INDEX w_cnt.  
  w_doc_data-doc_size =
  ( w_cnt - 1 ) * 255 + STRLEN( it_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 = 'XLS'.
   t_packing_list-doc_size = t_packing_list-body_num * 255.
  t_packing_list-obj_name   = 'Attachment'.
  t_packing_list-obj_descr  = 'mail xls'
  APPEND t_packing_list.
Add the recipients email address
  CLEAR t_receivers.
  REFRESH t_receivers.
    MOVE: mail id TO t_receivers-receiver,
    'U' TO t_receivers-rec_type,
    APPEND t_receivers.
  CALL  FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = w_doc_data
      put_in_outbox              = 'X'
      commit_work                = 'X'
    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.
check the FM and creat the internal table types
by this way you can send excel as an attachment 
but problem in sending EXCEL attachment is if the data crosses the limit of excle file the file will not open.

Similar Messages

  • Convert SAP spoolOR list to excel and send as an email attachment

    Hello All Masterminds ,
      Iu2019ve developed a utility, in which users has to maintain one u201CZu201D view where they can give any report name, type of attachment (PDF, XLS, TXT) and sender email addresses.u201DNote: thing to remember here is Iu2019m creating XLS,TXT,PDF format dynamicallyu201D 
    It is working fine for PDF. Iu2019m submitting the program and creating spool and converting it to PDF and sending to their emails as an attachment.  It looks fantastic. When Iu2019m doing the same thing for XLS it is showing messy output, I tried many functions and search lots of unanswered, unfinished SDN posts. I almost tried every single clue given in these posts but no luck. Email part is working fine using classes (  l_document = cl_document_bcs=>create_document , l_document->add_attachment , l_send_request->set_document( l_document ).,cl_sapuser_bcs=>create( l_uname ).,l_send_request->add_recipient,  l_send_request->set_send_immediately( '' ).  ) .
    My real deal is to create a beautiful XLS out put. I also tried FMs LIST_FROM_MEMORY and LIST_TO_ASCI but no-luck. I thought instead of spool if I use u201CSubmit  EXPORTING LIST TO MEMORY u201C option may be It works but BIG NO 
       Iu2019m sure some genius out there has done something like his , I ain`t genius that is why I am stuck   Please guys throw me some bones .  As I said, I am able to do most of the things. I need some magic code /answer which turns my messy, ugly unformatted excel sheet attachment to beautiful u201Cpiece of art u201CExcel output.
      Here are the FMs I tried so far with different combinations.
    CALL FUNCTION 'LIST_FROM_MEMORY'
    CALL FUNCTION 'LIST_TO_ASCI'
    CALL FUNCTION 'GUI_DOWNLOAD'
    CALL FUNCTION 'RSPO_DOWNLOAD_SPOOLJOB'
    CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
    CALL FUNCTION 'CONVERT_OTF'
    CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
    And logic like to get rid of things getting in Asci tables
    cl_abap_char_utilities=>newline.
    cl_abap_char_utilities=>horizontal_tab
    cl_abap_char_utilities=>VERTICAL_TAB
    cl_abap_char_utilities=>cr_lf
    FIELD-SYMBOLS: <lfs_table>,    " Internal table structure
                     <lfs_con>.      " Field Content
      DATA: l_text TYPE char1024.     " Text content for mail attachment
      DATA: l_con(50) TYPE c.        " Field Content in character format
    Columns to be tab delimeted
      LOOP AT FINAL ASSIGNING <lfs_table>.
        DO.
          ASSIGN COMPONENT sy-index OF STRUCTURE <lfs_table>
                 TO <lfs_con>.
          IF sy-subrc NE 0.
            CONCATENATE c_cr l_text INTO l_text.
            APPEND l_text TO i_attach.
            EXIT.
          ELSE.
            CLEAR: l_con.
            MOVE <lfs_con> TO l_con.
            CONDENSE l_con.
            IF sy-index = 1.
              CLEAR: l_text.
              MOVE l_con TO l_text.
            ELSE.
              CONCATENATE l_text l_con INTO l_text
                 SEPARATED BY c_tab.
            ENDIF.
          ENDIF.
        ENDDO.
      ENDLOOP.
    Posts : https://forums.sdn.sap.com/click.jspa?searchID=14756211&messageID=4401940
    https://forums.sdn.sap.com/click.jspa?searchID=14756211&messageID=4796657
    https://forums.sdn.sap.com/search.jspa?threadID=&q=convertspoolintoexcelformatforsendingmail&objID=c42&dateRange=all&numResults=30&rankBy=10001
    Will appreciate your help and time.
    Thanks,
    Saquib Khan

    Hi,
    i send excel-att like this.
    REPORT Z_EMAIL_CL_BCS MESSAGE-ID ZZ.
    More examples here BCS_EXAMPLE_* with se38
    DATA: SEND_REQUEST       TYPE REF TO CL_BCS.
    DATA: SUBJECT            TYPE SO_OBJ_DES.
    DATA: ATT_TYPE           TYPE SOODK-OBJTP.
    DATA: IT_TEXT            TYPE BCSY_TEXT.
    DATA: WA_TEXT            LIKE SOLI.
    DATA: IT_BIN             TYPE SOLIX_TAB.
    DATA: WA_BIN             TYPE SOLIX.
    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.
    Bytes der Datei
    DATA: IT_LENGHT          TYPE SO_OBJ_LEN.
    DATA: N10(10)            TYPE N.
    CONSTANTS: CON_NEWL TYPE ABAP_CHAR1 VALUE CL_ABAP_CHAR_UTILITIES=>NEWLINE,
               CON_TAB  TYPE ABAP_CHAR1 VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
    CONSTANTS: CON_NEWL TYPE X VALUE '0D', "OK for non Unicode
                CON_TAB  TYPE X VALUE '09'. "OK for non Unicode
    START-OF-SELECTION.
      PERFORM MAIN.
    END-OF-SELECTION.
    FORM MAIN.
      TRY.
        -------- create persistent send request ------------------------
          SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
          PERFORM HEAD_CONT.
          PERFORM XLS_ATT.
        add document to send request
          CALL METHOD SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).
        --------- set sender -------------------------------------------
          SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ).
          CALL METHOD SEND_REQUEST->SET_SENDER
            EXPORTING
              I_SENDER = SENDER.
        --------- set recipent -----------------------------------------
          RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
                                            'the email adress' ).
        add recipient with its respective attributes to send request
          CALL METHOD SEND_REQUEST->ADD_RECIPIENT
            EXPORTING
              I_RECIPIENT = RECIPIENT
              I_EXPRESS   = 'X'.
         RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
                                           'the email adress 2' ).
        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 ).
          COMMIT WORK.
        CATCH CX_BCS INTO BCS_EXCEPTION.
          WRITE: 'Fehler aufgetreten.'(001).
          WRITE: 'Fehlertyp:'(002), BCS_EXCEPTION->ERROR_TYPE.
          EXIT.
      ENDTRY.
    ENDFORM.                    "main
    FORM HEAD_CONT.
      CLEAR: IT_TEXT[], WA_TEXT, SUBJECT.
      ATT_TYPE = 'RAW'.
      CONCATENATE 'Betreffzeile am' SY-DATUM 'um' SY-UZEIT
      INTO SUBJECT SEPARATED BY SPACE.
      WA_TEXT = 'Hello!'.
      APPEND WA_TEXT TO IT_TEXT.
    WA_TEXT = 'dieses ist eine Testmail'.
    APPEND WA_TEXT TO IT_TEXT.
    WA_TEXT = 'Gruß'.
    APPEND WA_TEXT TO IT_TEXT.
      DESCRIBE TABLE IT_TEXT LINES N10.
      N10 = ( N10 - 1 ) * 255 + STRLEN( WA_TEXT ).
      IT_LENGHT = N10.
      DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
                I_TYPE    = ATT_TYPE
                I_TEXT    = IT_TEXT
                I_LENGTH  = IT_LENGHT
                I_SUBJECT = SUBJECT ).
    ENDFORM.                    "HEAD_CONT
    FORM XLS_ATT.
      DATA: BEGIN OF ITAB OCCURS 0,
            MATNR     LIKE MARA-MATNR,
            MTART     LIKE MARA-MTART,
            MATKL     LIKE MARA-MATKL,
            BRGEW     LIKE MARA-BRGEW,
          END   OF ITAB.
      DATA: BRGEW(18).
      CLEAR: IT_BIN[], WA_BIN, SUBJECT.
      SELECT MATNR MTART MATKL BRGEW INTO TABLE ITAB FROM MARA UP TO 10 ROWS.
      CONCATENATE 'Material'      CON_TAB
            'Materialart'   CON_TAB
            'Warengruppe'   CON_TAB
            'Bruttogewicht' CON_NEWL
              INTO WA_BIN.
      APPEND WA_BIN TO IT_BIN.
      LOOP AT ITAB.
        WRITE ITAB-BRGEW TO BRGEW.
        CONCATENATE ITAB-MATNR CON_TAB
                    ITAB-MTART CON_TAB
                    ITAB-MATKL CON_TAB
                         BRGEW CON_NEWL
                    INTO WA_BIN.
        APPEND WA_BIN TO IT_BIN.
      ENDLOOP.
      ATT_TYPE = 'XLS'.
      SUBJECT = 'My XLS attachment'.
      DESCRIBE TABLE IT_BIN LINES N10.
      N10 = ( N10 - 1 ) * 255 + STRLEN( WA_BIN ).
      IT_LENGHT = N10.
      CALL METHOD DOCUMENT->ADD_ATTACHMENT
        EXPORTING
          I_ATTACHMENT_TYPE    = ATT_TYPE
          I_ATT_CONTENT_HEX    = IT_BIN
          I_ATTACHMENT_SIZE    = IT_LENGHT
          I_ATTACHMENT_SUBJECT = SUBJECT.
    ENDFORM.                    "XLS_ATT
    Perhaps it helps.
    regards, Dieter

  • To convert Sap Script output to PDF format and send it via email.

    Hi Friends,
    Could any one please tell me, how to convert the Sap Script output to PDF format and send it via email. If any one have the code, kindly mail me to [email protected]
    Thanks & Regards,
    John

    Plese check this sample code from other thread.
    REPORT zzz_jaytest .
    Types Declaration
    TYPES : BEGIN OF ty_pa0001,
    pernr TYPE pa0001-pernr,
    bukrs TYPE pa0001-bukrs,
    werks TYPE pa0001-werks,
    END OF ty_pa0001.
    Internal Table Declaration
    DATA : i_pa0001 TYPE STANDARD TABLE OF ty_pa0001, "For pa0001 Details
    i_otf TYPE STANDARD TABLE OF itcoo, "For OTF data
    i_content_txt TYPE soli_tab, "Content
    i_content_bin TYPE solix_tab, "Content
    i_objhead TYPE soli_tab,
    Work Area Declaration
    w_pa0001 TYPE ty_pa0001, "For pa0001 Details
    w_res TYPE itcpp, "SAPscript output
    "parameters
    w_otf TYPE itcoo, "For OTF
    w_pdf TYPE solisti1, "For PDF
    w_transfer_bin TYPE sx_boolean, "Content
    w_options TYPE itcpo, "SAPscript output
    "interface
    Variable Declaration
    v_len_in TYPE so_obj_len,
    v_size TYPE i.
    Constants Declaration
    CONSTANTS : c_x TYPE c VALUE 'X', "X
    c_locl(4) TYPE c VALUE 'LOCL', "Local Printer
    c_otf TYPE sx_format VALUE 'OTF', "OTF
    c_pdf TYPE sx_format VALUE 'PDF', "PDF
    c_printer TYPE sx_devtype VALUE 'PRINTER', "PRINTER
    c_bin TYPE char10 VALUE 'BIN', "BIN
    c_name TYPE string VALUE 'C:\ZZZ_JAYTEST.PDF',"Downloading
    "File Name
    c_form(11) TYPE c VALUE 'ZZZ_JAYTEST'. "Form Name
    START-OF-SELECTION.
    Selecting the records from pa0001
    SELECT pernr bukrs werks FROM pa0001
    INTO TABLE i_pa0001 UP TO 10 ROWS.
    Setting the options
    w_options-tdcopies = 1 ."Number of copies
    w_options-tdnoprev = c_x."No print preview
    w_options-tdgetotf = c_x."Return of OTF table
    w_options-tddest = c_locl."Spool: Output device
    Opening the form
    CALL FUNCTION 'OPEN_FORM'
    EXPORTING
    form = c_form
    device = c_printer
    language = sy-langu
    OPTIONS = w_options
    IMPORTING
    RESULT = w_res.
    LOOP AT i_pa0001 INTO w_pa0001.
    Writting into the form
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    element = 'MAIN'
    window = 'MAIN'.
    ENDLOOP.
    Closing the form
    CALL FUNCTION 'CLOSE_FORM'
    IMPORTING
    RESULT = w_res
    TABLES
    otfdata = i_otf
    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.
    Converting OTF data to single line
    LOOP AT i_otf INTO w_otf.
    CONCATENATE w_otf-tdprintcom w_otf-tdprintpar
    INTO w_pdf.
    APPEND w_pdf TO i_content_txt.
    ENDLOOP.
    Converting to PDF Format
    CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'
    EXPORTING
    format_src = c_otf
    format_dst = c_pdf
    devtype = c_printer
    CHANGING
    transfer_bin = w_transfer_bin
    content_txt = i_content_txt
    content_bin = i_content_bin
    objhead = i_objhead
    len = v_len_in
    EXCEPTIONS
    err_conv_failed = 1
    OTHERS = 2.
    v_size = v_len_in.
    Downloading the PDF File
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    bin_filesize = v_size
    filename = c_name
    filetype = c_bin
    TABLES
    data_tab = i_content_bin.
    The extension is put the it_mailpack-obj_name parameter of 'SO_NEW_DOCUMENT_ATT_SEND_API1'.

  • To convert Smart Form output to PDF format and send it via email.

    Hi Friends,
    Could any one please tell me, how to convert the Smart Forms output to PDF format and send it via email to customer. If any one have the code, kindly mail me to [email protected]
    Thanks & Regards,
    John

    Refer the links -
    how to convert smartform into pdf and send through mail
    Smartform as PDF attachment to a mail.
    smartform pdf and mail
    smartform to pdf to mail
    Regrads,
    Amit
    Reward all helpful replies.

  • When I select a photo on my iPhone and send it via email, the receipient receives it sideways. Any way to fix that?

    When I select a photo on my iPhone and send it via email, the receipient receives it sideways. Any way to fix that?

    When you took this photograph your phone was being held in that way. Sideways, try taking the photo straight on. Or it is the Picture file itself, open up the application you edit photos with and rotate it to be proper orientation. I recently had the same problem but you either have to retake or edit it at this point.

  • How can i make an action to send photos via email?

    hi
    under windows xp
    how can i make an action to send photos via email?
    i know there is a Export Actions
    i tried to copy a link of "C:\Programs\Outlook Express\msimn.exe"
    but lightroom export the file & open the client , but doesn't open the dialog to send email
    how can i do it?

    For Outlook Express use MAPIMailer from
    Lightroom Extra at Downloads/Other Goodies/MAPIMailer
    Don
    Don Ricklin, MacBook 1.83Ghz Duo 2 Core running 10.4.10 & Win XP, Pentax *ist D
    http://donricklin.blogspot.com/

  • The problem is with the new operating system  and sending photo via email when used in my iPad.   From photo I selected 3 photos to send via email. I choose the upload key and choose to send by email. Typing text on the email is very slow.

    The problem is with the new operating system  and sending photo via email when used in my iPad.
    From photo I selected 3 photos to send via email. I choose the upload key and choose to send by email. Typing text on the email is very slow. This is solved by saving the email as a draft and opening the email again from mail.
    Can you amend he system to allow emails to be sent from photo as previously.

    Have you tried restarting or resetting your iPad?
    Restart: Press On/Off button until the Slide to Power Off slider appears, select Slide to Power Off and, after the iPad shuts down, then press the On/Off button until the Apple logo appears.
    Reset: Press the Home and On/Off buttons at the same time and hold them until the Apple logo appears (about 10 seconds). Ignore the "Slide to power off"

  • I have been taking photos with my Ipad for several months and sending them via email and Facebook.  Now it will transfer photos to FB but not email addresses.   What could be the problem?          email an

    Have been taking photos with my Ipad and sending them to email address and FB.  For some reason it will now send photos to FB but not my email address.  What could be the problem?

    Does your email provider have a limit on the total file size allowed on their server? It could be that emails with photos send in the past are still on your email server. They might even be in the servers trash folder. If the total MB of those emails exceeds the amount allowed then no additional emails can be received. Try using a web mail page to check and edit what's on the email server.

  • How to create an excel report and send it via email using a BPEL process ?

    Hi Experts,
    I have a requirement to develop a xl report based the data in the DB table. I will have to query the list of records entered / processed during previous day, generated the xl based report and send to users via email.
    I talked to one the experts, he asked me to use the following Adapter and BPEL activities to accomplish it.
                   DBAdapter --> {BPEL  process} --> Java Embedding --> Email Activity.
    Can someone please help me to pass the information retrieved by DBAdapter to Java Embedding and then to email import? I have created DBAdapter and Java Embedding. I don't know, how to retrieve the data read / sent by DBAdapter using Java Embedding. Also please help me to pass the xl attachment to Email Activity.
    Thanks for your help in advance!
    Thanks,
    Harisudhan Selvaraj

    I would suggest something like:
    DBAdapter --> Bpel Process --> File Adapter --> write file to location (you can write in csv which can be imported into xls)
    Read Location --> FileAdapter --> Bpel Process --> Email Activity
    Regards,
    Anshul

  • OSB: Retrieving file from disk and sending it via MTOM

    Hi,
    I'm trying to retrieve binary file from OSB local disk and than send it via MTOM.
    I've created a JCA synchronized reading file adapter. I've unchecked the "native message" option to disable schema translation. The files content seems getting picked up into <wsdl:part name="opaque" element="opaque:opaqueElement" />. I don't like the fact that it is encoded in base64. How to disable base64 decoding?
    I've tried to set the "native message" to some binary element, like <xs:element name="Attachment" type="xs:base64Binary" />. Then I get the "Schema translation failed" exception every time. What my native message should be to pick up a straight forward binary file?
    Can you guide me please how to create a file OSB transport service that would be able to read files?
    Also, if I obtain the file's content, how do I send it from proxy to proxy as a mtom? All of my proxy chains have enabled MTOM and pass binary as reference, but when I look up the messages transmitted, the opaque element seems to contain straigth forward base64 content, not binary reference.
    I would appreciate any help regarding any of this topics.

    Hi Veronica,
    there is absolutely nothing in my $body variableI did a quick test, the reference for the binary content goes to the $body variable...
    Service type = Messaging Service ... Transport = file
    Content of body after picking up a bmp image...
    <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <con:binary-content ref="cid:-63889258:138079cb851:-7d8e" xmlns:con="http://www.bea.com/wli/sb/context"/>
    </soapenv:Body>
    Cheers,
    Vlad
    It is considered good etiquette to reward answerers with points (as "helpful" - 5 pts - or "correct" - 10pts)
    https://forums.oracle.com/forums/ann.jspa?annID=893

  • Convert smartforms to pdf and sending it as email

    hi,
    i am converting smart form into PDF and sending it as an attachment with the e-mail. the e-mail is getting delivered but i am unable to open the PDF. it shows error saying "unable to open as it is not a supported file type or  it has been damaged".
    can any one please help me.

    Hi Gouthaman,
    Check this code.
    *& Report  ZSPOOLTOPDF                                                 *
    *& Converts spool request into PDF document and emails it to           *
    *& recipicant.                                                         *
    *& Execution                                                           *
    *& This program must be run as a background job in-order for the write *
    *& commands to create a Spool request rather than be displayed on      *
    *& screen                                                              *
    REPORT  zspooltopdf.
    PARAMETER: p_email1 LIKE somlreci1-receiver
                                        DEFAULT '[email protected]',
               p_sender LIKE somlreci1-receiver
                                        DEFAULT '[email protected]',
               p_delspl  AS CHECKBOX.
    *DATA DECLARATION
    DATA: gd_recsize TYPE i.
    Spool IDs
    TYPES: BEGIN OF t_tbtcp.
            INCLUDE STRUCTURE tbtcp.
    TYPES: END OF t_tbtcp.
    DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
          wa_tbtcp TYPE t_tbtcp.
    Job Runtime Parameters
    DATA: gd_eventid LIKE tbtcm-eventid,
          gd_eventparm LIKE tbtcm-eventparm,
          gd_external_program_active LIKE tbtcm-xpgactive,
          gd_jobcount LIKE tbtcm-jobcount,
          gd_jobname LIKE tbtcm-jobname,
          gd_stepcount LIKE tbtcm-stepcount,
          gd_error    TYPE sy-subrc,
          gd_reciever TYPE sy-subrc.
    DATA:  w_recsize TYPE i.
    DATA: gd_subject   LIKE sodocchgi1-obj_descr,
          it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          gd_sender_type     LIKE soextreci1-adr_typ,
          gd_attachment_desc TYPE so_obj_nam,
          gd_attachment_name TYPE so_obj_des.
    Spool to PDF conversions
    DATA: gd_spool_nr LIKE tsp01-rqident,
          gd_destination LIKE rlgrap-filename,
          gd_bytecount LIKE tst01-dsize,
          gd_buffer TYPE string.
    Binary store for PDF
    DATA: BEGIN OF it_pdf_output OCCURS 0.
            INCLUDE STRUCTURE tline.
    DATA: END OF it_pdf_output.
    CONSTANTS: c_dev LIKE  sy-sysid VALUE 'DEV',
               c_no(1)     TYPE c   VALUE ' ',
               c_device(4) TYPE c   VALUE 'LOCL'.
    *START-OF-SELECTION.
    START-OF-SELECTION.
    Write statement to represent report output. Spool request is created
    if write statement is executed in background. This could also be an
    ALV grid which would be converted to PDF without any extra effort
      WRITE 'Hello World'.
      new-page.
      commit work.
      new-page print off.
      IF sy-batch EQ 'X'.
        PERFORM get_job_details.
        PERFORM obtain_spool_id.
    Alternative way could be to submit another program and store spool
    id into memory, will be stored in sy-spono.
    *submit ZSPOOLTOPDF2
           to sap-spool
           spool parameters   %_print
           archive parameters %_print
           without spool dynpro
           and return.
    Get spool id from program called above
    IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.
        PERFORM convert_spool_to_pdf.
        PERFORM process_email.
        if p_delspl EQ 'X'.
          PERFORM delete_spool.
        endif.
        IF sy-sysid = c_dev.
          wait up to 5 seconds.
          SUBMIT rsconn01 WITH mode   = 'INT'
                          WITH output = 'X'
                          AND RETURN.
        ENDIF.
      ELSE.
        SKIP.
        WRITE:/ 'Program must be executed in background in-order for spool',
                'request to be created.'.
      ENDIF.
          FORM obtain_spool_id                                          *
    FORM obtain_spool_id.
      CHECK NOT ( gd_jobname IS INITIAL ).
      CHECK NOT ( gd_jobcount IS INITIAL ).
      SELECT * FROM  tbtcp
                     INTO TABLE it_tbtcp
                     WHERE      jobname     = gd_jobname
                     AND        jobcount    = gd_jobcount
                     AND        stepcount   = gd_stepcount
                     AND        listident   <> '0000000000'
                     ORDER BY   jobname
                                jobcount
                                stepcount.
      READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
      IF sy-subrc = 0.
        message s004(zdd) with gd_spool_nr.
        gd_spool_nr = wa_tbtcp-listident.
        MESSAGE s004(zdd) WITH gd_spool_nr.
      ELSE.
        MESSAGE s005(zdd).
      ENDIF.
    ENDFORM.
          FORM get_job_details                                          *
    FORM get_job_details.
    Get current job details
      CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
           IMPORTING
                eventid                 = gd_eventid
                eventparm               = gd_eventparm
                external_program_active = gd_external_program_active
                jobcount                = gd_jobcount
                jobname                 = gd_jobname
                stepcount               = gd_stepcount
           EXCEPTIONS
                no_runtime_info         = 1
                OTHERS                  = 2.
    ENDFORM.
          FORM convert_spool_to_pdf                                     *
    FORM convert_spool_to_pdf.
      CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
           EXPORTING
                src_spoolid              = gd_spool_nr
                no_dialog                = c_no
                dst_device               = c_device
           IMPORTING
                pdf_bytecount            = gd_bytecount
           TABLES
                pdf                      = it_pdf_output
           EXCEPTIONS
                err_no_abap_spooljob     = 1
                err_no_spooljob          = 2
                err_no_permission        = 3
                err_conv_not_possible    = 4
                err_bad_destdevice       = 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
                OTHERS                   = 12.
      CHECK sy-subrc = 0.
    Transfer the 132-long strings to 255-long strings
      LOOP AT it_pdf_output.
        TRANSLATE it_pdf_output USING ' ~'.
        CONCATENATE gd_buffer it_pdf_output 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.
    ENDFORM.
          FORM process_email                                            *
    FORM process_email.
      DESCRIBE TABLE it_mess_att LINES gd_recsize.
      CHECK gd_recsize > 0.
      PERFORM send_email USING p_email1.
    perform send_email using p_email2.
    ENDFORM.
          FORM send_email                                               *
    -->  p_email                                                       *
    FORM send_email USING p_email.
      CHECK NOT ( p_email IS INITIAL ).
      REFRESH it_mess_bod.
    Default subject matter
      gd_subject         = 'Subject'.
      gd_attachment_desc = 'Attachname'.
    CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
      it_mess_bod        = 'Message Body text, line 1'.
      APPEND it_mess_bod.
      it_mess_bod        = 'Message Body text, line 2...'.
      APPEND it_mess_bod.
    If no sender specified - default blank
      IF p_sender EQ space.
        gd_sender_type  = space.
      ELSE.
        gd_sender_type  = 'INT'.
      ENDIF.
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   tables it_mess_bod
                                          it_mess_att
                                    using p_email
                                          'Example .xls documnet attachment'
                                          'PDF'
                                          gd_attachment_name
                                          gd_attachment_desc
                                          p_sender
                                          gd_sender_type
                                 changing gd_error
                                          gd_reciever.
    ENDFORM.
          FORM delete_spool                                             *
    FORM delete_spool.
      DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.
      ld_spool_nr = gd_spool_nr.
      CHECK p_delspl <> c_no.
      CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
           EXPORTING
                spoolid = ld_spool_nr.
    ENDFORM.
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM send_file_as_email_attachment tables it_message
                                              it_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.
    data:   t_packing_list like sopcklsti1 occurs 0 with header line,
            t_contents like solisti1 occurs 0 with header line,
            t_receivers like somlreci1 occurs 0 with header line,
            t_attachment like solisti1 occurs 0 with header line,
            t_object_header like solisti1 occurs 0 with header line,
            w_cnt type i,
            w_sent_all(1) type c,
            w_doc_data like sodocchgi1.
      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 it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_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[] = it_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.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      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.
    ENDFORM.
    Hope this resolves your query.
    Reward all the helpful answers.
    Regards

  • How do I compress a video file so I can send it via email?

    I am trying to email a slideshow I just created in iPhoto.  My email won't accept the file because it is too large.  I tried to compress by right clicking on the file in the Finder application.  It gives me the option to compress it so I said yes.  It appears to have compressed it but it is still the same size and I can't email it.  What  am I doing wrong?  What do I need to do this?  I know people compress files all the time to send them. 

    You didn't say how long the slideshow is.
    FCPX has a preset which, at its smallest, downsizes the resolution to 240p. But a very long video might still not be small enough.
    So how long is it?
    Russ

  • Creating a PDF attachment and send it via Email

    Hi,
    I have following problem.
    I want to send a Purchase Order via Mail to email inbox.
    I already read in the forum that I should use the FM 'SO_NEW_DOCUMENT_ATT_SEND_API1'.
    Could anyone please provide me with some information about that. So how can I insert my PO into this function module (PO-Document is based on smartform and not stored in the database as a pdf-file so far)  -  so do I need to use another FM first to create a PDF file or how is it working?
    Thanks for your help,
    Christoph

    this code will help you
    *& Report  YSMARTFORM_EMAIL
    REPORT  YSMARTFORM_EMAIL.
    TABLES: VBAK.
    Constants                                                            *
    CONSTANTS:
      C_X        TYPE C VALUE 'X',         " Value X
      C_0        TYPE C VALUE '0',                              " Value 0
      C_1        TYPE C VALUE '1'.                              " Value 1
    Work Variables declaration                                           *
    DATA:
       W_UCOMM  LIKE SY-UCOMM,             " Function code
       W_TABLN  TYPE I,                    " Lines
       W_LINE   TYPE SO_TEXT255,           " Line of text
       W_EADDR(60) TYPE C.                 " FieldLength for Email
    DATA: VBAP_TAB LIKE VBAP OCCURS 0 WITH HEADER LINE.
    DATA: W_FUNMOD TYPE RS38L_FNAM.
    Structure to hold the Attributes of new Document
    DATA: FS_DOCDATA TYPE SODOCCHGI1.
    Internal table for storing OTF data form Smart-Form
    DATA: BEGIN OF FS_OTF_DATA.
            INCLUDE STRUCTURE ITCOO.
    DATA: END OF FS_OTF_DATA,
          T_OTF_DATA LIKE STANDARD TABLE OF FS_OTF_DATA.
    Internal table for storing PDF data form Smart-Form
    DATA: BEGIN OF FS_PDF_DATA.
            INCLUDE STRUCTURE TLINE.
    DATA: END OF FS_PDF_DATA,
          T_PDF_DATA LIKE STANDARD TABLE OF FS_PDF_DATA.
    Internal table to hold the attachment data text of the email
    DATA: BEGIN OF FS_ATTACH_DATA.
            INCLUDE STRUCTURE SOLISTI1.
    DATA: END OF FS_ATTACH_DATA,
          T_ATTACH_DATA LIKE STANDARD TABLE OF FS_ATTACH_DATA.
    Internal table to hold Message body of the email
    DATA: BEGIN OF FS_MESSBODY.
            INCLUDE STRUCTURE SOLISTI1.
    DATA: END OF FS_MESSBODY,
          T_MESSBODY LIKE STANDARD TABLE OF FS_MESSBODY.
    Internal table for packing list for main document
    DATA: BEGIN OF FS_OBJPACK.
            INCLUDE STRUCTURE SOPCKLSTI1.
    DATA: END OF FS_OBJPACK,
          T_OBJPACK LIKE STANDARD TABLE OF FS_OBJPACK.
    Internal table for header text of the attachment
    DATA: BEGIN OF FS_OBJHEAD.
            INCLUDE STRUCTURE SOLISTI1.
    DATA: END OF FS_OBJHEAD,
          T_OBJHEAD LIKE STANDARD TABLE OF FS_OBJHEAD.
    Internal table receiver information
    DATA: BEGIN OF FS_RECEIVER.
            INCLUDE STRUCTURE SOMLRECI1.
    DATA: END OF FS_RECEIVER,
          T_RECEIVER LIKE STANDARD TABLE OF FS_RECEIVER.
    *Internal table to store data upto 255 lines
    DATA: BEGIN OF FS_OBJCONT.
            INCLUDE STRUCTURE SOLI.
    DATA: END OF FS_OBJCONT,
          T_OBJCONT LIKE STANDARD TABLE OF FS_OBJCONT.
    *DATA : P_VBELN LIKE VBAK-VBELN.
    DATA: P_EADDR(60) TYPE C
         VALUE '[email protected]'.
    PARAMETERS : P_VBELN LIKE VBAK-VBELN.
    *PARAMETERS:
    P_EADDR(60) TYPE C.     " Email address
    SELECT SINGLE *
      FROM VBAK
    WHERE VBELN EQ P_VBELN.
    SELECT *
      FROM VBAP
      INTO TABLE VBAP_TAB
    WHERE VBELN EQ P_VBELN.
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
      EXPORTING
        FORMNAME                 = 'YSMARTFORM_EMAIL'
       VARIANT                  = ' '
       DIRECT_CALL              = ' '
    IMPORTING
       FM_NAME                  = W_FUNMOD
    EXCEPTIONS
       NO_FORM                  = 1
       NO_FUNCTION_MODULE       = 2
       OTHERS                   = 3      .
    IF SY-SUBRC <> 0.
    Do nothing
    ENDIF.
    DATA: FS_CONT_PARM TYPE SSFCTRLOP,
          T_JOB_INFO    TYPE SSFCRESCL.
    CLEAR FS_CONT_PARM.
    FS_CONT_PARM-GETOTF    = 'X'.
    FS_CONT_PARM-NO_DIALOG = 'X'.
    FS_CONT_PARM-PREVIEW   = ''.
    CALL FUNCTION W_FUNMOD
      EXPORTING
       ARCHIVE_INDEX              =
       ARCHIVE_INDEX_TAB          =
       ARCHIVE_PARAMETERS         =
         CONTROL_PARAMETERS         = FS_CONT_PARM
       MAIL_APPL_OBJ              =
       MAIL_RECIPIENT             =
       MAIL_SENDER                =
       OUTPUT_OPTIONS             =
       USER_SETTINGS              = 'X'
        VBAK                       = VBAK
      IMPORTING
       DOCUMENT_OUTPUT_INFO       =
        JOB_OUTPUT_INFO            = T_JOB_INFO
       JOB_OUTPUT_OPTIONS         =
      TABLES
        VBAP                       = VBAP_TAB
    EXCEPTIONS
       FORMATTING_ERROR           = 1
       INTERNAL_ERROR             = 2
       SEND_ERROR                 = 3
       USER_CANCELED              = 4
       OTHERS                     = 5           .
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    PERFORM CONVERT_OTF_TO_PDF.
    *&      Form  convert_otf_to_pdf
          text
    -->  p1        text
    <--  p2        text
    FORM CONVERT_OTF_TO_PDF .
      DATA: LV_BYTES TYPE P.
      IF FS_CONT_PARM-GETOTF EQ 'X'.
        REFRESH T_OTF_DATA.
        CLEAR FS_OTF_DATA.
        LOOP AT T_JOB_INFO-OTFDATA INTO FS_OTF_DATA.
          APPEND FS_OTF_DATA TO T_OTF_DATA.
          CLEAR FS_OTF_DATA.
        ENDLOOP.                           " LOOP AT t_outtab-otfdata
        CALL FUNCTION 'CONVERT_OTF'
          EXPORTING
            FORMAT                = 'PDF'
            MAX_LINEWIDTH         = 255
          IMPORTING
            BIN_FILESIZE          = LV_BYTES
          TABLES
            OTF                   = T_OTF_DATA
            LINES                 = T_PDF_DATA
          EXCEPTIONS
            ERR_MAX_LINEWIDTH     = 1
            ERR_FORMAT            = 2
            ERR_CONV_NOT_POSSIBLE = 3
            OTHERS                = 4.
        IF SY-SUBRC EQ 0 AND LV_BYTES IS NOT INITIAL.
          PERFORM TABLE_SHIFT.
    To send the output by email
          PERFORM SET_UP_EMAIL.
          PERFORM SEND_MAIL.
        ENDIF.                             " IF sy-subrc EQ space.
      ENDIF.                               " IF gs_control_pars-getotf
    ENDFORM.                               " convert_otf_to_pdf
    Form  set_up_email                                                   *
    This subroutine is used to set mail attributes                       *
    There are no interface parameters to be passed to this subroutine.   *
    FORM SET_UP_EMAIL .
    To setup attributes of the document
      PERFORM SET_EMAIL_HEADER.
    To set body of email
      PERFORM SET_EMAILBODY.
    To convert output table data with tab delimiter
      PERFORM PREPARE_OUTPUT_DATA_FOR_ATTACH.
    To set the Receipents
      PERFORM SET_RECEIPENTS.
    ENDFORM.                               " Set_up_email
    Form  set_email_header                                               *
    This subroutine is used to Setup the attributes of the Document      *
    There are no interface parameters to be passed to this subroutine.   *
    FORM SET_EMAIL_HEADER.
      CONSTANTS :
        LC_P TYPE C   VALUE 'P',             " Production system name
        LC_F TYPE C   VALUE 'F',             " Sensitivity
        LC_OBJNAME(6) TYPE C                 " Object name
                      VALUE 'SAPRPT'.
      CLEAR FS_DOCDATA.
    Populate the subject/generic message attributes
      FS_DOCDATA-DOC_SIZE   = 1.
      FS_DOCDATA-OBJ_LANGU  = SY-LANGU.
      FS_DOCDATA-OBJ_NAME   = LC_OBJNAME.
      FS_DOCDATA-SENSITIVTY = LC_F.
      IF SY-SYSID+0(1) NE LC_P.
        CONCATENATE 'Test mail'(003)
                    'Sales Order Details'(002)
               INTO FS_DOCDATA-OBJ_DESCR
          SEPARATED BY SPACE.
      ELSE.
        MOVE TEXT-002 TO FS_DOCDATA-OBJ_DESCR.
      ENDIF.                               " IF sy-sysid+0(1)...
    ENDFORM.                               " Set_email_header
    Form  set_emailbody                                                  *
    This subroutine is used to set body of an email                      *
    There are no interface parameters to be passed to this subroutine.   *
    FORM SET_EMAILBODY.
      CONSTANTS:
        LC_DOC_TYPE(3) TYPE C VALUE 'RAW'. " Document type
      REFRESH : T_OBJPACK,
                T_MESSBODY.
      CLEAR : FS_OBJPACK,
              FS_MESSBODY.
      MOVE:
        'Hi,'(004) TO FS_MESSBODY-LINE.
      APPEND FS_MESSBODY TO T_MESSBODY.
      CLEAR FS_MESSBODY.
      MOVE:
      'The attachment contains sales order details.'(005)
       'www.google.com'
        TO FS_MESSBODY-LINE.
      APPEND FS_MESSBODY TO T_MESSBODY.
      CLEAR W_TABLN.
      DESCRIBE TABLE T_MESSBODY LINES W_TABLN.
      CLEAR FS_MESSBODY.
      READ TABLE T_MESSBODY INTO FS_MESSBODY INDEX W_TABLN.
      FS_DOCDATA-DOC_SIZE = ( W_TABLN - 1 ) * 255 + STRLEN( W_LINE ).
      MOVE:
        SPACE    TO FS_OBJPACK-TRANSF_BIN,
        C_1      TO FS_OBJPACK-HEAD_START,
        C_0      TO FS_OBJPACK-HEAD_NUM,
        C_1      TO FS_OBJPACK-BODY_START,
        W_TABLN  TO FS_OBJPACK-BODY_NUM,
        LC_DOC_TYPE TO FS_OBJPACK-DOC_TYPE.
      APPEND FS_OBJPACK TO T_OBJPACK.
    ENDFORM.                               " Set_emailbody
    Form  prepare_output_data_for_attach                                 *
    To convert the output table data with comma delimiter                *
    There are no interface parameters to be passed to this subroutine.   *
    FORM PREPARE_OUTPUT_DATA_FOR_ATTACH.
      CONSTANTS:
        LC_DOC_TYPE(3) TYPE C VALUE 'PDF', " Document type
        LC_OBJNAME(6)  TYPE C VALUE 'SAPRPT'. " Object name
      REFRESH T_OBJHEAD.
      REFRESH T_ATTACH_DATA[].
      CLEAR   FS_ATTACH_DATA.
      T_ATTACH_DATA[] = T_OBJCONT[].
      DESCRIBE TABLE T_ATTACH_DATA LINES W_TABLN.
      FS_DOCDATA-DOC_SIZE   = ( W_TABLN - 1 ) * 255 + STRLEN( W_LINE ).
      FS_OBJPACK-BODY_NUM   = W_TABLN.
      FS_OBJPACK-DOC_SIZE   = W_TABLN * 255.
      FS_OBJPACK-TRANSF_BIN = C_X.
      FS_OBJPACK-HEAD_START = C_1.
      FS_OBJPACK-HEAD_NUM   = C_1.
      FS_OBJPACK-BODY_START = C_1.
      FS_OBJPACK-DOC_TYPE   = LC_DOC_TYPE.
      FS_OBJPACK-OBJ_NAME   = 'Attachment'.
      FS_OBJPACK-OBJ_DESCR  = 'Sales Order Details.PDF'(007).
      APPEND FS_OBJPACK TO T_OBJPACK.
    ENDFORM.                               " Prepare_output_data_for_attach
    Form  set_receipents                                                 *
    This subroutine is used to set the Receipents                        *
    There are no interface parameters to be passed to this subroutine.   *
    FORM SET_RECEIPENTS .
      CONSTANTS
       LC_REC_TYPE TYPE C VALUE 'U'.      " Receipent type
      REFRESH T_RECEIVER.
      IF P_EADDR IS NOT INITIAL.
        MOVE:
          P_EADDR TO FS_RECEIVER-RECEIVER,
          LC_REC_TYPE TO FS_RECEIVER-REC_TYPE.
        APPEND FS_RECEIVER TO T_RECEIVER.
      ENDIF.                               " IF P_EMAIL IS NOT.....
    ENDFORM.                               " Set_receipents
    Form  send_mail                                                      *
    This subroutine is used to send output by email                      *
    There are no interface parameters to be passed to this subroutine.   *
    FORM SEND_MAIL.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
        EXPORTING
          DOCUMENT_DATA                   = FS_DOCDATA
          PUT_IN_OUTBOX                   = C_X
        SENDER_ADDRESS                   = SY-UNAME
        SENDER_ADDRESS_TYPE              = 'B'
          COMMIT_WORK                     = C_X
        TABLES
          PACKING_LIST                    = T_OBJPACK
          OBJECT_HEADER                   = T_OBJHEAD
          CONTENTS_BIN                    = T_ATTACH_DATA
          CONTENTS_TXT                    = T_MESSBODY
          RECEIVERS                       = T_RECEIVER
       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 NE 0.
        MESSAGE I007(CLAIM).
      ELSE.
        MESSAGE S592(EI).
      ENDIF.                               " IF sy-subrc NE 0.
    ENDFORM.                               " Send_mail
    *&      Form  table_shift
    The PDF file that is generated out of the above function module
    cannot be transported as it needs to be of 255 chars.Hence
    converting the file to get a 255 char single line,internal table.
    *There are no interface parameters to be passed to this subroutine
    FORM TABLE_SHIFT .
      CONSTANTS:
        CNV_HEXCONST_ZERO TYPE X VALUE '00'.
      DATA:
        LV_BIG_LINES(268) TYPE C
                          OCCURS 0 WITH HEADER LINE.
      DATA:
        LFL_FLAG          TYPE C,
        LV_LEFT_T(268)    TYPE C,
        LV_LEFT_I         TYPE I,
        TV_LEFT_I         TYPE I,
        LV_CURR_I         TYPE I.
      FIELD-SYMBOLS: <F>.
    Get the lines into a table of 268 char as the first step to put it in
    the pdf file of 255 chars
      CLEAR LFL_FLAG.
      LOOP AT T_PDF_DATA INTO FS_PDF_DATA.
        IF LFL_FLAG EQ ' '.
          CLEAR LV_BIG_LINES WITH CNV_HEXCONST_ZERO.
          ASSIGN LV_BIG_LINES(134) TO <F>.
          <F> = FS_PDF_DATA.
          LFL_FLAG = 'X'.
        ELSE.
          LV_BIG_LINES+134 = FS_PDF_DATA.
          APPEND LV_BIG_LINES.
          CLEAR: LFL_FLAG.
        ENDIF.                             " If lfl_flag = ''..
      ENDLOOP.                             " Loop at t_pdf
      IF LFL_FLAG EQ 'X'.
        APPEND LV_BIG_LINES.
      ENDIF.                               " If lflf_flag eq 'X'..
    Next fill it into a 255 char table
      CLEAR: LV_LEFT_T, LV_LEFT_I, TV_LEFT_I.
      LV_CURR_I = 255.
      LOOP AT LV_BIG_LINES.
        IF LV_LEFT_I NE 0.
          IF LV_CURR_I NE 0.
            FS_OBJCONT(LV_LEFT_I)           = LV_LEFT_T(LV_LEFT_I).
            FS_OBJCONT+LV_LEFT_I(LV_CURR_I) = LV_BIG_LINES(LV_CURR_I).
          ELSE.
            FS_OBJCONT = LV_LEFT_T(LV_LEFT_I).
          ENDIF.                           " IF lv_curr_i NE 0
        ELSE.
          FS_OBJCONT = LV_BIG_LINES(LV_CURR_I).
        ENDIF.                             " IF lv_left_i NE 0
        APPEND FS_OBJCONT TO T_OBJCONT.
        TV_LEFT_I = 268 - LV_CURR_I.
        IF TV_LEFT_I > 255.
          FS_OBJCONT = LV_BIG_LINES+LV_CURR_I(255).
          APPEND FS_OBJCONT TO T_OBJCONT.
          LV_LEFT_I = TV_LEFT_I - 255.
          TV_LEFT_I = 255 + LV_CURR_I.
          LV_CURR_I = 255 - LV_LEFT_I.
          LV_LEFT_T = LV_BIG_LINES+TV_LEFT_I.
        ELSE.
          LV_LEFT_T = LV_BIG_LINES+LV_CURR_I.
          LV_LEFT_I = 268 - LV_CURR_I.
          LV_CURR_I = 255 - LV_LEFT_I.
        ENDIF.                             " IF tv_left_i > 255
      ENDLOOP.                             " LOOP AT lv_big_lines.
      CLEAR FS_OBJCONT WITH CNV_HEXCONST_ZERO.
      ASSIGN FS_OBJCONT(LV_LEFT_I) TO <F>.
      <F> = LV_LEFT_T(LV_LEFT_I).
      APPEND FS_OBJCONT TO T_OBJCONT.
    ENDFORM.                               " Table_shift

  • How to convert smartform into pdf and send through mail

    Hi Guru,
    I want to send smartform to mail after converting into pdf format.
    if anyof u gives solution its greate.
    Thanks & Regards,
    Lakshmi..

    Hi,
    i can help you till
    downloading the smartform as pdf format
    check this
    DATA: GIT_BSIK LIKE BSIK OCCURS 0 WITH HEADER LINE.
    Variable declarations
    DATA:
    W_FORM_NAME TYPE TDSFNAME VALUE 'ZFII_EDD001',
    W_FMODULE TYPE RS38L_FNAM,
    W_CPARAM TYPE SSFCTRLOP,
    W_OUTOPTIONS TYPE SSFCOMPOP,
    W_BIN_FILESIZE TYPE I, " Binary File Size
    W_FILE_NAME TYPE STRING,
    W_FILE_PATH TYPE STRING,
    W_FULL_PATH TYPE STRING.
    Internal tables declaration
    Internal table to hold the OTF data
    DATA:
    T_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,
    Internal table to hold OTF data recd from the SMARTFORM
    T_OTF_FROM_FM TYPE SSFCRESCL,
    Internal table to hold the data from the FM CONVERT_OTF
    T_PDF_TAB LIKE TLINE OCCURS 0 WITH HEADER LINE.
    This function module call is used to retrieve the name of the Function
    module generated when the SMARTFORM is activated
        CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
        FORMNAME = W_FORM_NAME
        VARIANT = ' '
        DIRECT_CALL = ' '
        IMPORTING
        FM_NAME = W_FMODULE
        EXCEPTIONS
        NO_FORM = 1
        NO_FUNCTION_MODULE = 2
        OTHERS = 3
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    Calling the SMARTFORM using the function module retrieved above
    GET_OTF parameter in the CONTROL_PARAMETERS is set to get the OTF
    format of the output
    W_CPARAM-NO_DIALOG = 'X'.
    W_CPARAM-PREVIEW = SPACE. " Suppressing the dialog box
    " for print preview
    W_CPARAM-GETOTF = 'X'.
    Printer name to be used is provided in the export parameter
    OUTPUT_OPTIONS
    W_OUTOPTIONS-TDDEST = 'ZPC_'.
          CALL FUNCTION W_FMODULE
          EXPORTING
          ARCHIVE_INDEX =
          ARCHIVE_INDEX_TAB =
          ARCHIVE_PARAMETERS =
          CONTROL_PARAMETERS = W_CPARAM
          MAIL_APPL_OBJ =
          MAIL_RECIPIENT =
          MAIL_SENDER =
          OUTPUT_OPTIONS = W_OUTOPTIONS
          USER_SETTINGS = 'X'
          IMPORTING
          DOCUMENT_OUTPUT_INFO =
          JOB_OUTPUT_INFO = T_OTF_FROM_FM
          JOB_OUTPUT_OPTIONS =
               TABLES
                ITAB                       = GIT_BSIK
          EXCEPTIONS
          FORMATTING_ERROR = 1
          INTERNAL_ERROR = 2
          SEND_ERROR = 3
          USER_CANCELED = 4
          OTHERS = 5.
          IF SY-SUBRC <> 0.
            MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.
    T_OTF[] = T_OTF_FROM_FM-OTFDATA[].
    Function Module CONVERT_OTF is used to convert the OTF format to PDF
          CALL FUNCTION 'CONVERT_OTF'
          EXPORTING
          FORMAT = 'PDF'
          MAX_LINEWIDTH = 132
          ARCHIVE_INDEX = ' '
          COPYNUMBER = 0
          ASCII_BIDI_VIS2LOG = ' '
          PDF_DELETE_OTFTAB = ' '
          IMPORTING
          BIN_FILESIZE = W_BIN_FILESIZE
          BIN_FILE =
          TABLES
          OTF = T_OTF
          LINES = T_PDF_TAB
          EXCEPTIONS
          ERR_MAX_LINEWIDTH = 1
          ERR_FORMAT = 2
          ERR_CONV_NOT_POSSIBLE = 3
          ERR_BAD_OTF = 4
          OTHERS = 5
          IF SY-SUBRC <> 0.
            MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.
    *To display File SAVE dialog window
    CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
    WINDOW_TITLE =
    DEFAULT_EXTENSION =
    DEFAULT_FILE_NAME =
    FILE_FILTER =
    INITIAL_DIRECTORY =
    WITH_ENCODING =
    PROMPT_ON_OVERWRITE = 'X'
    CHANGING
    filename = w_FILE_NAME
    path = w_FILE_PATH
    fullpath = w_FULL_PATH
    USER_ACTION =
    FILE_ENCODING =
    EXCEPTIONS
    CNTL_ERROR = 1
    ERROR_NO_GUI = 2
    NOT_SUPPORTED_BY_GUI = 3
    others = 4
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Use the FM GUI_DOWNLOAD to download the generated PDF file onto the
    presentation server
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    BIN_FILESIZE = W_bin_filesize
    filename = w_FULL_PATH
    FILETYPE = 'BIN'
    APPEND = ' '
    WRITE_FIELD_SEPARATOR = ' '
    HEADER = '00'
    TRUNC_TRAILING_BLANKS = ' '
    WRITE_LF = 'X'
    COL_SELECT = ' '
    COL_SELECT_MASK = ' '
    DAT_MODE = ' '
    CONFIRM_OVERWRITE = ' '
    NO_AUTH_CHECK = ' '
    CODEPAGE = ' '
    IGNORE_CERR = ABAP_TRUE
    REPLACEMENT = '#'
    WRITE_BOM = ' '
    TRUNC_TRAILING_BLANKS_EOL = 'X'
    WK1_N_FORMAT = ' '
    WK1_N_SIZE = ' '
    WK1_T_FORMAT = ' '
    WK1_T_SIZE = ' '
    IMPORTING
    FILELENGTH =
    tables
    data_tab = T_pdf_tab
    FIELDNAMES =
    EXCEPTIONS
    FILE_WRITE_ERROR = 1
    NO_BATCH = 2
    GUI_REFUSE_FILETRANSFER = 3
    INVALID_TYPE = 4
    NO_AUTHORITY = 5
    UNKNOWN_ERROR = 6
    HEADER_NOT_ALLOWED = 7
    SEPARATOR_NOT_ALLOWED = 8
    FILESIZE_NOT_ALLOWED = 9
    HEADER_TOO_LONG = 10
    DP_ERROR_CREATE = 11
    DP_ERROR_SEND = 12
    DP_ERROR_WRITE = 13
    UNKNOWN_DP_ERROR = 14
    ACCESS_DENIED = 15
    DP_OUT_OF_MEMORY = 16
    DISK_FULL = 17
    DP_TIMEOUT = 18
    FILE_NOT_FOUND = 19
    DATAPROVIDER_EXCEPTION = 20
    CONTROL_FLUSH_ERROR = 21
    OTHERS = 22
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    thanks & regards,
    Venkatesh

  • Export ABAP List to Excel and send it as email attachment

    Hi,
    I have a program that sends email to employees, using SAP Office, this email sends an attachment in html (an abap lisp exported to html). To create this attachment I use LIST_FROM_MEMORY to recover data and then WWW_HTML_FROM_LISTOBJECT to create the html file.
    Then the email is sent using SO_NEW_DOCUMENT_ATT_SEND_API1 and it works fine. But now I need to send this ABAP List as an Excel instead of sending as a HTML file.
    How can I do this? Is this possible?
    Thanks in advance
    Best regards
    P.S: I've tried to recover information from ABAP List as an ASCII file (using LIST_TO_ASCII instead of WWW_HTML_FROM_LISTOBJECT) and then sending the file as an XLS instead of HTM (this is determined in PACKING_LIST parameter of SO_NEW_DOCUMENT_ATT_SEND_API1), but when I open the excel file, all information is stored in the first cell, so you cannot perform any operation on it.

    Hi,
    Please refer to the link below :
    http://www.sapdev.co.uk/reporting/rep_spooltopdf.htm
    or
    http://www.sapdev.co.uk/reporting/email/attach_xls.htm
    Thanks,
    Sriram Ponna.

Maybe you are looking for

  • Create Unique Index On Flow does not work for table names 23 characters

    I have a "create unique index on flow table" step that is dynamically generated by the IKM. The index name that is generated by the IKM is based on the table name except that the created index name is prefixed with "I$_" and ends with "_idx". Obvious

  • Unable to view bt bill for 3 months so far

    It all started around March with this "new updated" software The bill simply doesn't show My own view is that the software is deliberately useless to try and force customers to use direct debit There's no simple html option either, just pages of bad

  • JTabel Question

    I am trying to display the content of a selected in a JTable in a JTextField. Here is a partical of my code: //editTFD and mainTable are global editTFD = new JTextField();      editTFD.setEditable(true);      editTFD.setBorder(BorderFactory.createLow

  • If I create and publish content with the trial version of Captivate 8 will it (the content) expire?

    I see this is the case with Captivate 6,  content expires 30 days after publishing or something like that. Does anyone know if they have kept this "feature" with Captivate 8?  Cheers

  • GlassFish suddenly stopped working

    Hi there I am using NetBeans 6.7.1 on OS X 10.5.8. I have been busy coding all day today in Java Server Faces using Netbeans. This evening all of a sudden Netbeans would not allow me to run my program (which was working fine 10 mins previous). I deci