Report output to convert to pdf and mail it to recepient

Hi
I'm using the below coding for converting the output of the program to pdf and then mail it to the recepient.The coding works for background processsing only can i do the same for online.In the write statement i'm using the sy-repid my program name and when i get the pdf mail i'm getting the name of the program but instead i need to get the output of my program.Can any one help me in correcting the coding to get the output in pdf format.I know where i'm going wrong but this is the first time i'm working with this so new to this....It would be better if i could run the program and get the convertions into pdf through mail instead of background processing.....Please change the coding below to get the same.....
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 sy-repid.
  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         = 'Branch Revenue'.
  gd_attachment_desc = 'Branch Revenue'.
CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
  it_mess_bod        = 'Branch Revenue,Profit and Commissions'.
  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
                                      'Branch Revenue'
                                      '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.
Thanks in advance.....

Hi
  Below is the code I was used to convert the sap script( Sales Order) to convert to PDf and send as an attachment.
Dev/UDD Id :  EUR-770416                                             *
Author     :  M.Sreeram Kumar                                        *
Date       :  08-Apr-07                                              *
Request    :  DU1K933766
Description:  Send an order confirmation to the multiple user in a   *
              PDF format via Email.                                  *
Change Log                                                           *
Author      :                                                        *
Date        :                                                        *
Description :                                                        *
Request     :                                                        *
             Print of an order confirmation by SAPscript
REPORT zrep_email LINE-COUNT 100 MESSAGE-ID vn.
TABLES: komk,                          "Communicationarea for conditions
        komp,                          "Communicationarea for conditions
        komvd,                         "Communicationarea for conditions
        vbco3,                         "Communicationarea for view
        vbdka,                         "Headerview
        vbdpa,                         "Itemview
        vbdpau,                        "Subitemnumbers
        conf_out,                      "Configuration data
        sadr,                          "Addresses
        tvag,                          "Reason for rejection
        vedka,                         "Servicecontract head data
        vedpa,                         "Servicecontract position data
        vedkn,                         "Servicecontract head notice data
        vedpn,                         "Servicecontract pos. notice data
        vbpa,                          "Sales Document: Partner
        kna1,                          "General Data in Customer Master
        riserls,                       "Serialnumbers
        komser,                        "Serialnumbers for print
        tvbur,                         "Sales office
        tvko,                          "Sales organisation
        adrs,                          "Communicationarea for Address
        fpltdr.                        "billing schedules
INCLUDE zrep_rvadtabl.
*INCLUDE yzrvadtabl.
*INCLUDE RVADTABL.
INCLUDE zrep_rvdirekt.
*INCLUDE yzrvdirekt.
*INCLUDE RVDIREKT.
INCLUDE zrep_vedadata.
*INCLUDE yzvedadata.
*INCLUDE VEDADATA.
DATA: retcode   LIKE sy-subrc.         "Returncode
DATA: repeat(1) TYPE c.
DATA: xscreen(1) TYPE c.               "Output on printer or screen
DATA: BEGIN OF steu,                   "Controldata for output
        vdkex(1) TYPE c,
        vdpex(1) TYPE c,
        kbkex(1) TYPE c,
        kbpex(1) TYPE c,
      END OF steu.
DATA: BEGIN OF tvbdpa OCCURS 0.        "Internal table for items
        INCLUDE STRUCTURE vbdpa.
DATA: END OF tvbdpa.
DATA: BEGIN OF tkomv OCCURS 50.
        INCLUDE STRUCTURE komv.
DATA: END OF tkomv.
DATA: BEGIN OF tkomvd OCCURS 50.
        INCLUDE STRUCTURE komvd.
DATA: END OF tkomvd.
DATA: BEGIN OF tvbdpau OCCURS 5.
        INCLUDE STRUCTURE vbdpau.
DATA: END   OF tvbdpau.
DATA: BEGIN OF tkomcon OCCURS 50.
        INCLUDE STRUCTURE conf_out.
DATA: END   OF tkomcon.
DATA: BEGIN OF tkomservh OCCURS 1.
        INCLUDE STRUCTURE vedka.
DATA: END   OF tkomservh.
DATA: BEGIN OF tkomservp OCCURS 5.
        INCLUDE STRUCTURE vedpa.
DATA: END   OF tkomservp.
DATA: BEGIN OF tkomservhn OCCURS 5.
        INCLUDE STRUCTURE vedkn.
DATA: END   OF tkomservhn.
DATA: BEGIN OF tkomservpn OCCURS 5.
        INCLUDE STRUCTURE vedpn.
DATA: END   OF tkomservpn.
DATA: BEGIN OF tkomser OCCURS 5.
        INCLUDE STRUCTURE riserls.
DATA: END   OF tkomser.
DATA: BEGIN OF tkomser_print OCCURS 5.
        INCLUDE STRUCTURE komser.
DATA: END   OF tkomser_print.
DATA: BEGIN OF tfpltdr OCCURS 5.
        INCLUDE STRUCTURE fpltdr.
DATA: END   OF tfpltdr.
DATA: pr_kappl(01)   TYPE c VALUE 'V'. "Application for pricing
DATA: BEGIN OF char_val OCCURS 0,
        atnam LIKE cabn-atnam,
        atwrt LIKE ausp-atwrt,
      END OF char_val.
FORM entry USING return_code us_screen.
  CLEAR retcode.
  xscreen = us_screen.
  PERFORM processing.
  IF retcode NE 0.
    return_code = 1.
  ELSE.
    return_code = 0.
  ENDIF.
ENDFORM.                    "ENTRY
      FORM PROCESSING                                               *
FORM processing.
  PERFORM get_data.
  CHECK retcode = 0.
  PERFORM form_open USING xscreen vbdka-land1.
  CHECK retcode = 0.
  PERFORM logo_selection.
PERFORM form_title_print.
  CHECK retcode = 0.
  PERFORM write_header_info.
  PERFORM validity_print.
  CHECK retcode = 0.
  PERFORM header_data_print.
  CHECK retcode = 0.
  PERFORM header_serv_print.
  CHECK retcode = 0.
  PERFORM header_notice_print.
  CHECK retcode = 0.
  PERFORM header_inter_print.
  CHECK retcode = 0.
  PERFORM header_text_print.
  CHECK retcode = 0.
  PERFORM item_print.
  CHECK retcode = 0.
  PERFORM end_print.
  CHECK retcode = 0.
  PERFORM form_close.
  CHECK retcode = 0.
  PERFORM zemail_process.
ENDFORM.                    "PROCESSING
      S U B R O U T I N E S                                         *
      FORM ALTERNATIVE_ITEM                                         *
      A text is printed, if the item is an alternative item.        *
FORM alternative_item.
  CHECK vbdpa-grpos CN '0'.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element = 'ALTERNATIVE_ITEM'
    EXCEPTIONS
      element = 1
      window  = 2.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
ENDFORM.                    "ALTERNATIVE_ITEM
      FORM CHECK_REPEAT                                             *
      A text is printed, if it is a repeat print for the document.  *
FORM check_repeat.
  CLEAR repeat.
  SELECT * INTO *nast FROM nast WHERE kappl = nast-kappl
                                AND   objky = nast-objky
                                AND   kschl = nast-kschl
                                AND   spras = nast-spras
                                AND   parnr = nast-parnr
                                AND   parvw = nast-parvw
                                AND   nacha BETWEEN '1' AND '4'.
    CHECK *nast-vstat = '1'.
    repeat = 'X'.
    EXIT.
  ENDSELECT.
ENDFORM.                    "CHECK_REPEAT
      FORM DELIVERY_DATE                                            *
      If the delivery date in the item is different to the header   *
      date and there are no scheduled quantities, the delivery date *
      is printed in the item block.                                 *
FORM delivery_date.
  IF vbdka-lfdat =  space AND
     vbdpa-lfdat NE space AND
     vbdpa-etenr_da = space.
    CALL FUNCTION 'WRITE_FORM'
      EXPORTING
        element = 'ITEM_DELIVERY_DATE'
      EXCEPTIONS
        element = 1
        window  = 2.
    IF sy-subrc NE 0.
      PERFORM protocol_update.
    ENDIF.
  ENDIF.
ENDFORM.                    "DELIVERY_DATE
      FORM DIFFERENT_CONSIGNEE                                      *
      If the consignee in the item is different to the header con-  *
      signee, it is printed by this routine.                        *
FORM different_consignee.
  CHECK vbdka-name1_we NE vbdpa-name1_we
    OR  vbdka-name2_we NE vbdpa-name2_we
    OR  vbdka-name3_we NE vbdpa-name3_we
    OR  vbdka-name4_we NE vbdpa-name4_we.
  CHECK vbdpa-name1_we NE space
    OR  vbdpa-name2_we NE space
    OR  vbdpa-name3_we NE space
    OR  vbdpa-name4_we NE space.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element = 'ITEM_CONSIGNEE'
    EXCEPTIONS
      element = 1
      window  = 2.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
ENDFORM.                    "DIFFERENT_CONSIGNEE
      FORM DIFFERENT_REFERENCE_NO                                   *
      If the reference number in the item is different to the header*
      reference number, it is printed by this routine.              *
FORM different_reference_no.
  CHECK vbdpa-vbeln_vang NE vbdka-vbeln_vang
    OR  vbdpa-vbtyp_vang NE vbdka-vbtyp_vang.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element = 'ITEM_REFERENCE_NO'
    EXCEPTIONS
      element = 1
      window  = 2.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
ENDFORM.                    "DIFFERENT_REFERENCE_NO
      FORM DIFFERENT_TERMS                                          *
      If the terms in the item are different to the header terms,   *
      they are printed by this routine.                             *
FORM different_terms.
  DATA: us_vposn   LIKE vedpa-vposn.
  DATA: us_text(1) TYPE c.             "Flag for Noticetext was printed
  IF vbdpa-zterm NE vbdka-zterm AND
     vbdpa-zterm NE space.
    CALL FUNCTION 'WRITE_FORM'
      EXPORTING
        element = 'ITEM_TERMS_OF_PAYMENT'
      EXCEPTIONS
        element = 1
        window  = 2.
    IF sy-subrc NE 0.
      PERFORM protocol_update.
    ENDIF.
  ENDIF.
  IF vbdpa-inco1 NE space.
    IF vbdpa-inco1 NE vbdka-inco1 OR
       vbdpa-inco2 NE vbdka-inco2.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_TERMS_OF_DELIVERY'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDIF.
  ENDIF.
Print different validity-data for the position
  READ TABLE tkomservp WITH KEY vbdpa-posnr.
  IF sy-subrc EQ 0.
    vedpa = tkomservp.
    IF vedpa-vbegdat NE space       AND
       vedpa-venddat NE space       AND
       NOT vedpa-vbegdat IS INITIAL AND
       NOT vedpa-venddat IS INITIAL.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_TERMS_OF_SERV1'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ELSEIF vedpa-vbegdat NE space AND
           NOT vedpa-vbegdat IS INITIAL.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_TERMS_OF_SERV2'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ELSE.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_TERMS_OF_SERV3'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDIF.
  ENDIF.
Notice-rules for the positions.
  MOVE vbdpa-posnr TO us_vposn.
  CLEAR us_text.
  LOOP AT tkomservpn WHERE vposn = us_vposn.
    vedpn = tkomservpn.
    IF us_text IS INITIAL.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_TERMS_OF_NOTTXT'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
      us_text = charx.
    ENDIF.
    CALL FUNCTION 'WRITE_FORM'
      EXPORTING
        element = 'ITEM_TERMS_OF_NOTICE'
      EXCEPTIONS
        element = 1
        window  = 2.
    IF sy-subrc NE 0.
      PERFORM protocol_update.
    ENDIF.
  ENDLOOP.
  IF NOT us_text IS INITIAL.
    CALL FUNCTION 'WRITE_FORM'
      EXPORTING
        element = 'EMPTY_LINE'
      EXCEPTIONS
        element = 1
        window  = 2.
    IF sy-subrc NE 0.
      PERFORM protocol_update.
    ENDIF.
  ENDIF.
ENDFORM.                    "DIFFERENT_TERMS
      FORM END_PRINT                                                *
FORM end_print.
  PERFORM get_header_prices.
  CALL FUNCTION 'CONTROL_FORM'
    EXPORTING
      command = 'PROTECT'.
  PERFORM header_price_print.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element = 'END_VALUES'.
  CALL FUNCTION 'CONTROL_FORM'
    EXPORTING
      command = 'ENDPROTECT'.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element = 'SUPPLEMENT_TEXT'
    EXCEPTIONS
      element = 1
      window  = 2.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
ENDFORM.                    "END_PRINT
      FORM FORM_CLOSE                                               *
      End of printing the form                                      *
FORM form_close.
CALL FUNCTION 'CLOSE_FORM'
   EXCEPTIONS
     OTHERS = 1.
  CALL FUNCTION 'CLOSE_FORM'
IMPORTING
  RESULT                         =
  RDI_RESULT                     =
   TABLES
     otfdata                        = t_otfdata
EXCEPTIONS
  UNOPENED                       = 1
  BAD_PAGEFORMAT_FOR_PRINT       = 2
  SEND_ERROR                     = 3
  SPOOL_ERROR                    = 4
  CODEPAGE                       = 5
   OTHERS                         = 1.
  IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
    retcode = 1.
  ENDIF.
  SET COUNTRY space.
ENDFORM.                    "FORM_CLOSE
      FORM FORM_OPEN                                                *
      Start of printing the form                                    *
-->  US_SCREEN  Output on screen                                   *
                 ' ' = printer                                      *
                 'X' = screen                                       *
-->  US_COUNTRY County for telecommunication and SET COUNTRY       *
FORM form_open USING us_screen us_country.
  INCLUDE zrep_rvadopfo.
INCLUDE yzrvadopfo.
INCLUDE RVADOPFO.
ENDFORM.                    "FORM_OPEN
      FORM FORM_TITLE_PRINT                                         *
      Printing of the form title depending of the field VBTYP       *
FORM form_title_print.
  CASE vbdka-vbtyp.
    WHEN 'A'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_A'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    WHEN 'B'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_B'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    WHEN 'C'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_C'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    WHEN 'E'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_E'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    WHEN 'F'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_F'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    WHEN 'G'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_F'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    WHEN 'H'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_H'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    WHEN 'K'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_K'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    WHEN 'L'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_L'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    WHEN OTHERS.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TITLE_OTHERS'
          window  = 'TITLE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
  ENDCASE.
  IF repeat NE space.
    CALL FUNCTION 'WRITE_FORM'
      EXPORTING
        element = 'REPEAT'
        window  = 'REPEAT'
      EXCEPTIONS
        element = 1
        window  = 2.
    IF sy-subrc NE 0.
      PERFORM protocol_update.
    ENDIF.
  ENDIF.
ENDFORM.                    "FORM_TITLE_PRINT
      FORM GET_DATA                                                 *
      General provision of data for the form                        *
FORM get_data.
  DATA: us_veda_vbeln     LIKE veda-vbeln.
  DATA: us_veda_posnr_low LIKE veda-vposn.
  CALL FUNCTION 'RV_PRICE_PRINT_REFRESH'
    TABLES
      tkomv = tkomv.
  CLEAR komk.
  CLEAR komp.
  vbco3-mandt = sy-mandt.
  vbco3-spras = nast-spras.
  vbco3-vbeln = nast-objky.
  vbco3-kunde = nast-parnr.
  vbco3-parvw = nast-parvw.
  CALL FUNCTION 'RV_DOCUMENT_PRINT_VIEW'
    EXPORTING
      comwa = vbco3
    IMPORTING
      kopf  = vbdka
    TABLES
      pos   = tvbdpa.
Fetch servicecontract-data and notice-data for head and position.
  us_veda_vbeln     = vbdka-vbeln.
  us_veda_posnr_low = posnr_low.
  CALL FUNCTION 'SD_VEDA_GET_PRINT_DATA'
    EXPORTING
      i_document_number = us_veda_vbeln
      i_language        = sy-langu
      i_posnr_low       = us_veda_posnr_low
    TABLES
      print_data_pos    = tkomservp
      print_data_head   = tkomservh
      print_notice_pos  = tkomservpn
      print_notice_head = tkomservhn.
  PERFORM get_controll_data.
  PERFORM sender.
  PERFORM check_repeat.
  PERFORM tvbdpau_create.
ENDFORM.                    "GET_DATA
      FORM GET_ITEM_BILLING_SCHEDULES                               *
      In this routine the billing schedules are fetched from the    *
      database.                                                     *
FORM get_item_billing_schedules.
  REFRESH tfpltdr.
  CHECK NOT vbdpa-fplnr IS INITIAL.
  CALL FUNCTION 'BILLING_SCHED_PRINTVIEW_READ'
    EXPORTING
      i_fplnr    = vbdpa-fplnr
      i_language = nast-spras
    TABLES
      zfpltdr    = tfpltdr.
ENDFORM.                    "GET_ITEM_BILLING_SCHEDULES
*&      Form  ITEM_BILLING_SCHEDULES_PRINT
      This routine prints the billing shedules of a salesdocument    *
      position.                                                      *
FORM  item_billing_schedules_print.
  DATA: first_line(1) TYPE c.
  first_line = charx.
  LOOP AT tfpltdr.
    fpltdr = tfpltdr.
  Output of the following printlines
    IF NOT fpltdr-perio IS INITIAL.
    periodische Fakturen
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_BILLING_SCHEDULE_PERIODIC'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    bei periodischen nur eine Zeile
      EXIT.
    ELSEIF fpltdr-fareg CA '14'.
    prozentuale Teilfakturierung
      IF NOT first_line IS INITIAL.
        CLEAR first_line.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'ITEM_BILLING_SCHEDULE_PERCENT_HEADER'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ELSE.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'ITEM_BILLING_SCHEDULE_PERCENT'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ENDIF.
    ELSEIF fpltdr-fareg CA '235'.
    wertmäßige  Teilfakturierung
      IF NOT first_line IS INITIAL.
        CLEAR first_line.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'ITEM_BILLING_SCHEDULE_VALUE_HEADER'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ELSE.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'ITEM_BILLING_SCHEDULE_VALUE'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ENDIF.
    ELSEIF fpltdr-fareg CA '3'.
    Schlußrechnung
    ENDIF.
  ENDLOOP.
ENDFORM.                    "ITEM_BILLING_SCHEDULES_PRINT
*eject
      FORM GET_ITEM_CHARACTERISTICS                                 *
      In this routine the configuration data item is fetched from   *
      the database.                                                 *
FORM get_item_characteristics.
  REFRESH tkomcon.
  CHECK NOT vbdpa-cuobj IS INITIAL.
  CALL FUNCTION 'CUD0_GET_CONFIGURATION'                    "#EC EXISTS
    EXPORTING
      instance      = vbdpa-cuobj
      language      = nast-spras
    TABLES
      configuration = tkomcon
    EXCEPTIONS
      OTHERS        = 4.
ENDFORM.                    "GET_ITEM_CHARACTERISTICS
      FORM GET_ITEM_PRICES                                          *
      In this routine the price data for the item is fetched from   *
      the database.                                                 *
FORM get_item_prices.
  CLEAR: komp,
         tkomv.
  IF komk-knumv NE vbdka-knumv.
    CLEAR komk.
    komk-mandt = sy-mandt.
    komk-kalsm = vbdka-kalsm.
    komk-kappl = pr_kappl.
    komk-waerk = vbdka-waerk.
    komk-knumv = vbdka-knumv.
    komk-vbtyp = vbdka-vbtyp.
  ENDIF.
  komp-kposn = vbdpa-posnr.
  CALL FUNCTION 'RV_PRICE_PRINT_ITEM'
    EXPORTING
      comm_head_i = komk
      comm_item_i = komp
      language    = nast-spras
    IMPORTING
      comm_head_e = komk
      comm_item_e = komp
    TABLES
      tkomv       = tkomv
      tkomvd      = tkomvd.
ENDFORM.                    "GET_ITEM_PRICES
      FORM GET_HEADER_PRICES                                        *
      In this routine the price data for the header is fetched from *
      the database.                                                 *
FORM get_header_prices.
  CALL FUNCTION 'RV_PRICE_PRINT_HEAD'
    EXPORTING
      comm_head_i = komk
      language    = nast-spras
    IMPORTING
      comm_head_e = komk
    TABLES
      tkomv       = tkomv
      tkomvd      = tkomvd.
ENDFORM.                    "GET_HEADER_PRICES
*&      Form  HEADER_DATA_PRINT
      Printing of header data like terms, weights ....               *
FORM header_data_print.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element = 'HEADER_DATA'
    EXCEPTIONS
      element = 1
      window  = 2.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
ENDFORM.                               " HEADER_DATA_PRINT
      FORM HEADER_PRICE_PRINT                                       *
      Printout of the header prices                                 *
FORM header_price_print.
  LOOP AT tkomvd.
    AT FIRST.
      IF komk-supos NE 0.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'ITEM_SUM'.
      ELSE.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'UNDER_LINE'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ENDIF.
    ENDAT.
    komvd = tkomvd.
    IF komvd-koaid = 'D'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'TAX_LINE'.
    ELSE.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'SUM_LINE'.
    ENDIF.
  ENDLOOP.
  DESCRIBE TABLE tkomvd LINES sy-tfill.
  IF sy-tfill = 0.
    CALL FUNCTION 'WRITE_FORM'
      EXPORTING
        element = 'UNDER_LINE'
      EXCEPTIONS
        element = 1
        window  = 2.
    IF sy-subrc NE 0.
      PERFORM protocol_update.
    ENDIF.
  ENDIF.
ENDFORM.                    "HEADER_PRICE_PRINT
      FORM HEADER_TEXT_PRINT                                        *
      Printout of the headertexts                                   *
FORM header_text_print.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element = 'HEADER_TEXT'
    EXCEPTIONS
      element = 1
      window  = 2.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
ENDFORM.                    "HEADER_TEXT_PRINT
      FORM ITEM_CHARACERISTICS_PRINT                                *
      Printout of the item characteristics -> configuration         *
FORM item_characteristics_print.
  LOOP AT tkomcon.
    conf_out = tkomcon.
    IF sy-tabix = 1.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_LINE_CONFIGURATION_HEADER'
        EXCEPTIONS
          OTHERS  = 1.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ELSE.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_LINE_CONFIGURATION'
        EXCEPTIONS
          OTHERS  = 1.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDIF.
  ENDLOOP.
ENDFORM.                    "ITEM_CHARACTERISTICS_PRINT
      FORM ITEM_DELIVERY_CONFIRMATION                               *
      If the delivery date is not confirmed, a text is printed      *
FORM item_delivery_confirmation.
  CHECK vbdpa-lfdat = space.
  CHECK vbdpa-kwmeng NE 0.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element = 'ITEM_DELIVERY_CONFIRMATION'
    EXCEPTIONS
      element = 1
      window  = 2.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
ENDFORM.                    "ITEM_DELIVERY_CONFIRMATION
      FORM ITEM_PRICE_PRINT                                         *
      Printout of the item prices                                   *
FORM item_price_print.
  LOOP AT tkomvd.
    komvd = tkomvd.
    IF sy-tabix = 1.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_LINE_PRICE_QUANTITY'.
    ELSE.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_LINE_PRICE_TEXT'.
    ENDIF.
  ENDLOOP.
ENDFORM.                    "ITEM_PRICE_PRINT
      FORM ITEM_PRINT                                               *
      Printout of the items                                         *
FORM item_print.
  DATA: da_subrc LIKE sy-subrc,
        da_dragr LIKE tvag-dragr.
  CALL FUNCTION 'WRITE_FORM'           "First header
       EXPORTING  element = 'ITEM_HEADER'
       EXCEPTIONS OTHERS  = 1.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
  CALL FUNCTION 'WRITE_FORM'           "Activate header
       EXPORTING  element = 'ITEM_HEADER'
                  type    = 'TOP'
       EXCEPTIONS OTHERS  = 1.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
  LOOP AT tvbdpa.
    vbdpa = tvbdpa.
  TVAG lesen um festzustellen ob abgesagte Positionen gedruckt werden
  sollen
    PERFORM tvag_select(sapmv45a) USING vbdpa-abgru
                                        da_dragr
                                        space
                                        da_subrc.
    IF da_dragr EQ space.              "Print rejected item?
      IF vbdpa-posnr_neu NE space.     "Item
        PERFORM get_item_serials.
        PERFORM get_item_characteristics.
        PERFORM get_item_billing_schedules.
        PERFORM get_item_prices.
        CALL FUNCTION 'CONTROL_FORM'
          EXPORTING
            command = 'ENDPROTECT'.
        CALL FUNCTION 'CONTROL_FORM'
          EXPORTING
            command = 'PROTECT'.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'ITEM_LINE'.
        PERFORM item_rejected.
        PERFORM item_price_print.
        CALL FUNCTION 'CONTROL_FORM'
          EXPORTING
            command = 'ENDPROTECT'.
        PERFORM item_text_print.
        PERFORM item_serials_print.
        PERFORM item_characteristics_print.
        PERFORM alternative_item.
        PERFORM delivery_date.
        PERFORM item_delivery_confirmation.
        PERFORM item_billing_schedules_print.
        PERFORM different_reference_no.
        PERFORM different_terms.
        PERFORM different_consignee.
        PERFORM schedule_header.
        PERFORM main_item.
      ELSE.
        PERFORM schedule_print.
      ENDIF.
    ENDIF.
  ENDLOOP.
  CALL FUNCTION 'WRITE_FORM'           "Deactivate Header
       EXPORTING  element  = 'ITEM_HEADER'
                  function = 'DELETE'
                  type     = 'TOP'
       EXCEPTIONS OTHERS   = 1.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
ENDFORM.                    "ITEM_PRINT
      FORM ITEM_REJECTED                                            *
      A text is printed, if the item is rejected                    *
FORM item_rejected.
  CHECK NOT vbdpa-abgru IS INITIAL.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element = 'ITEM_REJECTED'
    EXCEPTIONS
      element = 1
      window  = 2.
  IF sy-subrc NE 0.
    PERFORM protocol_update.
  ENDIF.
ENDFORM.                    "ITEM_REJECTED
      FORM MAIN_ITEM                                                *
      A text is printed, if the item is a main item                 *

Similar Messages

  • 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

  • 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

  • Reg: HRforms converted to PDF and send email to individual employee

    Hi Experts,
    The requirement is convert the HR form output to pdf and send email to respective employee in standard transaction. I copied RPCEDTX0 to  ZRPCEDTX0 and include RPCEDS09 to ZRPCEDS09, the changes need to be done for individual PERNR, I have modified the include as shown below.
       CALL FUNCTION 'HRPY_PROCESS_SET_PERNR_STATUS' after this, i have written my code
    * start of changes ARAFIQUE
      DATA: formname TYPE tdsfname VALUE 'HR_ESS_PAYSLIP_TO_PDF',
            fm_name TYPE rs38l_fnam,
            pinfo LIKE pc407 OCCURS 0 WITH HEADER LINE,
            pform type tt_pc408,
            pform_l like pc408 OCCURS 0 WITH HEADER LINE.
      IF xform[] IS NOT INITIAL.
        pform_l = xform.
        APPEND pform_1 TO pform.
        pinfo-molga = '99'.
        pinfo-forml = 'ZACC'.
        APPEND pinfo.
        CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
          EXPORTING
            formname                 = formname
    *       VARIANT                  = ' '
    *       DIRECT_CALL              = ' '
         IMPORTING
           fm_name                  = fm_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.
        CALL FUNCTION fm_name
          EXPORTING
            pinfo                      =
            pform                      = xform[]
    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.
      ENDIF.
    * end of changes ARAFIQUE
    I found out in internet that the smartform 'HR_ESS_PAYSLIP_TO_PDF' will convert to PDF and then i can send email to PERNRS.

    Hi Experts,
    I have written the below code, the payslip is getting converted to PDF and it is getting saved in presentation server. I need to pick this file and mail, I created a customized function module for sending mail. I'm not able to send email to external addresses.
    Please find my code below. I will post the function module later.
    * start of changes ARAFIQUE
      DATA: "formname TYPE tdsfname VALUE 'HR_ESS_PAYSLIP_TO_PDF',
            "fm_name TYPE rs38l_fnam,
            p_info LIKE pc407 OCCURS 0 WITH HEADER LINE,
            "pform type tt_pc408,
            p_form LIKE pc408 OCCURS 0 WITH HEADER LINE,
            pdf_content TYPE xstring,
            pdf_fsize TYPE i,
            lv_output_length TYPE i,
            lt_binary_data TYPE STANDARD TABLE OF sdokcntbin,
            it_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
            it_message LIKE solisti1 OCCURS 0 WITH HEADER LINE.
      IF xform[] IS NOT INITIAL.
        p_form[] = xform[].
        p_info-molga = '99'.
        p_info-forml = 'ZACC'.
        p_info-pcols = 1.
        p_info-psize = 1.
        APPEND p_info.
        CALL FUNCTION 'CONVERT_PAYSLIP_TO_PDF'
          EXPORTING
            p_info      = p_info
          IMPORTING
            pdf_content = pdf_content
            pdf_fsize   = pdf_fsize
          TABLES
            p_form      = p_form[]
          EXCEPTIONS
            empty_form  = 1
            OTHERS      = 2.
        IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
          EXPORTING
            buffer        = pdf_content
          IMPORTING
            output_length = lv_output_length
          TABLES
            binary_tab    = lt_binary_data.
        CALL FUNCTION 'GUI_DOWNLOAD'
            EXPORTING
              filename                        = 'C:\Test\Testing.pdf'
              filetype                        = 'BIN'
            TABLES
              data_tab                        = lt_binary_data
    *     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
        it_receivers-receiver = 'gmailid'.
        it_receivers-rec_type = 'U'.
        it_receivers-com_type = 'INT'.
        APPEND it_receivers .
        it_message-line = 'Test for sending email'.
        APPEND it_message.
        CALL FUNCTION 'ZSEND_MAIL_ATTACHMENT'
          EXPORTING
            v_file_path  = 'C:\Test\Testing.pdf'
            v_subject    = 'Test Mail'
          TABLES
            it_receivers = it_receivers[]
            it_message   = it_message[].
        IF sy-subrc EQ 0.
          COMMIT WORK.
    *   Push mail out from SAP outbox
          SUBMIT rsconn01 WITH mode = 'INT' AND RETURN.
        ENDIF.

  • Separate program to send a smartform converted into pdf, thru mail

    Hi Folks,
    I had created a smartform and converted it into a PDF format.
    Now I want a separate program where in if i submit this program it should sent it throuogh mail.
    Note:-<b>I want a separate program not the one where in you design a smartform,convert into pdf and then send thru mail all in one program</b>
    Points will be given.
    K.Kiran.

    hi kiran
    the program is as follows
    The user is provided with
    a) file name
    b) email address to send mail
    and it sends ANY FILE (.xls,.pdf .xyz..)
    Instantaneously !
    4. Make two things first :
    1. Include with the name : ZAMI_INCLFOR_MAIL
    2. Report with the name : ZAM_TEMP147 (any name will do)
    3. Activate both and execute (2)
    4. After providing filename, email adress
    5. Code for Include :
    Data
    DATA: docdata LIKE sodocchgi1,
    objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
    objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
    objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
    objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
    objhex LIKE solix OCCURS 10 WITH HEADER LINE,
    reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE.
    DATA: tab_lines TYPE i,
    doc_size TYPE i,
    att_type LIKE soodk-objtp.
    DATA: listobject LIKE abaplist OCCURS 1 WITH HEADER LINE.
    FORM
    FORM ml_customize USING objname objdesc.
    Clear Variables
    CLEAR docdata.
    REFRESH objpack.
    CLEAR objpack.
    REFRESH objhead.
    REFRESH objtxt.
    CLEAR objtxt.
    REFRESH objbin.
    CLEAR objbin.
    REFRESH objhex.
    CLEAR objhex.
    REFRESH reclist.
    CLEAR reclist.
    REFRESH listobject.
    CLEAR listobject.
    CLEAR tab_lines.
    CLEAR doc_size.
    CLEAR att_type.
    Set Variables
    docdata-obj_name = objname.
    docdata-obj_descr = objdesc.
    ENDFORM. "ml_customize
    FORM
    FORM ml_addrecp USING preceiver prec_type.
    CLEAR reclist.
    reclist-receiver = preceiver.
    reclist-rec_type = prec_type.
    APPEND reclist.
    ENDFORM. "ml_customize
    FORM
    FORM ml_addtxt USING ptxt.
    CLEAR objtxt.
    objtxt = ptxt.
    APPEND objtxt.
    ENDFORM. "ml_customize
    FORM
    FORM ml_prepare USING bypassmemory whatatt_type whatname.
    IF bypassmemory = ''.
    Fetch List From Memory
    CALL FUNCTION 'LIST_FROM_MEMORY'
    TABLES
    listobject = listobject
    EXCEPTIONS
    OTHERS = 1.
    IF sy-subrc <> 0.
    MESSAGE ID '61' TYPE 'E' NUMBER '731'
    WITH 'LIST_FROM_MEMORY'.
    ENDIF.
    CALL FUNCTION 'TABLE_COMPRESS'
    IMPORTING
    COMPRESSED_SIZE =
    TABLES
    in = listobject
    out = objbin
    EXCEPTIONS
    OTHERS = 1
    IF sy-subrc <> 0.
    MESSAGE ID '61' TYPE 'E' NUMBER '731'
    WITH 'TABLE_COMPRESS'.
    ENDIF.
    ENDIF.
    Header Data
    Already Done Thru FM
    Main Text
    Already Done Thru FM
    Packing Info For Text Data
    DESCRIBE TABLE objtxt LINES tab_lines.
    READ TABLE objtxt INDEX tab_lines.
    docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
    CLEAR objpack-transf_bin.
    objpack-head_start = 1.
    objpack-head_num = 0.
    objpack-body_start = 1.
    objpack-body_num = tab_lines.
    objpack-doc_type = 'TXT'.
    APPEND objpack.
    Packing Info Attachment
    att_type = whatatt_type..
    DESCRIBE TABLE objbin LINES tab_lines.
    READ TABLE objbin INDEX tab_lines.
    objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).
    objpack-transf_bin = 'X'.
    objpack-head_start = 1.
    objpack-head_num = 0.
    objpack-body_start = 1.
    objpack-body_num = tab_lines.
    objpack-doc_type = att_type.
    objpack-obj_name = 'ATTACHMENT'.
    objpack-obj_descr = whatname.
    APPEND objpack.
    Receiver List
    Already done thru fm
    ENDFORM. "ml_prepare
    FORM
    FORM ml_dosend.
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
    document_data = docdata
    put_in_outbox = 'X'
    commit_work = 'X' "used from rel. 6.10
    IMPORTING
    SENT_TO_ALL =
    NEW_OBJECT_ID =
    TABLES
    packing_list = objpack
    object_header = objhead
    contents_bin = objbin
    contents_txt = objtxt
    CONTENTS_HEX = objhex
    OBJECT_PARA =
    object_parb =
    receivers = 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 'SO' TYPE 'S' NUMBER '023'
    WITH docdata-obj_name.
    ENDIF.
    ENDFORM. "ml_customize
    FORM
    FORM ml_spooltopdf USING whatspoolid.
    DATA : pdf LIKE tline OCCURS 0 WITH HEADER LINE.
    Call Function
    CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
    EXPORTING
    src_spoolid = whatspoolid
    TABLES
    pdf = pdf
    EXCEPTIONS
    err_no_otf_spooljob = 1
    OTHERS = 12.
    Convert
    PERFORM doconv TABLES pdf objbin.
    ENDFORM. "ml_spooltopdf
    FORM
    FORM doconv TABLES
    mypdf STRUCTURE tline
    outbin STRUCTURE solisti1.
    Data
    DATA : pos TYPE i.
    DATA : len TYPE i.
    Loop And Put Data
    LOOP AT mypdf.
    pos = 255 - len.
    IF pos > 134. "length of pdf_table
    pos = 134.
    ENDIF.
    outbin+len = mypdf(pos).
    len = len + pos.
    IF len = 255. "length of out (contents_bin)
    APPEND outbin.
    CLEAR: outbin, len.
    IF pos < 134.
    outbin = mypdf+pos.
    len = 134 - pos.
    ENDIF.
    ENDIF.
    ENDLOOP.
    IF len > 0.
    APPEND outbin.
    ENDIF.
    ENDFORM. "doconv
    CODE FOR PROGRAM
    5.
    REPORT zam_temp147 .
    INCLUDE zami_inclfor_mail.
    DATA
    DATA : itab LIKE tline OCCURS 0 WITH HEADER LINE.
    DATA : file_name TYPE string.
    data : path like PCFILE-PATH.
    data : extension(5) type c.
    data : name(100) type c.
    SELECTION SCREEN
    PARAMETERS : receiver TYPE somlreci1-receiver lower case.
    PARAMETERS : p_file LIKE rlgrap-filename
    OBLIGATORY.
    AT SELECTION SCREEN
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    CLEAR p_file.
    CALL FUNCTION 'F4_FILENAME'
    IMPORTING
    file_name = p_file.
    START-OF-SELECTION
    START-OF-SELECTION.
    PERFORM ml_customize USING 'Tst' 'Testing'.
    PERFORM ml_addrecp USING receiver 'U'.
    PERFORM upl.
    PERFORM doconv TABLES itab objbin.
    PERFORM ml_prepare USING 'X' extension name.
    PERFORM ml_dosend.
    SUBMIT rsconn01
    WITH mode EQ 'INT'
    AND RETURN.
    FORM
    FORM upl.
    file_name = p_file.
    CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
    filename = file_name
    filetype = 'BIN'
    TABLES
    data_tab = itab
    EXCEPTIONS
    file_open_error = 1
    file_read_error = 2
    no_batch = 3
    gui_refuse_filetransfer = 4
    invalid_type = 5
    no_authority = 6
    unknown_error = 7
    bad_data_format = 8
    header_not_allowed = 9
    separator_not_allowed = 10
    header_too_long = 11
    unknown_dp_error = 12
    access_denied = 13
    dp_out_of_memory = 14
    disk_full = 15
    dp_timeout = 16
    OTHERS = 17.
    path = file_name.
    CALL FUNCTION 'PC_SPLIT_COMPLETE_FILENAME'
    EXPORTING
    complete_filename = path
    CHECK_DOS_FORMAT =
    IMPORTING
    DRIVE =
    EXTENSION = extension
    NAME = name
    NAME_WITH_EXT =
    PATH =
    EXCEPTIONS
    INVALID_DRIVE = 1
    INVALID_EXTENSION = 2
    INVALID_NAME = 3
    INVALID_PATH = 4
    OTHERS = 5
    ENDFORM. "upl
    regards,
    navjot
    reward if helpfull

  • Changing the seeded rdf report output from text to PDF

    Hi All,
    I am trying to change the seeded report "Print Requisition Report" output from text to PDF. I changed the output format in the concurrent program definition from text to pdf. The report is now getting displayed in pdf format, but the alignment of the fields are changed. The output is not printing as it was printing while in the text output format. The output looks very sloppy, with uneven fonts and too much of text wrapping.
    I tried some formatting and fields are somehow getting displayed but doesnt look in proper format. I am not able to change the font style in the report builder 6i, even if i change it is printing in the same font style with uneven font size. I think reducing the font size might help, but i am unable to change.We are on 11.5.10.2. Please provide your valuable suggestions on how to go about.
    Thanks
    Sarvesh

    Hi Hussein,
    Thanks for the information. After the adjustments in the layout and the font change the report is now getting displayed without any clipping when clicked on view output. But when the same report is printed some characters on the left and and right side is getting clipped. Please help on how to solve this issue.
    Thanks,
    Sarvesh

  • Convert to PDF and Email crashes

    Hi,
    Encountered this problem when I right click on a word file and select "Convert to PDF and Email". It will always crashes with the error "Adobe Elements had stopped working" and the message indicating something to do with ADIST.DLL.
    Had tried the followings but still the error persists.
    1. Uninstall/reinstall Acrobat Pro XI. Had deleted anything related to "Adobe" including Flash player and still no avail.
    2. Update the version to 11.0.07 and still the error is there.
    3. Only happens when converting Word 2010 documents. Excel, Outlook and others are fine.
    4. Valid licensed product from Adobe
    5. Tried renaming the "Adobe Elements" folder and does not work at all.
    6. Tried registering ADIST.DLL but encountered error.
    I am running on a Win 7 Pro 64 bit PC and due to this error, when i try using mail merge with a word doc, it also crashes. Anyone can assist on this? Many thanks in advance!
    Tan

    Crashes with distiller are pretty rare. Fonts can cause distiller to crash. A bad graphic in a file can cause distiller to crash. Maybe a corrupt job options file. Create a simple text file (one page), no graphics. Use the Times New Roman font. Print to Adobe PDF instance. Does the error still happen?

  • Report output sending as an attachement through mail

    we are facing one problem while sending report output as an attachement to specific mail-ids.
    Every thing is working fine.But for each row upto 255 characteers only it is printig.
    Remaining is not comming.
    We are using  Function Module  SO_DOCUMENT_SEND_API1.
    Please help us to solve this.
    Regards,
    Phani

    check this code sample
    <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/5931ff64-0a01-0010-2bb7-ff2f9a6165a0">E-mail ABAP Report List output in HTML format</a>
    Regards
    Raja

  • I am trying to convert a pdf and it asks me to sign in and then i get a network error message

    i am trying to convert a pdf and it asks me to sign in and then i get a network error message

    Hi dougtimberlake,
    We may need a little more information to go on to address the issue you're facing. Are you using ExportPDF to convert the PDF file--and from within Reader or directly via the ExportPDF website? It would also be very helpful to know the exact error message that you're receiving, and whether it happens with all the files that you try to convert, or just some. Please write back and provide a few specifics. In the meantime, please try the following:
    Clear your browser cache (steps to do this vary by browser)
    Check with your IT team to confirm if you have firewall/proxy settings that restrict the ability to upload files to the internet.
    If the issue persists after the steps above, please try another web browser.  A list of supported browsers for accessing the ExportPDF service is available here: http://www.adobe.com/acom/systemreqs/
    I look forward to hearing back from you.
    Best,
    Sara

  • Script Converting into PDF and Sent by Mail -

    Hi Experts,
                   I have faced one problem in Script Converting into PDF format and Sent it thro Mail.
    I have used to SX_OBJECT_CONVERT_OTF_PDF FM to convert into PDF format.
    and I have used SO_NEW_DOCUMENT_ATT_SEND_API1 FM for sending a Mail.
                 Now my Problem is, How is use these FM s Correctly. what are the parameters to be passed to send a mail.
             Kindly give the Coding for sending a Mail  using these above FMs .
    With Thanks,
    Neptune.M

    hi use this...this is good for sending a smartform in pdf format to spool..
    REPORT  zspooltopdf.
    PARAMETER: p_email1 LIKE somlreci1-receiver,
                          p_sender LIKE somlreci1-receiver,
                          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.
    regards,
    venkat.

  • Invoice to convert  in PDF and send by E-Mail

    I would like to Convert the OutPut of Invoice to PDF format and send it through E-Mail.
    Is there any SAP standard programme available to this or what is the process?

    This is OK, but kindly let me know the what paramter I have to enter, I entered some parameter and some parameter I cant understand, marked as '?'.
    Import parameters               Value
    FORMAT_SRC                      OTF    
    FORMAT_DST                      PDF    
    ADDR_TYPE                       5      
    DEVTYPE                              ?  
    FUNCPARA                            ? 
    Changing parameters             Value       
    TRANSFER_BIN                          ?      
    CONTENT_TXT                        0 Entries
    CONTENT_BIN                        0 Entries
    OBJHEAD                            0 Entries
    LEN                                          ?
    Thanks
    Awadhesh

  • Fax the output type and convert to PDF and then to save in UNIX Directory

    Hi,
      I wan to Fax the my sales order acknowldement and at the same time I want to convert that output into PDF and save in the UNIX Directory .
    I also need the code for faxing the sales order acknowledgement.
    Thanks in Advance
    Moderator message: please search for available information/documentation before asking, also see Brad's remarks below.
    Edited by: Thomas Zloch on Dec 20, 2010 9:51 PM

    These are standard processes which are covered in the help files and have been discussed many times here.  This is NOT a training forum for newbies where experts just give you the solution for your requirement.  Once you have proven that you've actually made an effort to solve the issue yourself and have a SPECIFIC technical question, you'll get some help...

  • ME23N Script convert to PDF and send thru mail to the user created by

    Hi,
    I have created a custom PO SAP scirpt for the tcode ME23N and configured the same in tcode NACE Application 'EF' , output type 'NEU'
    But the client requirement is to send  this SAP Scipt PO converted to pdf & then send thru email to the user who created PO (ME23N)?
    How do u get this functionality please let me know?
    Regards,
    Anil

    Hello,
    that is easy, you only need to keep the steps to do in mind:
    1) find a suitable point to place in your code to do all this for you
    2) create a FM that will convert your form into PDF (search a little, this has been done like zillion times here)
    3) create a FM that will send the PDF stream (hex data which is accepted by the BCS class as the attachment data)
    4) check the email customizing in your system
    5) run and enjoy
    All the parts has been done here many times, shouldn´t be a problem.
    Otto

  • Help needed...Mail Merge in Word converting to PDF and saving

    Hello,
    I often have to and often will be required to in the future to produce loan documents via a mail merge in word, convert to PDF, lock and save individually with each individual investor's details recorded in the name of the saved file in PDF.
    I have scoured the net and read forums and have tried installing macros but have had no success. 
    I would appreciate any help.
    Thank you so much in advance.
    Kind regards
    Jess

    30 people  have viewed my question; no reply yet   Pleaseeeeeeee!!!!

Maybe you are looking for

  • What are the best tools to test why Mac Pro is so slow?

    Hi, I have a 2 x 2.4 GHz quad core intel xeon with 6 GB 1066 MHz DDR3 RAM.  2 x 1 TB Western Digital disks (WDC WD1001FALS-41Y6A1 (boot disk- 50% disk free) and WDC WD1002FAEX-00Y9A0).   I am often surprised at how slow the machine works.  Especially

  • HT201412 i cant get it to charge, its not the plugs, because they charge other iphones

    I cannot get my ipod to charge, its not the plug, because i can charge other iphones with it

  • ALV Tree - Excel & header comment

    Hello, I want to export to excel my ALV tree. I'm using the FM 'ALV_XXL_CALL'.  But I would like to set the header comment from the ALV in the excel sheet (before the data). How I have to do ? Thank you Bernard Pochin.

  • Create Tables on Very Furst Run of the Application

    Hi, I'm trying to create a derby(Java DB) database and its tables on the very first run of the application, but when I run second time, obviously it throws an exception of TABLE/VIEW already exists. So, once the database and its tables are created, h

  • Creating Rolling Sum Measures

    Hi, I am pretty new to OBIEE and am trying to create rolling sum measures (rolling 3 months sum ). Can anyone help me out in this. I searched on the web and couldn't locate the correct article. Thanks, Anand