Convert Spool to PDF and mail for the jobs not run in background.

Dear All,
I need to convert the spool job into pdf and mail as attachment for job not run in background.
I am printing the bills  using the program  SD70AV3A to print the bills in a batch using the SUBMIT.
But i am not using the spool options since its going to into waiting state in spool...and i need to change the printer properties to G
to get the printer to print the reports as these jobs run in backgroud....but this solution is not acceptable solution.
SUBMIT SD70AV3A
         WITH RG_KSCHL-LOW = 'ZRR'
         WITH RG_NACHA-LOW = '1'
         WITH PM_VERMO = '2'
         WITH PM_NSORT = '1'
         WITH RG_VBELN IN range.
*        TO SAP-SPOOL
*        SPOOL PARAMETERS print_parameters
*        WITHOUT SPOOL DYNPRO
*        VIA JOB name NUMBER number
*        AND RETURN.
so how do i get the spool number from the above after the job is submitted....and then convert into pdf and mail
please suggest some solution. I have searched on net but most the solutions are say to run the job as background job...
i have also looked into the program RSTXPDFT4 but it asks for the spool id ....how can i get spool id for the job that has been completed.
please suggest some solution.
Thanks
Bhargava.

Hi,
Spool to PDF : FM 'CONVERT_ABAPSOOLJOB_2_PDF'
Table TSP01 to get spool number
You ,may need to convert OTF to PDF: FM CONVERT_OTF
and the to binary : FM 'SMCS_XSTRING_TO_BINARY'
To send mail use class: cl_document _bcs.
Regards,
Maria João Rocha

Similar Messages

  • Convert spool to PDF and send as email attachment

    When i try to convert SAP spool to PDF and send it as email attachment,  size of PDF document becomes large as compared to size of the PDF cocument i download using the same spool.
    I am using following FMs.
    CONVERT_ABAPSPOOLJOB_2_PDF to convert spool to PDF
    and
    SO_NEW_DOCUMENT_ATT_SEND_API1 to send email with attchment.
    some times size of attchment exceeds 2MB and email results in error in SAP connect (SOST).
    Any idea on how to compress the PDF attchment??
    Thanks

    Hi Venkat,
    Can you plesae assist me.
    I have a requirement to convert spool to pdf
    send an email to users
    issue is that attachement is big cant go through
    I have used compress, but when I open the pdf file error that file was not correclty decoded
    please assist, anyone

  • Converting report to PDF and mailing

    Hi every one,
    I've gone through various threads and i'm aware of the Functional module's used to
    convert the report to pdf and mail it back.Like CONVERT_OTFSPOOLJOB_2_PDF, CONVERT_OTF_2_PDF and for mailing we have SEND_NEW_DOCUMENT_ATT_SEND_API1.
    I've worked with this but my problem is i'm not able to convet the report output to pdf.When i'm doing this i'm getting the output of my functional module converted to pdf like the number of header and item records available for the given data in the selection screen.
    Since all the threads i've gone through is converting the single internal table which has the output to pdf.
    But i've got the REUSE_ALV_HIERSQL_LIST_DISPLAY, hierarchial report which as known has got two internal tables.How to the same to this kind of report....More over is it possible to convert report to pdf in online without transfering it to spool and getting the spool id to convert it to pdf.........
    Any help or suggestions will surely be rewarded......
    Thanks in Advance.....

    Here is the complete code for you;
    It Converts spool request into PDF document and emails it.
    <b>http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm</b>
    Regards,
    Vishal

  • Convert alv to pdf and mail

    hi friends,
    i want convert the alv report to pdf and mail the same pdf.
    have used function REUSE_ALV_LIST_DISPLAY to display alv report.
    i am using CONVERT_ABAPSPOOLJOB_2_PDF to convert the alv report to pdf.
    now i need to mail the pdf implicitly to the email address.
    i have used some function to mail the pdf but it is asking for the path which has to be hard coded.
    the path cannot be hard coded.
    cant use F4_GETFILENAME or gui_upload  to attach the file or to get the path because the pdf has to be sent directly to some email address.
    thanks.
    regards,
    akshay ruia.

    Please refer the link below.............
    Sample Program To Convert Smartform To PDF Document & Mail It To The Concerned As An Attachment.
    [http://www.abapmadeeasy.com/2011/02/sap-abap-sample-program-to-convert.html|http://www.abapmadeeasy.com/2011/02/sap-abap-sample-program-to-convert.html]
    Regards,
    Uttam Agrawal
    http://www.abapmadeeasy.com
    Edited by: uttamagrawal on Feb 22, 2011 9:19 AM

  • Converting spool to PDF and attaching in a mail

    Hi ,
    My requirement is I have to execute my program in background and the spool created should be sent to the user as an email attachment. Please help.
    Moderator message: FAQ, please (re)search and try yourself before asking.
    Edited by: Thomas Zloch on Jul 12, 2010 2:54 PM

    Hi Sunanda,
    You can schedule your program in background in SM36 Tcode. If you goto SM36, you can find one button 'Spool list recipient'. If you click that button, you can give the Recipient ID there.
    Once the job is finished and spool is generated, that spool will be sent as an attachment to the recipient.
    you can give external email address as well. (Press F4 in Recipient box).
    Thanks,
    J.

  • Convert spool to pdf and send in email sometimes attachment duplicated.

    Hi all, I have a process that creates a spool, converts it to a pdf and then attaches it to an email. My problem is that sometimes, the same attachment is duplicated.
    The process seems to work fine in debug mode (the attachment changes for each loop) but when I run it in the background, every few emails, it will duplicate an attachment.
    I have noticed that the size of the pdf seems to change properly but that the content of the pdf does not match.  So, it is like it gets the correct size of the pdf but not the body.
    This is code that a consultant wrote and I am pretty new to abap/sap. I have changed some of the code because it was trying to handle an endless loop (I figured it should not have to handle (be in) an endless loop). I changed that code and it is working but this previous issue still exists. Thanks for your help.
    *&      Form  PROCESS_EMPLOYEE
    FORM process_employee .
    * process appraisal only
      IF it_final[] IS NOT INITIAL .
    *                READ DISTRIBUTION LIST                                *
        REFRESH : it_email, it_idlient. 
    *Sort by supervisor
        SORT it_final[] BY supervisor.
        LOOP AT it_final INTO wa_final .
          APPEND wa_final TO it_final1 .
          AT END OF supervisor .
    * Perform to create the PDF from the Output
           report = 'zhr_pm_appemail'.
           PERFORM create_pdf using report.
    ** Perform to email the PDF attachment
    ** to the supervisor and the Mailing list
            subject = 'Performance Appraisals'.
            PERFORM process_email using subject.
            REFRESH it_final1 .
            CLEAR it_final1 .
            CLEAR wa_final .
            FREE MEMORY ID 'MEM'.
          ENDAT .
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " PROCESS_EMPLOYEE
    *&      Form  CREATE_PDF
    FORM create_pdf using report.
      DATA:  spoolno TYPE tsp01-rqident.
      DATA : p_repid TYPE sy-repid .
      DATA: v_len  TYPE i , v_len1  TYPE i .
      DATA: v_temp(8) TYPE c .
      DATA: p_uname TYPE sy-uname .
      DATA: it_tsp01 TYPE STANDARD TABLE OF tsp01 WITH HEADER LINE .
    *  DATA: it_pdf TYPE tline OCCURS 0 WITH HEADER LINE .
      TABLES: tsp01.
      DATA: var  TYPE c .
    *-- STRUCTURES
      DATA:
        lc_rq2name TYPE tsp01-rq2name.
      DATA:
        mstr_print_parms TYPE pri_params,
        mc_valid(1)      TYPE c,
        mi_bytecount     TYPE i,
        mi_length        TYPE i,
        mi_rqident       TYPE tsp01-rqident.
    *-- INTERNAL TABLES
      DATA:
        mtab_pdf    TYPE tline OCCURS 0 WITH HEADER LINE,
        mc_filename TYPE rlgrap-filename.
    *-- SELECTION SCREEN
      DATA:
        p_linsz TYPE sy-linsz VALUE 80, " Line size
        p_paart TYPE sy-paart VALUE 'X_65_80'.  " Paper Format
        p_uname = sy-uname .
        var = var + 1.
        p_repid = report.
    * START-OF-SELECTION .
      concatenate p_repid+0(9)
                  p_uname+0(3)
            into mc_filename
       separated by '_'.
    translate mc_filename to upper case.
    *-- Setup the Print Parmaters
      CALL FUNCTION 'GET_PRINT_PARAMETERS'
        EXPORTING
          authority              = space
          copies                 = '1'
          cover_page             = space
          data_set               = space
          department             = space
          destination            = space
          expiration             = '1'
          immediately            = space
          new_list_id            = 'X'
          no_dialog              = 'X'
          user                   = sy-uname
        IMPORTING
          out_parameters         = mstr_print_parms
          valid                  = mc_valid
        EXCEPTIONS
          archive_info_not_found = 1
          invalid_print_params   = 2
          invalid_archive_params = 3
          OTHERS                 = 4.
    IF sy-subrc = 0 .
    *--Make sure that a printer destination has been set up. If this is not done the PDF module abends.
    *-- Explicitly set line width, and output format so that
    *-- the PDF conversion comes out OK
      mstr_print_parms-linsz = p_linsz.
      mstr_print_parms-paart = p_paart.
            EXPORT it_final1 it_email p_email1 p_sender p_date vl_nmth
            TO MEMORY ID 'MEM' .
          IF report =   'zhr_pm_appandprogemail'.
             SUBMIT zhr_pm_appandprogemail TO SAP-SPOOL WITHOUT SPOOL DYNPRO
          SPOOL PARAMETERS mstr_print_parms
          VIA SELECTION-SCREEN AND RETURN.
          ENDIF.
          IF report =   'zhr_pm_appemail'.
             SUBMIT zhr_pm_appemail TO SAP-SPOOL WITHOUT SPOOL DYNPRO
          SPOOL PARAMETERS mstr_print_parms
          VIA SELECTION-SCREEN AND RETURN.
          ENDIF.
    ENDIF.
    *Find out what the spool number is that was just created
      perform get_spool_number using p_repid p_uname changing mi_rqident.
    *converting the spool request into pdf
      CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
        EXPORTING
          src_spoolid              = mi_rqident
          no_dialog                = space
          dst_device               = mstr_print_parms-pdest
        IMPORTING
          pdf_bytecount            = mi_bytecount
        TABLES
          pdf                      = it_pdf
        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.
    *  call function 'DOWNLOAD'
    *    exporting
    *      bin_filesize      = mi_bytecount
    *      filename          = mc_filename
    *      filetype          = 'BIN'
    *    importing
    *      act_filename      = mc_filename
    *    tables
    *      data_tab          = it_mess_att.
      CHECK sy-subrc = 0.
    * Transfer the 132-long strings to 255-long strings
      LOOP AT it_pdf INTO wa_pdf.
        TRANSLATE wa_pdf USING ' ~'.
        CONCATENATE v_gd_buffer wa_pdf INTO v_gd_buffer.
        CLEAR wa_pdf .
      ENDLOOP.
      TRANSLATE v_gd_buffer USING '~ '.
      DO.
        it_mess_att = v_gd_buffer.
       APPEND it_mess_att.
        SHIFT v_gd_buffer LEFT BY 255 PLACES.
        IF v_gd_buffer IS INITIAL.
          EXIT.
        ENDIF.
      ENDDO.
    ENDFORM.                    " CREATE_PDF
    * FORM get_spool_nunber *
    * Get the most recent spool created by user/report                      *
    form get_spool_number using f_repid
          f_uname changing f_rqident.
      data:
            lc_rq2name TYPE rlgrap-filename.
      concatenate f_repid+0(6)
                  f_repid+7(3)
                  f_uname+0(3)
            into lc_rq2name.
    *   separated by '_'.
    translate lc_rq2name to upper case.
      select * from tsp01 where rq2name = lc_rq2name
        order by rqcretime descending.
          f_rqident = tsp01-rqident.
          exit.
          endselect.
          if sy-subrc ne 0.
            clear f_rqident.
          endif.
    endform. " get spool number
    *&      Form  SEND_MAIL
    FORM send_email USING p_email subject.
      REFRESH it_mess_bod.
    * Default subject matter
      gd_subject         = text-019 ."'Subject'.
      gd_attachment_desc = text-020 ."'Performance Appraisal'.
      IF subject =   'Performance Appraisals and Progression I'.
        gd_attachment_desc = 'PerfAppAndProg'.
      ENDIF.
      IF subject =   'Performance Appraisals'.
        gd_attachment_desc = 'PerfAppraisal'.
      ENDIF.
    * 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 .pdf
      PERFORM send_file_as_email_attachment
                                   TABLES it_mess_bod
                                          it_mess_att
                                    USING p_email
                                          subject
                                          'PDF'
                                          gd_attachment_desc
                                          gd_attachment_desc
                                          p_sender
                                          gd_sender_type
                                 CHANGING gd_error
                                          gd_reciever.
    ENDFORM.                    " SEND_MAIL
    *       FORM process_email                                            *
    FORM process_email using subject.
      DESCRIBE TABLE it_mess_att LINES gd_recsize.
      CHECK gd_recsize > 0.
      PERFORM send_email USING p_email1 subject.
    *  perform send_email using p_email2.
    ENDFORM.                    "process_email
    *&      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.
      CLEAR : ld_email , ld_mtitle , ld_format , ld_attdescription  ,
        ld_attfilename , ld_sender_address , ld_sender_address_type ,
        w_doc_data.
      REFRESH: t_packing_list.
      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.
      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.
      LOOP AT it_email.
    * Add the recipients email address
        t_receivers-receiver = it_email.
        t_receivers-rec_type = 'U'.
        t_receivers-com_type = 'INT'.
        t_receivers-notif_del = 'X'.
        t_receivers-notif_ndel = 'X'.
        APPEND t_receivers.
      ENDLOOP.
      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_HEX               = 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.
      IF sy-subrc = 0.
        PERFORM update_infotype_0019 .
      ENDIF.
    * Populate zerror return code
    *  ld_error = sy-subrc.
    **  stop .
    *  READ TABLE t_receivers WITH KEY retrn_code = '0' .
    *  IF sy-subrc = 0 .
    *    v_update_flag = '1' .
    *    EXPORT v_update_flag TO MEMORY ID 'MEM2' .
    *  ENDIF .
    ** Populate zreceiver return code
    *  LOOP AT t_receivers.
    *    ld_receiver = t_receivers-retrn_code.
    *  ENDLOOP.
    ENDFORM.                    "send_file_as_email_attachment
    *&      Form  GET_NEXT_MONTH
    FORM get_next_month .
      CLEAR v_month .
      v_month = vl_nmth+4(2).
      REFRESH it_t247 .
      CLEAR it_t247 .
      CALL FUNCTION 'IDWT_READ_MONTH_TEXT'
        EXPORTING
          langu = 'E'
          month = v_month
        IMPORTING
          t247  = it_t247.
      CLEAR v_mon_text .
      v_mon_text = it_t247-ltx .
    ENDFORM.                    " GET_NEXT_MONTH
    Edited by: Katie Doody on Feb 24, 2010 12:30 AM

    Thank you for your response, this has allowed me to identify the problem. It is when I create the spool by using the code below. If I add a wait after this, the program works successfully. Is there another way to write the data to create a spool within my initial program rather than doing the submit? Could it be that it is putting data in memory?
    SUBMIT zhr_pm_appandprogemail TO SAP-SPOOL WITHOUT SPOOL DYNPRO
          SPOOL PARAMETERS mstr_print_parms
          VIA SELECTION-SCREEN AND RETURN.
    *& Report  ZHR_PM_APPANDPROGEMAIL
    REPORT  ZHR_PM_APPANDPROGEMAIL
            NO STANDARD PAGE HEADING
            LINE-SIZE 80
            LINE-COUNT 65(8).
    *        MESSAGE-ID zhr.
    * INTERNAL TABLES DECLARATION
    DATA: it_pdf TYPE tline OCCURS 0 ." WITH HEADER LINE .
    * WORK AEA DECLARATION
    DATA: wa_pdf TYPE tline .
    * Spool to PDF conversions
    *DATA: "gd_spool_nr TYPE tsp01-rqident,
    *      gd_destination TYPE rlgrap-filename,
    *      gd_bytecount TYPE tst01-dsize,
    DATA:v_update_flag TYPE c .                                   "flag for updating infotype 41 last appraisal date
    DATA: v_gd_buffer TYPE string.
    DATA: BEGIN OF it_final1 OCCURS 0 ,
            supervisor      TYPE persno ,
            pernr           TYPE persno ,
            ename           TYPE pa0001-ename ,
            subgroup        TYPE persk ,
            stext           TYPE t503t-ptext ,
            lastapp         TYPE dats ,
            lastjob         TYPE dats ,
            email           TYPE ztype,
            darxx(5)        TYPE c,
            progression(1)  TYPE c,
            supervisor_desc(50) TYPE c,
          END OF it_final1 .
    DATA:   t_packing_list TYPE sopcklsti1 OCCURS 0 WITH HEADER LINE,
            t_contents TYPE solisti1 OCCURS 0 WITH HEADER LINE,
            t_receivers TYPE somlreci1 OCCURS 0 WITH HEADER LINE,
            t_attachment TYPE solisti1 OCCURS 0 WITH HEADER LINE,
            t_object_header TYPE solisti1 OCCURS 0 WITH HEADER LINE,
            w_cnt TYPE i,
            w_sent_all(1) TYPE c,
            w_doc_data TYPE sodocchgi1 .
    DATA: gd_error    TYPE sy-subrc,
          gd_reciever TYPE sy-subrc.
    DATA: v_flag TYPE c VALUE '1' .
    DATA: BEGIN OF it_final OCCURS 0 ,
            subgroup       TYPE persk ,
            supervisor     TYPE persno ,
            pernr          TYPE persno ,
            ename          TYPE pa0001-ename ,
            stext          TYPE t503t-ptext ,
            lastapp        TYPE dats ,
            lastjob        TYPE dats ,
            email          TYPE ztype,
            progression(1) TYPE c,
            supervisor_desc(50) TYPE c,
          END OF it_final .
    DATA:it_t247 TYPE STANDARD TABLE OF t247 WITH HEADER LINE .
    DATA: it_email TYPE STANDARD TABLE OF zemail WITH HEADER LINE.
    *VARIABLE DECLARATION
    DATA: p_date   TYPE sy-datum ,               "excution date
          vl_date  TYPE sy-datum ,
          p_email1 TYPE somlreci1-receiver ,     "receiver
          p_sender TYPE somlreci1-receiver .     "sender
    DATA:  w_recsize TYPE i.
    DATA: gd_recsize TYPE i.
    DATA : vl_nmth TYPE sy-datum.
    DATA: v_month(2) TYPE n .
    DATA: v_mon_text TYPE t247-ltx .
    *START OF SELECTION
    START-OF-SELECTION .
      REFRESH t_receivers.
      IMPORT it_final1 it_email p_email1 p_sender p_date vl_nmth FROM MEMORY ID 'MEM'.
      PERFORM get_next_month .
      LOOP AT it_final1 .
        IF  it_final1-progression IS NOT INITIAL.
          MOVE-CORRESPONDING it_final1 TO it_final .
          APPEND it_final .
          CLEAR  it_final .
    *   Add the recipients email address
          t_receivers-receiver = it_final1-email.
          t_receivers-rec_type = 'U'.
          t_receivers-com_type = 'INT'.
          t_receivers-notif_del = 'X'.
          t_receivers-notif_ndel = 'X'.
          APPEND t_receivers.
        ENDIF.
      ENDLOOP .
      PERFORM write_output .
    *END OF SELECTION
    END-OF-SELECTION .
    *&      Form  WRITE_OUTPUT
    FORM write_output .
      DATA: l_date(14) TYPE c ,
            l_date_temp(14) TYPE c ,
            v_date(10) TYPE c ,
            v_date1(20) TYPE c ,
            v_date1_temp(20) TYPE c ,
            f_date(10) TYPE c.
      DATA: lv_stext TYPE t503t-ptext .
      CLEAR : v_date, v_date1.
      CONCATENATE p_date+4(02) p_date+6(02) p_date+0(04)'.' INTO v_date.
      CONCATENATE v_mon_text p_date+0(4) INTO l_date_temp SEPARATED BY space.
      CONCATENATE l_date_temp '.' INTO l_date.
      CONCATENATE v_mon_text vl_nmth+6(2) INTO v_date1_temp SEPARATED BY space.
      CONCATENATE v_date1_temp ',' INTO v_date1_temp.
      CONCATENATE v_date1_temp vl_nmth(4) INTO v_date1_temp SEPARATED BY space.
      CONCATENATE v_date1_temp '.' INTO v_date1.
      CONDENSE l_date .
      FORMAT INTENSIFIED ON.
      SKIP 4.
      WRITE:/(80) text-001 CENTERED .         "'METROPOLITAN UTILITIES DISTRICT'.
      WRITE:/(80) text-002 CENTERED .         "'OMAHA NEBR.'.
      SKIP 2.
      WRITE:/(80) text-003 CENTERED .        "'Inter-Departmental Communication'.
      FORMAT INTENSIFIED OFF.
      WRITE  :/(80) v_date CENTERED using edit mask '__/__/____'.   " v_date.
      SKIP 2.
      WRITE: /10 text-004.                     "'SUBJECT:   Performance Appraisals and Progression Increase'.
      SKIP 1.
      WRITE: /10 text-005, it_final1-supervisor_desc.  "'TO: Supervisor'.
      SKIP 1.
      WRITE: /10 text-006.                     "'FROM:      Anne M. Undajon, Director of Compensation and Benefits'.
      SKIP 2.
      WRITE:/10 text-007 .                       "'Listed below are the employees in your area who are due a '.
      WRITE:/10 text-008 ,l_date.                "'Performance Appraisal during the month of ',l_date.'.      "v_mon_text , P_date+0(4)
      WRITE:/10 text-009 .                       "'These employees are also eligible for a progression increase.
      WRITE:/10 text-010 .                       "' A performance appraisal form can be found on-line in the MUD '.
      WRITE:/10 text-011 .                       "'template section. The Performance Appraisal is to be completed '
      WRITE:/10 text-012 .                       "'and discussed with the employee by the immediate supervisor.'
      SKIP 2.
      WRITE:/10 text-013.                        "Signed forms should be returned to the Human Resource Department by '.
      WRITE:/10 v_date1.
      SKIP 2 .
      SORT it_final[] BY subgroup .
      LOOP AT it_final .
        CLEAR: lv_stext .
        lv_stext =  it_final-stext.
        AT NEW subgroup .
          TRANSLATE lv_stext TO UPPER CASE .
          WRITE:/(80) lv_stext CENTERED .
          SKIP 2 .
          WRITE: 10 text-014 .                      "'Employee name' .
          WRITE: 32 text-015 .                      "'Job Date' .
          WRITE :44 text-016 .                      "'Last Appraisal' .
          WRITE :59 text-021 .                      "'Employee' .
          WRITE :/10 '--------------------' , 32'----------', 44 '--------------', 59 '--------'.
        ENDAT .
        WRITE:/10 it_final-ename .
        WRITE: 32 it_final-lastjob using edit mask '__/__/____'.
        CONCATENATE it_final-lastapp+4(02) it_final-lastapp+6(02) it_final-lastapp+0(04) INTO f_date.
        WRITE :44 f_date using edit mask '__/__/____'.
        SHIFT it_final-pernr left deleting leading '0'.
        WRITE : 59 it_final-pernr.
        SKIP 2 .
      ENDLOOP.
      SKIP 4.
      WRITE :10 text-017.             "'Anne M. Undajon'.
      FORMAT INTENSIFIED ON.
      WRITE:/10 text-018.              "'Director of Compensation & Benefits'.
      FORMAT INTENSIFIED OFF.
    ENDFORM.                    " WRITE_OUTPUT
    *&      Form  GET_NEXT_MONTH
    FORM get_next_month .
      CLEAR v_month .
      v_month = vl_nmth+4(2).
      REFRESH it_t247 .
      CLEAR it_t247 .
      CALL FUNCTION 'IDWT_READ_MONTH_TEXT'
        EXPORTING
          langu = 'E'
          month = v_month
        IMPORTING
          t247  = it_t247.
      CLEAR v_mon_text .
      v_mon_text = it_t247-ltx .
    ENDFORM.                    " GET_NEXT_MONTH
    Edited by: Katie Doody on Feb 24, 2010 4:07 PM

  • Convert spool to PDF and transfer to archive/content server

    Hi,
    I need to generate a spool (a simple ABAP list) to PDF and store this on my content server. I know I can use ARCHIVOBJECT_CREATE_TABLE to transfer the internal PDF-table to the server, and download it by using ARCHIVOBJECT_GET_CLIENT.
    The problem is <b>how do I convert the spool to the internal table</b>? In ARCHIVOBJECT_CREATE_TABLE this table has to be of type DOCS.
    All helpful answers will be rewarded!
    - Mari Virik

    Hi Mari,
       you can use 'CONVERT_ABAPSPOOLJOB_2_PDF' function module to get the data in PDF format ... you just have to write the output intenal table data to output dataset as...
    CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
               EXPORTING
                    src_spoolid              = i_spool_no
                    no_dialog                = space
                    dst_device               = 'LOCL'
               IMPORTING
                    pdf_bytecount            = wa_byte_count
               TABLES
                    pdf                      = g_t_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.
          IF sy-subrc <> 0.
                error message
          ENDIF.
    Transfer the 132-long strings to 255-long strings
           LOOP AT g_t_pdf_output.
             TRANSLATE g_t_pdf_output USING ' ~'.
             CONCATENATE g_buffer g_t_pdf_output INTO g_buffer.
           ENDLOOP.
           TRANSLATE g_buffer USING '~ '.
           DO.
             g_t_con_bin = g_buffer.
             APPEND g_t_con_bin.
             SHIFT g_buffer LEFT BY 255 PLACES.
             IF g_buffer IS INITIAL.
               EXIT.
             ENDIF.
           ENDDO.
    This code will convert the data to pdf.
    check the following link -
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/90165b39-306b-2910-04b1-e3271ff1642f
    Hope this helps..
    Award forum points

  • Convert spool to PDF and send Email in background

    Hi Friends,
    I would like to execute one of my programs in background.
    Once I get the spool number of that program, I would like to convert into PDF format and send it as attachement to external mail address.Pl give your suggestions.
    Regards
    Elini.P

    Have also a look at the thread https://www.sdn.sap.com/sdn/collaboration.sdn?node=linkFnode6-1&contenttype=url&content=https://Re: Sending mail in PDF format in background
    See also https://www.sdn.sap.com/sdn/collaboration.sdn?node=linkFnode6-1&contenttype=url&content=https://Sending by email attached documents
    There is also this excellent weblog by Thomas Jung.
    /people/thomas.jung3/blog/2004/09/08/sending-e-mail-from-abap--version-610-and-higher--bcs-interface

  • Convert spool to xls and send the attachment through email

    Hello,
    I have a requirement to convert spool to xls and then send the xls as an attachment through email,how sould i go about it,which fm can i use please advice..
    Thanks.

    Please check the links
    Re: Spool to XLS
    Re: converting spool data to xls file format.
    Regards
    Satish Boguda

  • Background Submit to Spool,  convert spool to PDF send via email

    I am calling an ABAP in the background. this abap makes use of a custom table as the main driver ie on each change of vendor within this custom table I want to create a spool and email the spool - the spool is suppossed to be created via a submit RMCB0300  with screen selection to to sap-spool and return. I then want the program to take the spool convert it to PDF and email.
    Problems I am encountering:
    1. writing to the spool via background ABAP  as follows
       submit RMCB0300 with selection-table rspar
                  to sap-spool
                  spool parameters %_print
                 archive parameters %_archive
                 without spool dynpro and return.
    Doesn't appear to be creating the spool - rspar is populated.
    2. Best way to retrieve the correct spool number.
    3. how to successfully convert PDF output after CONVERT_ABAPSPOOLJOB_2_PDF for email attachment - if this returns IT_PDF_OUTPUT.
    is this the best way to do it:
    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.
    Thanks
    Mark
    Edited by: Matt on Apr 2, 2009 11:03 AM - amended title with formatting problems.

    Please find the code for converting SPool to pdf and sending mail
    CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
         EXPORTING
           SRC_SPOOLID              = LV_MI_RQIDENT
           NO_DIALOG                = 'X'
           DST_DEVICE               = LV_PRINT_PARMS-PDEST
         IMPORTING
           PDF_BYTECOUNT            = LV_BYTECOUNT
           PDF_SPOOLID              = LV_RQIDENT
         TABLES
           PDF                      = LT_MTAB_PDF
         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.
       IF SY-SUBRC <> 0.
         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
       ENDIF.
       LOOP AT LT_MTAB_PDF INTO LWA_MTAB_PDF.
         TRANSLATE LWA_MTAB_PDF USING ' ~'.
         CONCATENATE LV_GD_BUFFER LWA_MTAB_PDF INTO LV_GD_BUFFER.
         CLEAR LWA_MTAB_PDF.
       ENDLOOP.
       TRANSLATE LV_GD_BUFFER USING '~ '.
       DO.
         LWA_MESS_ATT = LV_GD_BUFFER.
         APPEND LWA_MESS_ATT TO LT_MESS_ATT.
         CLEAR LWA_MESS_ATT.
         SHIFT LV_GD_BUFFER LEFT BY 255 PLACES.
         IF LV_GD_BUFFER IS INITIAL.
           EXIT.
         ENDIF.
       ENDDO.
       CLEAR:  LWA_RECLIST, LT_RECLIST[],
               LT_OBJHEAD, LT_OBJHEAD[],
               LWA_OBJTXT,  LT_OBJTXT[],
               LWA_OBJBIN,  LT_OBJBIN[],
               LWA_OBJPACK, LT_OBJPACK[].
       "   CLEAR LT_OBJBIN.
       REFRESH LT_OBJBIN.
       LT_OBJBIN[] = LT_MESS_ATT[].
       DESCRIBE TABLE  LT_OBJBIN LINES LV_L_ATTACHMENT.
       LWA_OBJTXT = ''.
       APPEND LWA_OBJTXT TO LT_OBJTXT.
       CLEAR LWA_OBJTXT.
       DESCRIBE TABLE LT_OBJTXT LINES LV_L_TESTO.
       LT_DOC_CHNG-OBJ_NAME   = 'STATUS_REPORT'.
       LT_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.
       LT_DOC_CHNG-OBJ_DESCR  = 'Generated File'.               "#EC NOTEXT
       LT_DOC_CHNG-SENSITIVTY = 'F'.
       LT_DOC_CHNG-SENSITIVTY = 'O'.
       LT_DOC_CHNG-OBJ_PRIO   = '1'.
       LT_DOC_CHNG-DOC_SIZE   = LV_L_TESTO * 255.
       CLEAR LWA_OBJPACK-TRANSF_BIN.
       LWA_OBJPACK-HEAD_START = 1.
       LWA_OBJPACK-HEAD_NUM   = 0.
       LWA_OBJPACK-BODY_START = 1.
       LWA_OBJPACK-BODY_NUM   = LV_L_TESTO.
       LWA_OBJPACK-DOC_TYPE   = 'RAW'.
       APPEND LWA_OBJPACK TO LT_OBJPACK.
       CLEAR LWA_OBJPACK.
       LWA_OBJPACK-TRANSF_BIN = 'X' .
       LWA_OBJPACK-HEAD_START = 1.
       LWA_OBJPACK-HEAD_NUM   = 1.
       LWA_OBJPACK-BODY_START = 1.
       LWA_OBJPACK-BODY_NUM   = LV_L_ATTACHMENT.
       LWA_OBJPACK-DOC_TYPE   = 'PDF'.
       LWA_OBJPACK-OBJ_NAME   ='SPOOL'.
       LWA_OBJPACK-OBJ_DESCR = 'Test'.     
       LWA_OBJPACK-DOC_SIZE = LV_L_ATTACHMENT * 255.
       APPEND LWA_OBJPACK TO LT_OBJPACK.
       CLEAR LWA_OBJPACK.
       CLEAR LWA_RECLIST.
       LWA_RECLIST-COPY = 'X'.
       LWA_RECLIST-RECEIVER   = P_EMAIL.
       LWA_RECLIST-REC_TYPE   = 'U'.
       LWA_RECLIST-NOTIF_DEL  = 'X'.
       LWA_RECLIST-NOTIF_NDEL = 'X'.
       APPEND LWA_RECLIST TO LT_RECLIST.
       CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
         EXPORTING
           DOCUMENT_DATA              = LT_DOC_CHNG
           PUT_IN_OUTBOX              = ' '
           COMMIT_WORK                = 'X'
         TABLES
           PACKING_LIST               = LT_OBJPACK
           OBJECT_HEADER              = LT_OBJHEAD
           CONTENTS_BIN               = LT_OBJBIN
           CONTENTS_TXT               = LT_OBJTXT
           RECEIVERS                  = LT_RECLIST
         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.
         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
       ENDIF.

  • BODS 3.1 : How to trigger an email alert for the jobs on BODS server ?

    Hi All.
    I have this request.
    BODS 3.1 : How to trigger an email alert for the jobs on BODS server ?
    We have jobs scheduled on BODS running smoothly and absolutely fine.
    But to check, i am logging into the admin console and check for the jobs status.
    I would like to have an email to be received from BODS after each job is finished.
    It could succuessful. Or it could fail.
    Whatsoever, i wish to receive an email alert as soon as a job is finished.
    Can anyone advise me as to whether this could be made possible.
    And if yes, how this could be done.
    Thanks for your help in advance.
    In BOE CMC / for webi / schedule / we find an option to send email for a job success or a job failure.
    Is there any option similar to that in BODS ?
    Also would like to know :
    how to use the smtp_to or mail_to functions ?
    how to set up the smtp server for this ?
    thanks
    REgards
    indu
    Edited by: Indumathy Narayanan on May 31, 2011 3:47 PM

    Hi.
    Since am new to this BODS. I need some help.
    I already have many jobs which are running absolutely fine.
    And when a job runs, and finishes, am able to see the trace saying
    e.g. :
    Job_abc is completed successfully.
    We got the smtp service activated for our test server.
    and we hae a group email id.
    I have put the details of the smtp server / ip address / and said apply restarted.
    The i created a simple test script as below :
    print (' Before email ' );
    smtp_to('abc@company_name.com', 'Job ' || job_name() ||' on ' || host_name() || ' has FAILED',
    ' the job has failed', 0, 0);
    print('After Email ');
    It does send a email to as per smtp_to whatever email is specified.
    But how to differentiate between a job success
    And a job which has failed.
    I wish to have a mail which says on the subject :
    'Job ' || job_name() ||' on ' || host_name() || ' has completed successfully'
    ==> IF it is a success
    OR
    'Job ' || job_name() ||' on ' || host_name() || ' has failed'
    ==> if it has failed
    How to make the system identify, whether
    to send a success message or a error message whatever
    Could anyone advise.
    thanks
    indu

  • While converting spool to PDF, no data is coming in the PDF file.

    Hi All,
    I am submitting a z program ZPR022_INNCOMETAX_REPORT_COPY1 (which has some output display) from Z_ITSLIP_MAIL.  I am creating a job, submitting the above program via JOB  to SAP-SPOOL.
    In program ZPR022_INNCOMETAX_REPORT_COPY1 , I am getting the run time job information and from there I am getting the spool id.  Now I am converting the spool id to a PDF.  This PDF should contain the output of the program ZPR022_INNCOMETAX_REPORT_COPY1.  This output is normal output using Write statement only.  But once the program is executed, I could find no data in the PDF file.  When I check in SM37 and SP02, both the JOB and the SPOOL are created.  What I feel is the program is not picking the spool id at the run time.  Could any one help me in this regard how to proceed.
    Please find the code below.
    Program 1.
    LOOP AT pernr.
      CLEAR p_job.
      p_stim = p_stim + 120.
      CONCATENATE'ITSlip' pernr-low p_job sy-datum INTO p_job SEPARATED BY
    space.
      CALL FUNCTION 'JOB_OPEN'
        EXPORTING
          jobname   = p_job
          sdlstrtdt = p_sdat
          sdlstrttm = p_stim
        IMPORTING
          jobcount  = l_jobcount.
      SUBMIT ZPR022_INNCOMETAX_REPORT_COPY1
        WITH pnptimr6 = 'X'
        WITH pnpbegda = period-low
        WITH pnpendda = period-high
        WITH pnppernr-low = pernr-low
        WITH pnpabkrs-low = 'IN'
           VIA JOB     p_job
            NUMBER  l_jobcount
           TO SAP-SPOOL WITHOUT SPOOL DYNPRO
               SPOOL PARAMETERS ls_params
               WITH immediately = 'X'
              KEEP IN SPOOL = 'X'
                  AND RETURN.
      CALL FUNCTION 'JOB_CLOSE'
        EXPORTING
          jobcount  = l_jobcount
          jobname   = p_job
          strtimmed = 'X'
         PRDMINS = 2.
          sdlstrtdt = p_sdat
          sdlstrttm = p_stim.
    ENDLOOP.
    Program 2.
      IF sy-batch EQ 'X'.
        LOOP  AT pnppernr.
          SELECT SINGLE * FROM pa0105
            WHERE pernr EQ pnppernr-low
              AND subty EQ '0010'
              AND endda EQ '99991231'.
          p_email1 = pa0105-usrid_long..
          PERFORM get_job_details.
          PERFORM obtain_spool_id.
          PERFORM convert_spool_to_pdf.
          PERFORM process_email.
         IF sy-sysid = c_dev.
            WAIT UP TO 5 SECONDS.
            SUBMIT rsconn01 WITH mode   = 'INT'
                            WITH output = 'X'
                            AND RETURN.
         ENDIF.
        ENDLOOP.
      ELSE.
        SKIP.
        WRITE:/ 'Program must be executed in background in-order for spool'
                'request to be created.'.
       EXPORT gd_spool_nr TO MEMORY ID 'SPOOLTOPDF'.
      ENDIF.
    ENDFORM.                    " SEND_MAIL
    *&      Form  get_job_details
          text
    -->  p1        text
    <--  p2        text
    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.                    " get_job_details
    *&      Form  obtain_spool_id
          text
    -->  p1        text
    <--  p2        text
    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.                    " obtain_spool_id
    *&      Form  convert_spool_to_pdf
          text
    -->  p1        text
    <--  p2        text
    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.                    " convert_spool_to_pdf
    *&      Form  process_email
          text
    -->  p1        text
    <--  p2        text
    FORM process_email .
      DESCRIBE TABLE it_mess_att LINES gd_recsize.
      CHECK gd_recsize > 0.
      PERFORM send_email USING p_email1.
    ENDFORM.                    "process_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 = 'IT Declaration'.
      CONCATENATE 'ITSLIP' ' ' INTO gd_attachment_name.
      it_mess_bod        = 'IT FORM for this month'.
      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_email1
                                          'MindTree Payroll team'
                                          'PDF'
                                          gd_attachment_name
                                          gd_attachment_desc
                                          p_sender
                                          gd_sender_type
                                 CHANGING gd_error
                                          gd_reciever.
    ENDFORM.                    " process_email
    *&      Form  send_file_as_email_attachment
          text
         -->P_IT_MESS_BOD  text
         -->P_IT_MESS_ATT  text
         -->P_P_EMAIL  text
         -->P_4422   text
         -->P_4423   text
         -->P_GD_ATTACHMENT_NAME  text
         -->P_GD_ATTACHMENT_DESC  text
         -->P_P_SENDER  text
         -->P_GD_SENDER_TYPE  text
         <--P_GD_ERROR  text
         <--P_GD_RECIEVER  text
    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               = 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.                    "send_file_as_email_attachment
    Points will be rewarded.
    Regards,
    Balaji

    Hi,
    I think you are retrieving the spool before the entire spool is generated.
    Put the following logic to retrieve spool iD
    CHECK WHETHER STATUS OF JOB IS COMPLETED OR CANCELLED
      WHILE 1 = 1.
    GET THE JOB STEPLIST WHICH HAS THE SPOOL NUMBER
        CALL FUNCTION 'BP_JOB_READ'
          EXPORTING
            job_read_jobcount           = w_jobcount
            job_read_jobname            = w_jobname
            job_read_opcode             = '35'
      JOB_STEP_NUMBER             =
         IMPORTING
           job_read_jobhead            = wa_jobhead
         TABLES
           job_read_steplist           = i_jobsteplist
    CHANGING
      RET                         =
       EXCEPTIONS
         invalid_opcode              = 1
         job_doesnt_exist            = 2
         job_doesnt_have_steps       = 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.
    BEGIN OF INSERTION U179942 E1BK928781
    IF STATUS OF JOB IS COMPLETED(F) OR CANCELLED(A)
    READ THE JOBSTEPLIST & GET THE SPOOL NUMBER
        IF wa_jobhead-status =  c_a OR wa_jobhead-status = c_f.
          READ TABLE i_jobsteplist INTO wa_jobsteplist INDEX 1.
          CHECK wa_jobsteplist-listident <> space.
          w_spool_number = wa_jobsteplist-listident.
          EXIT.
        ENDIF.
      ENDWHILE.
    Best regards,
    Prashant

  • Convert OTF to PDF and print PDF from Spool

    Hi,
    I have searched all the forums and service market place but could not find solution to my problem.
    I am using Function module
      CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
        EXPORTING
          src_spoolid              = p_spool
          no_dialog                = 'X'
          dst_device               = 'ISJB'
          pdf_destination          = 'S'
        IMPORTING
          pdf_bytecount            = lv_bytecount
          pdf_spoolid              = lv_spoolid
          otf_pagecount            = lv_pagecount
          btc_jobname              = lv_jobname
          btc_jobcount             = lv_jobcount
        TABLES
          pdf                      = gt_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
          OTHERS                   = 12.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    this generates spool in SP01. Ideally it should generate a PDF spool file but it generates a BIN file of Format G_RAW. When I display the spool it displays all kinds of japanese characters which does not make sense,.
    I setup printer ISJB with device type JPPDF (PDF converted for Japanese characters). Does any one know where the problem could be? Why I could not print the Spool in PDF?
    Thank you,
    Jagadish

    Hi,
    check out this program which will convert spool to pdf
    REPORT  zsmartform_spool_g.
    *************Types Declaration ****************************
    TYPES : BEGIN OF gty_tab,                          " Spool Requests
            rqident   TYPE tsp01-rqident,              " Spool request number
            rqdoctype TYPE tsp01-rqdoctype,            " Spool: document type
            rqo1name  TYPE tsp01-rqo1name,             " TemSe object name
           END OF gty_tab.
    *********Work Area ****************************************
    DATA: form_name TYPE rs38l_fnam,      " Used to get the function module of Smartform
          wa_outopt TYPE ssfcompop,       " SAP Smart Forms: Smart Composer (transfer) options
          gs_tab    TYPE gty_tab.         " Spool Requests
    *******Internal Table Declarations ************************
    DATA: gt_tab TYPE STANDARD TABLE OF gty_tab,       " Spool Requests
          gt_pdf TYPE STANDARD TABLE OF tline,         " SAPscript: Text Lines
          gt_spoolid TYPE tsfspoolid,                  " Table with Spool IDs
          gt_otfdata TYPE ssfcrescl.                 " Smart Forms: Return value at end of form prnt
    *********Variable Declarations ****************************
    DATA: gv_bytecount   TYPE i,               "#EC NEEDED " PDF Byte Count
          gv_file_name   TYPE string,                    " File name
          gv_file_path   TYPE string,                    " File Path
          gv_full_path   TYPE string,                    " Path
          gv_binfilesize TYPE i,                         " Bin File size
          gv_rqident   TYPE tsp01-rqident,               " Spool request number
          gv_name TYPE tst01-dname,                      " TemSe object name
          gv_objtype TYPE rststype-type,                 " TemSe: Object type name
          gv_type TYPE rststype-type.                    " TemSe: Object type name
    START-OF-SELECTION.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname           = 'ZPDF_G'
        IMPORTING
          fm_name            = form_name
        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.
    *Get Spool IDs
      wa_outopt-tdnewid = 'X'.
      wa_outopt-tddest = 'LP01'.
      CALL FUNCTION form_name
        EXPORTING
          output_options   = wa_outopt
          user_settings    = 'X'
        IMPORTING
          job_output_info  = gt_otfdata
        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.
    *Assign the spool id
      gt_spoolid = gt_otfdata-spoolids.
    Generate spool and pdf for the output of the form
      PERFORM sub_generate_spool_pdf.
    END-OF-SELECTION.
    *&      Form  sub_generate_spool_pdf
          Generate Spool and PDF output
    FORM sub_generate_spool_pdf .
      DATA: ls_spoolid LIKE LINE OF gt_spoolid.
    *----Get the Spool Number
      CLEAR ls_spoolid.
      READ TABLE gt_spoolid INTO ls_spoolid INDEX 1.
      IF sy-subrc = 0.
        gv_rqident = ls_spoolid.
      ENDIF.
      CLEAR gt_tab.
      SELECT  rqident rqdoctype rqo1name INTO TABLE gt_tab
               FROM tsp01 WHERE rqident = gv_rqident.
      IF sy-subrc = 0.
        CLEAR gs_tab.
    Get the TemSe: Object name into variable gv_name
        READ TABLE gt_tab INTO gs_tab INDEX 1.
        IF sy-subrc = 0.
          gv_name = gs_tab-rqo1name.
        ENDIF.
      ENDIF.
      CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
        EXPORTING
          authority     = 'SP01'
          client        = sy-mandt
          name          = gv_name
          part          = 1
        IMPORTING
          type          = gv_type
          objtype       = gv_objtype
        EXCEPTIONS
          fb_error      = 1
          fb_rsts_other = 2
          no_object     = 3
          no_permission = 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.
    Check if temse object name type is 'OTF' or 'LIST'
      IF gv_objtype(3) = 'OTF'.
        PERFORM get_otf_spool_in_pdf.
      ELSE.
        PERFORM get_abap_spool_in_pdf.
      ENDIF.
    Generate F4 functionality from spool to pdf
      PERFORM write_pdf_spool_to_pc.
    ENDFORM.                    " sub_generate_spool_pdf
    *&      Form  get_abap_spool_in_pdf
          Generate the Spool number
    FORM get_abap_spool_in_pdf .
      REFRESH gt_pdf.
      CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
        EXPORTING
          src_spoolid              = gv_rqident
        IMPORTING
          pdf_bytecount            = gv_bytecount
        TABLES
          pdf                      = gt_pdf
        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.
      IF sy-subrc NE 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " get_abap_spool_in_pdf
    *&      Form  get_otf_spool_in_pdf
          Generate OTF data from the Spool Number
    FORM get_otf_spool_in_pdf .
      REFRESH gt_pdf.
      CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
        EXPORTING
          src_spoolid              = gv_rqident
        IMPORTING
          pdf_bytecount            = gv_bytecount
        TABLES
          pdf                      = gt_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
          OTHERS                   = 12.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " get_otf_spool_in_pdf
    *&      Form  write_pdf_spool_to_pc
          Generate PDF format
    FORM write_pdf_spool_to_pc .
      CALL METHOD cl_gui_frontend_services=>file_save_dialog
        CHANGING
          filename             = gv_file_name
          path                 = gv_file_path
          fullpath             = gv_full_path
        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.
    ----DOWNLOADING THE PDF DATA***
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          bin_filesize            = gv_binfilesize
          filename                = gv_full_path
          filetype                = 'BIN'
        TABLES
          data_tab                = gt_pdf
        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.
    ENDFORM.                    " write_pdf_spool_to_pc

  • Convert spool to pdf for Chinese characters

    Hi,
       I need to convert spool to pdf for chinese font.
       Spool is creating successfully, and contents are displaying properly. When try to convert the spool to pdf using 'RSTXPDFT4', the pdf is generated successfully, when trying open the pdf, contents are missing, its like empy white pdf page. This is happening for the Chinese font. The same script is working fine for the English font.
    Plz suggets
    Thanks
    Balaji

    Hi Balaji,
    I am having a similar issue with Simplified Chinese, Traditional Chinese, and Thai fonts when saving spools to PDF.  Have you found any more information on why the output shows up as a blank screen?
    We are printing Purchase Orders and the T&Cs are coming through fine because they are saved as picture files but the smartform does not display at all.
    Any information would be appreciated!
    Thanks,
    Josh

  • How do I convert .txt to .pdf and keep the formatting

    I have a large .txt file that I would like to convert to .pdf.  I have tried to print the file and choose Adobe PDF but the output is just a mess.  I loose all the formatting and get blank pages every so often.  Does anyone know if is possible to convert .txt to .pdf and keep the formatting.  I would try a virtual printer application but I am not able to just install any application on my office computer.  Any help would be greatly appreciated.

    It may be a bit late for you now but in future (and for anyone else interested) I would recommend copying the text into a word document and changing the text font to Consolas. Adjust the size to fit the page again and it should match the original notepad formatting.

Maybe you are looking for

  • Isync Tiger BUG: Contacts created in phone don't sync into Addressbk Group

    This is a bug I've encountered with iSync running on Tiger. I use iSync to sync my AddressBook contacts with my Motorola Razor. I have many contacts, but I only need a few of them synced with my phone, so I created a Group called "Phone" in AddressBo

  • HT203288 the itunes library .itl file cannot be found or created

    After new iTunes install. Clicking the icon gives me this error message saying"The default location for this file is in the "iTunes" folder in the Music folder. The xml files are present but no itl. file How do I get iTunes to recognize the library

  • Studio 12: dbx: internal error: signal SIGSEGV (no mapping at the fault add

    $dbx /usr/bin/dbx /tmp/core For information about new features see `help changes' To remove this message, put `dbxenv suppress_startup_message 7.6' in your .dbxrc Reading dbx core file header read successfully Reading ld.so.1 Reading libintl.so.1 Rea

  • How can i edit and manage my iOS device on a computer

    i have no access to an iOS device. if i did, is it possible to just log in with my iTunes info and manage it that way. i need to manage my storage, pictures, delete a movie that was downloaded on my iOS device, which was an iPhone 4. please help.

  • OS X unexectedly shutting down

    Ok so I have a basic MacBook, Canadian French keyboard version, though I doubt that would make a difference... anyways, so I've had my (now second, cause the first was on deffective) MacBook for a day now and I've had this error come up, three times