Script spol to mail , and report which sends output to spools

Hi All,
Please give me
script spol to mail , and report which sends output to spool.
thaks,
babu

Hi,
Check the below code:
scripts through email:
*& Report  ZRICHA_OTF_PDF
report  zricha_otf_pdf
    message-id zz.
CONSTANTS                                                           *
constants : c_x(1)      type c value 'X',      " For constant value
            c_otf(3)    type c value 'OTF',    " For format
            c_u(1)      type c value 'U'.      " Mail Option
VARIABLES                                                           *
data : v_rqident  type tsp01-rqident,  " For Spool Number
       v_rqclient type tsp01-rqclient, " For Client
       v_rqo1name type tsp01-rqo1name, " For Object name
       v_spool    type tsp01-rqident,  " For Spool Number
       v_spool1   type tsp01-rqident.  " For Spool Number
FLAGS                                                               *
data : f_spool type c.
  INTERNAL TABLES                                                    *
Internal table for sending mails
data: it_pdf          like tline      occurs 10 with header line,
      it_xi_pdf       like tline      occurs 0  with header line,
      it_html         like solisti1   occurs 0  with header line,
      it_xi_temp      like bapiqcmime occurs 0  with header line,
      it_xi_mime(255) type c          occurs 0  with header line.
For sending mail
data: it_objpack like sopcklsti1 occurs 2 with header line.
Internal table for Single List with Column Length 255
data : it_objbin like solisti1 occurs 10 with header line.
Internal table for Single List with Column Length 255
data : it_objtxt like solisti1 occurs 10 with header line.
Internal table for Structure of the API Recipient List
data : it_reclist like somlreci1 occurs 5 with header line.
Structure of the API Recipient List
data: x_doc_chng like sodocchgi1.
Internal table for storing the variants
data : begin of it_variant1 occurs 0,
        variant like varid-variant,
       end   of it_variant1.
Internal table to store variants for the programs
data: it_variant2 like it_variant1 occurs 0 with header line.
Internal table for storing the selected values
data it_return type ddshretval occurs 0 with header line.
Internal table for storing the mail-ids
data : begin of it_mailid occurs 0,
        kokrs like csks-kokrs,
        kostl like csks-kostl,
        datbi like csks-datbi,
        telx1 like csks-telx1,
       end   of it_mailid.
Internal table for storing the mail-ids
data : it_mailid1 like it_mailid occurs 0 with header line.
  SELECTION SCREEN                                                   *
data : v_char type char50.
selection-screen begin of block b1 with frame title text-001.
select-options: s_email for v_char  no intervals
                lower case
                no-display.
select-options: s_email1 for v_char  no intervals
                lower case
                no-display.
selection-screen end of block b1.
selection-screen begin of block a1 with frame title text-028.
selection-screen begin of line.
parameters : p_c1 as checkbox.
selection-screen comment 3(66) text-026 for field p_c1.
selection-screen end of line.
parameters : p_set like tsp1d-papart matchcode object zh_tsp1d.
selection-screen skip 1.
parameters : p_vara1 type rs38m-selset.
selection-screen end of block a1.
selection-screen begin of block a2 with frame title text-029.
selection-screen begin of line.
parameters : p_c2 as checkbox.
selection-screen comment 3(56) text-027 for field p_c1.
selection-screen end of line.
parameters : p_set1 like tsp1d-papart matchcode object zh_tsp1d.
selection-screen skip 1.
parameters : p_vara2 type rs38m-selset.
selection-screen end of block a2.
AT SELECTION SCREEN ON VALUE REQUEST
at selection-screen on value-request for p_vara1.
For fetching the variants available for the program
  perform fetch_variants.
at selection-screen on value-request for p_vara2.
For fetching the variants available for the program
  perform fetch_variants1.
AT SELECTION SCREEN
at selection-screen.
For Validation
  perform validation.
START OF SELECTION                                                  *
start-of-selection.
To get the output data and mail
  perform fetch_data.
END OF SELECTION                                                    *
end-of-selection.
  if f_spool = c_x.
    message e000 with 'Spool Not Generated'(060).
  endif.
*&      Form  fetch_data
      To get the output data and mail
form fetch_data .
To send the output to spool
  perform generate_spool.
endform.                    " fetch_data
*&      Form  generate_spool
      To send the output to spool
form generate_spool .
  data: l_params like pri_params,
        l_days(1)  type n value 2,
        l_count(3) type n value 1,
        l_valid    type c,
        l_valid1   type c,
        l_params1  like pri_params.
  data: l_device type usr01-spld.
*Get the printer name for the user
  select single spld into l_device from usr01 where bname = sy-uname.
  if l_device is initial.
    l_device = 'LOCL'.
  endif.
For report-1
  if p_c1 = 'X'.
Setting the print parameters
    call function 'GET_PRINT_PARAMETERS'
      exporting
        destination    = l_device
        copies         = l_count
        list_name      = sy-uname
        list_text      = 'SUBMIT ... TO SAP-SPOOL'(008)
        release        = c_x
        new_list_id    = c_x
        expiration     = l_days
       LINE_SIZE      = 255
       LINE_COUNT     = 65
        layout         = p_set
        sap_cover_page = space
        cover_page     = space
        receiver       = 'SAP*'(010)
        department     = 'System'(011)
        no_dialog      = c_x
      importing
        out_parameters = l_params
        valid          = l_valid.
    if l_valid <> space.
      clear v_spool.
Fetch the spool number b4 submit
      perform fetch_recent_spool using v_spool.
Submitting the program to spool
      submit rkaep000 to sap-spool
        using selection-set p_vara1
        spool parameters l_params
        without spool dynpro
        and return.
      clear v_spool1.
Fetch the spool number after submit
      perform fetch_recent_spool using v_spool1.
      if v_spool = v_spool1.
        f_spool = c_x.
        if p_c2 is initial.
          stop.
        endif.
      else.
Checking the format ( ABAP/OTF)
        perform format_check tables s_email.
      endif.
    else.
      message e000 with 'Problem in print settings'(003).
      stop.
    endif.
  endif.
For Report-2
  if p_c2 = 'X'.
Setting the print parameters
    call function 'GET_PRINT_PARAMETERS'
      exporting
        destination    = l_device
        copies         = l_count
        list_name      = sy-uname
        list_text      = 'SUBMIT ... TO SAP-SPOOL'(008)
        release        = c_x
        new_list_id    = c_x
        expiration     = l_days
       LINE_SIZE      = 200
       LINE_COUNT     = 65
        layout         = p_set1
        sap_cover_page = space
        cover_page     = space
        receiver       = 'SAP*'(010)
        department     = 'System'(011)
        no_dialog      = c_x
      importing
        out_parameters = l_params1
        valid          = l_valid1.
    if l_valid1 <> space.
      clear v_spool.
Fetch the spool number b4 submit
      perform fetch_recent_spool using v_spool.
Submitting the program to spool
      submit gp3diehxy88snfj0391v7kf9ek7050 to sap-spool
        using selection-set p_vara2
        spool parameters l_params1
        without spool dynpro
        and return.
      clear v_spool1.
Fetch the spool number after submit
      perform fetch_recent_spool using v_spool1.
      if v_spool = v_spool1.
        message e000 with 'Spool Not Generated'(060).
        stop.
      endif.
Checking the format ( ABAP/OTF)
      perform format_check tables s_email1.
    else.
      message e000 with 'Problem in print settings'(003).
      stop.
    endif.
  endif.
endform.                    " generate_spool
*&      Form  fetch_recent_spool
      Fetch the recent spool number generated
form fetch_recent_spool using p_v_spool type tsp01-rqident .
  data:  l_user like tsp01-rq2name.
  clear : v_rqident,
          v_rqclient,
          v_rqo1name.
  l_user = sy-uname.
Get latest Spool No
  select single rqident
                rqclient
                rqo1name
         into (v_rqident , v_rqclient , v_rqo1name)
    from tsp01
   where rqcretime =   ( select max( rqcretime )
                                from tsp01
                               where rq2name eq l_user
                                 and rqfinal eq '.' ).
  if sy-subrc = 0 .
    p_v_spool = v_rqident.
  endif.
endform.                    " fetch_recent_spool
*&      Form  format_check
      Checking the format ( ABAP/OTF)
form format_check tables p_s_email structure s_email.
  data : l_objtype    like rststype-type.
  call function 'RSTS_GET_ATTRIBUTES'
    exporting
      authority     = 'SP01'(019)
      client        = v_rqclient
      name          = v_rqo1name
      part          = 1
    importing
      objtype       = l_objtype
    exceptions
      fb_error      = 1
      fb_rsts_other = 2
      no_object     = 3
      no_permission = 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.
  if l_objtype(3) = c_otf.
Convert OTF Spool to PDF
    perform convert_otf2pdf tables p_s_email.
  else.
Convert ABAP Spool to PDF
    perform convert_abap2pdf tables p_s_email.
  endif.
endform.                    " format_check
*&      Form  convert_otf2pdf
      Convert OTF Spool to PDF
form convert_otf2pdf tables p_p_s_email structure s_email .
  clear   it_pdf.
  refresh it_pdf.
  data : l_bytecount  type i.
Fn. to get the PDF format
  call function 'CONVERT_OTFSPOOLJOB_2_PDF'
    exporting
      src_spoolid              = v_rqident
      no_dialog                = 'X'
    importing
      pdf_bytecount            = l_bytecount
    tables
      pdf                      = it_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.
  if sy-subrc = 0.
For page format
    perform page_format tables p_p_s_email.
  else.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
endform.                    " convert_otf2pdf
*&      Form  convert_abap2pdf
       Convert ABAP Spool to PDF
form convert_abap2pdf tables p_p_s_email structure s_email.
  clear   it_pdf.
  refresh it_pdf.
  data : l_bytecount  type i.
Fn. to convert to PDF format
  call function 'CONVERT_ABAPSPOOLJOB_2_PDF'
    exporting
      src_spoolid              = v_rqident
      no_dialog                = 'X'
    importing
      pdf_bytecount            = l_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.
  if sy-subrc = 0.
For page formatting
    perform page_format tables p_p_s_email.
  else.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
endform.                    " convert_abap2pdf
*&      Form  send_mail
      For sending mail
form send_mail tables mail structure s_email .
Structures and internal tables for the send data
  data: objpack like sopcklsti1 occurs 2  with header line,
        objhead like solisti1   occurs 1  with header line,
        objbin  like solisti1   occurs 0  with header line,
        objtxt  like solisti1   occurs 10 with header line,
        reclist like somlreci1  occurs 5  with header line.
  data: doc_chng like sodocchgi1,
        tab_lines like sy-tabix.
Data for the status output after sending
  data: sent_to_all like sonv-flag.
  clear: it_reclist, it_reclist[],
         it_objtxt , it_objtxt[],
         it_objpack, it_objpack[],
         it_objbin , it_objbin[],x_doc_chng.
  loop at it_html.
    objbin-line = it_html-line.
    append objbin.
    clear objbin.
  endloop.
Create the document which is to be sent
  doc_chng-obj_name  = 'List'(012).
  doc_chng-obj_descr = 'Mail'(013).
Heading
  objtxt-line = 'Mail with pdf attachment'(014).
  append objtxt.
  clear objtxt.
Size
  describe table objtxt lines tab_lines.
  read table objtxt index tab_lines.
  doc_chng-doc_size = ( tab_lines - 1 ) * 255 + strlen( objtxt ).
Fill the fields of the packing_list for the main document:
  clear objpack-transf_bin.
The document needs no header (head_num = 0)
  objpack-head_start = 1.
  objpack-head_num = 0.
Body
  objpack-body_start = 1.
  objpack-body_num = tab_lines.
  objpack-doc_type = 'RAW'(015).
  append objpack.
Create the attachment (the list itself)
  describe table objbin lines tab_lines.
Fill the fields of the packing_list for the attachment:
  objpack-transf_bin = 'X'.
Header
  objpack-head_start = 1.
  objpack-head_num = 0.
Body
  objpack-body_start = 1.
  objpack-body_num = tab_lines.
  objpack-doc_type = 'PDF'(016).
  objpack-obj_name = 'Attachment'(017).
  objpack-obj_descr = 'Mail with pdf Attachment'(018).
  objpack-doc_size = tab_lines * 255.
  append objpack.
*-Fill the mail recipient list
  loop at mail.
    reclist-receiver = mail-low.
    reclist-rec_type = c_u.
    append reclist.
    clear: reclist,
           mail.
  endloop.
*-Send the document by calling the SAPoffice API1 module for sending
*-documents with attachments
  call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    exporting
      document_data              = doc_chng
      put_in_outbox              = c_x
      commit_work                = c_x
    importing
      sent_to_all                = sent_to_all
    tables
      packing_list               = objpack
      object_header              = objhead
      contents_bin               = objbin
      contents_txt               = objtxt
      receivers                  = reclist
    exceptions
      too_many_receivers         = 1
      document_not_sent          = 2
      operation_no_authorization = 4
      others                     = 99.
  case sy-subrc .
    when 0.
      message i000 with 'Mail has been sent successfully'(006).
    when others.
      message e000 with 'Problem in sending the mail'(023).
  endcase.
endform.                    " send_mail
*&      Form  page_format
       For page foramtting
form page_format tables email structure s_email .
  data : l_lines       type i,
         l_temp(500)   type c,
         l_offset      type p,
         l_lineslen(2) type p,
         l_mimelen(2)  type p,
         l_tabix       like sy-tabix.
  clear : it_xi_pdf,
          it_xi_temp.
  refresh : it_xi_pdf,
            it_xi_temp.
  it_xi_pdf[] = it_pdf[].
Reformat the line to 255 characters wide (code from SAP)
  clear: l_temp, l_offset, it_xi_temp.
  describe table it_xi_pdf   lines  l_lines.
  describe field it_xi_pdf   length l_lineslen in character mode.
  describe field it_xi_temp  length l_mimelen in character mode.
  loop at it_xi_pdf.
    l_tabix = sy-tabix.
    move it_xi_pdf to l_temp+l_offset.
    if l_tabix = l_lines.
      l_lineslen = strlen( it_xi_pdf ).
    endif.
    l_offset = l_offset + l_lineslen.
    if l_offset ge l_mimelen.
      clear it_xi_temp.
      it_xi_temp = l_temp(l_mimelen).
      append it_xi_temp.
      shift l_temp by l_mimelen places.
      l_offset = l_offset - l_mimelen.
    endif.
    if l_tabix = l_lines.
      if l_offset gt 0.
        clear it_xi_temp.
        it_xi_temp = l_temp(l_offset).
        append it_xi_temp.
      endif.
    endif.
  endloop.
  clear : it_xi_mime,
          it_xi_mime[].
  loop at it_xi_temp.
    it_xi_mime(255) = it_xi_temp-line.
    append it_xi_mime.
    clear  it_xi_mime.
  endloop.
Final Data
  clear : it_html,
          it_html[].
  it_html[] = it_xi_mime[].
For sending mail
  perform send_mail tables email.
endform.                    " page_format
*&      Form  fetch_variants
      For fetching the variants available for the program
form fetch_variants .
  data : l_program like rs38m-programm value 'RKAEP000',
         l_vara1 type dfies-fieldname value 'P_VARA1'.
  clear : it_variant1,
          it_variant1[].
Get variants
  perform get_variants tables it_variant1
                       using l_program.
F4 Help
  if not it_variant1[] is initial.
    perform get_f4_help tables it_variant1
                         using l_vara1
                        changing p_vara1.
  else.
    message e000 with 'No variants available for report1'(054).
  endif.
endform.                    " fetch_variants
*&      Form  validation
      For Validation
form validation .
  data : l_pro1 like rs38m-programm value 'RKAEP000',
         l_pro2 like rs38m-programm value 'GP3DIEHXY88SNFJ0391V7KF9EK7050',
         l_c1,
         l_c2.
If both check-box are unchecked
  if p_c1 is initial
and p_c2 is initial.
    message e000 with 'Check any one check-box'(049).
  endif.
If checked without varaint
  if not p_c1 is initial and p_vara1 is initial.
    message e000 with 'Please give any one of the variant for report1'(055).
  endif.
If checked without varaint
  if not p_c2 is initial and p_vara2 is initial.
    message e000 with 'Please give any one of the variant for report2'(061).
  endif.
Reading the variant and fetching the mail-ids
  if p_c1 = c_x.
    l_c1 = '1'.
    clear : s_email,
            s_email[].
    perform read_variants tables it_mailid
                                 s_email
                           using p_vara1
                                 l_pro1
                                 l_c1.
    if s_email[] is initial.
      message e000 with 'No Id available for given Cost report1'(066).
    else.
      sort s_email by low.
      delete adjacent duplicates from s_email comparing low.
    endif.
  endif.
Reading the variant and fetching the mail-ids
  if p_c2 = c_x.
    clear : s_email1,
            s_email1[].
    l_c2 = '2'.
    perform read_variants tables it_mailid1
                                 s_email1
                           using p_vara2
                                 l_pro2
                                 l_c2.
    if s_email1[] is initial.
      message e000 with 'No Id available for given Cost report2'(067).
    else.
      sort s_email1 by low.
      delete adjacent duplicates from s_email1 comparing low.
    endif.
  endif.
endform.                    " validation
*&      Form  GET_VARIANTS
      Fetching Variants
form get_variants  tables   p_it_variant structure it_variant1
                   using    p_v_program  type rs38m-programm.
  select variant
         from varid
         into table p_it_variant
         where report = p_v_program.
endform.                    " GET_VARIANTS
*&      Form  GET_F4_HELP
      text
form get_f4_help  tables   p_it_variant1 structure it_variant1
                   using   p_l_vara1 like dfies-fieldname
                  changing p_p_vara like p_vara1.
Fn. for Pop-Up
  call function 'F4IF_INT_TABLE_VALUE_REQUEST'
    exporting
      retfield        = p_l_vara1
      value_org       = 'S'
      display         = ' '
    tables
      value_tab       = p_it_variant1
      return_tab      = it_return
    exceptions
      parameter_error = 1
      no_values_found = 2
      others          = 3.
  if sy-subrc = 0.
    p_p_vara = it_return-fieldval.
  else.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
endform.                    " GET_F4_HELP
*&      Form  FETCH_VARIANTS1
      text
form fetch_variants1 .
  data : v_program1 like rs38m-programm value 'GP3DIEHXY88SNFJ0391V7KF9EK7050',
         l_vara2  type dfies-fieldname value 'P_VARA2'.
  clear : it_variant2,
          it_variant2[].
Get Variants
  perform get_variants tables it_variant2
                       using v_program1.
F4 Help
  if not it_variant2[] is initial.
    perform get_f4_help tables it_variant2
                        using  l_vara2
                      changing p_vara2.
  else.
    message e000 with 'No variants available for report2'(050).
  endif.
endform.                    " FETCH_VARIANTS1
*&      Form  read_variants
       Reading the variant and fetching the mail-ids
form read_variants tables p_it_mailid structure it_mailid
                          p_s_email   structure s_email
                   using  p_p_vara1   like p_vara1
                          p_l_pro1    like rs38m-programm
                          p_l_c1      type c.
  data : l_temp(44),
         it_valutab like rsparams occurs 0 with header line.
  ranges : r_cocen for csks-kostl.
Function Module to get the variant contents
  call function 'RS_VARIANT_CONTENTS'
    exporting
      report               = p_l_pro1
      variant              = p_p_vara1
    tables
      valutab              = it_valutab
    exceptions
      variant_non_existent = 1
      variant_obsolete     = 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.
  clear : r_cocen,
          r_cocen[].
  loop at it_valutab where selname = 'KOSTL'
                        or selname = '_C-CCTR'.
Getting the range of cost centers
    if it_valutab-option = 'BT'.
      r_cocen-low    = it_valutab-low.
For Conversion Routine
      perform conversion using r_cocen-low.
      r_cocen-high   = it_valutab-high.
For Conversion Routine
      perform conversion using r_cocen-high.
      r_cocen-option = 'BT'.
      r_cocen-sign   = 'I'.
      append r_cocen.
      clear  r_cocen.
    endif.
Getting the single cost centers
    if it_valutab-option = 'EQ'.
      r_cocen-low    = it_valutab-low.
For Conversion Routine
      perform conversion using r_cocen-low.
      r_cocen-option = 'EQ'.
      r_cocen-sign   = 'I'.
      append r_cocen.
      clear  r_cocen.
    endif.
  endloop.
If no cost centers
  if not r_cocen[] is initial.
    select kokrs
           kostl
           datbi
           telx1
      from csks
           into table p_it_mailid
     where kostl in r_cocen.
    if p_it_mailid[] is initial.
      if p_l_c1 = '1'.
        message e000 with 'No IDs available for report1'(059).
      elseif p_l_c1 = '2'.
        message e000 with 'No IDs available for report2'(062).
      endif.
    endif.
Deleting the blank entries
    delete p_it_mailid where telx1 = space.
    clear l_temp.
    read table p_it_mailid index 1.
    l_temp = p_it_mailid-telx1.
    data : l_check.
    loop at p_it_mailid where telx1 <> l_temp.
      l_check = c_x.
    endloop.
For checking the unique ids
    if l_check = c_x.
      if p_l_c1 = '1'.
        message e000 with 'No unique mail-ids for  report1'(058).
      elseif p_l_c1 = '2'.
        message e000 with 'No unique mail-ids for  report2'(065).
      endif.
    endif.
Populating the IDs for the cost centers
    loop at p_it_mailid.
      set locale language sy-langu.
      translate p_it_mailid-telx1 to lower case.
      set locale language space .
      concatenate p_it_mailid-telx1 '@allergan.com' into l_temp.
      p_s_email-low = l_temp.
      p_s_email-sign = 'I'.
      p_s_email-option = 'EQ'.
      append p_s_email.
      clear  p_s_email.
    endloop.
  else.
    if p_l_c1 = '1'.
      message e000 with 'No Cost Center Available for report1'(057).
    elseif p_l_c1 = '2'.
      message e000 with 'No Cost Center Available for report2'(063).
    endif.
  endif.
endform.                    " read_variants
*&      Form  CONVERSION
      For Conversion Routine
form conversion  using    p_it_valutab_low type c.
  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input  = p_it_valutab_low
    importing
      output = p_it_valutab_low.
endform.                    " CONVERSION
REPORT Z_RMTIWARI_SEND_SPOOL_MAIL_ATT .
PARAMETERS : P_SPOOL TYPE TSP01-RQIDENT OBLIGATORY .
PARAMETERS : P_MAIL TYPE char100 OBLIGATORY .
TYPES : TY_LINE type string.
DATA: IT_ATTACHMENT TYPE soli OCCURS 0 WITH HEADER LINE.
DATA: IT_ATTACHMENT_LONG TYPE TY_LINE OCCURS 0 WITH HEADER LINE.
DATA: LV_PDF_SIZE type i.
DATA: LT_PDF type standard table of tline with header line.
PERFORM SEND_EMAIL USING P_SPOOL P_MAIL.
FORM send_email
--> X_SPOOL_ID
--> X_EMAIL
FORM send_email USING X_SPOOL_ID X_EMAIL.
DATA: LT_OBJPACK LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE,
LT_OBJHEAD LIKE solisti1 OCCURS 1 WITH HEADER LINE,
LT_OBJBIN LIKE solisti1 OCCURS 10 WITH HEADER LINE,
LT_OBJTXT LIKE solisti1 OCCURS 10 WITH HEADER LINE,
LT_RECLIST LIKE somlreci1 OCCURS 5 WITH HEADER LINE,
LV_DOCUMENT_DATA TYPE sodocchgi1.
DATA: L_ATT_LINES TYPE i.
DATA : LV_SPOOL_DESC(68) type c.
CHECK NOT ( X_EMAIL IS INITIAL ).
CLEAR: LT_RECLIST, LT_RECLIST[],
LT_OBJHEAD, LT_OBJHEAD[],
LT_OBJTXT, LT_OBJTXT[],
LT_OBJBIN, LT_OBJBIN[],
LT_OBJPACK, LT_OBJPACK[].
CLEAR LV_DOCUMENT_DATA.
Read spool and get the pdf internal table and name of spool
PERFORM READ_SPOOL USING X_SPOOL_ID LV_SPOOL_DESC.
CHECK NOT ( LT_PDF[] IS INITIAL ).
Convert pdf itab to 255 line itab.
data :LV_COUNTER type i.
data :LV_FROM type i.
loop at LT_PDF.
translate LT_PDF using ' ~' .
concatenate IT_ATTACHMENT_LONG LT_PDF into it_attachment_long.
endloop.
translate IT_ATTACHMENT_LONG using '~ ' .
append IT_ATTACHMENT_LONG.
clear : LV_COUNTER.
DO.
LV_COUNTER = strlen( IT_ATTACHMENT_LONG ).
if LV_COUNTER ge 255.
IT_ATTACHMENT = IT_ATTACHMENT_LONG(255).
append IT_ATTACHMENT.
SHIFT IT_ATTACHMENT_LONG by 255 places.
else.
IT_ATTACHMENT = IT_ATTACHMENT_LONG(lv_counter).
append IT_ATTACHMENT.
exit.
endif.
ENDDO.
Body of email
MOVE 'Email sent to you from SAP' TO LT_OBJTXT.
APPEND LT_OBJTXT.
LV_DOCUMENT_DATA-obj_name = 'SpoolMail'.
Title of the email as spool name
LV_DOCUMENT_DATA-obj_descr = LV_SPOOL_DESC.
LV_DOCUMENT_DATA-sensitivty = 'O'.
LV_DOCUMENT_DATA-expiry_dat = SY-datum + 15.
LV_DOCUMENT_DATA-doc_size = STRLEN( LT_OBJTXT ).
e-mail body
CLEAR LT_OBJPACK.
LT_OBJPACK-head_start = 1.
LT_OBJPACK-head_num = 0.
LT_OBJPACK-body_start = 1.
LT_OBJPACK-body_num = 1.
LT_OBJPACK-doc_type = 'RAW'.
LT_OBJPACK-doc_size = STRLEN( LT_OBJTXT ).
APPEND LT_OBJPACK.
For e-mail attachment
DESCRIBE TABLE IT_ATTACHMENT LINES L_ATT_LINES.
READ TABLE IT_ATTACHMENT INDEX L_ATT_LINES.
CLEAR LT_OBJPACK.
LT_OBJPACK-transf_bin = 'X'.
LT_OBJPACK-head_start = 1.
LT_OBJPACK-head_num = 1.
LT_OBJPACK-body_start = 1.
LT_OBJPACK-body_num = L_ATT_LINES.
LT_OBJPACK-doc_type = 'PDF'.
LT_OBJPACK-obj_name = 'email'.
LT_OBJPACK-obj_descr = LV_SPOOL_DESC.
LT_OBJPACK-doc_size = ( 255 * ( L_ATT_LINES - 1 ) ) + STRLEN( IT_ATTACHMENT-line ).
APPEND LT_OBJPACK.
make recipient list
LT_RECLIST-receiver = X_EMAIL.
LT_RECLIST-rec_type = 'B'. "To external email id
APPEND LT_RECLIST.
send mail with attachment
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = LV_DOCUMENT_DATA
put_in_outbox = 'X'
TABLES
packing_list = LT_OBJPACK
object_header = LT_OBJHEAD
contents_bin = IT_ATTACHMENT
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.
write:/ 'Message sent'.
else.
write:/ 'Error encountered'.
endif.
ENDFORM. " send_email
*& Form read_spool
FORM read_spool USING X_SPOOL_ID Y_SPOOL_DESC.
DATA : LV_SPOOL_TYPE TYPE TSP01-RQDOCTYPE.
SELECT SINGLE RQDOCTYPE RQTITLE
INTO (lv_spool_type, y_spool_desc)
FROM TSP01
WHERE RQIDENT eq X_SPOOL_ID.
IF Y_SPOOL_DESC IS INITIAL.
concatenate 'Spool-' X_SPOOL_ID into Y_SPOOL_DESC.
ENDIF.
IF LV_SPOOL_TYPE eq 'LIST'. " If spool is a list
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID

Similar Messages

  • HT5312 Forgot your answers to Questions of safety, and email, which sends him re-appoint safety Questions (Not Available I)

    Forgot your answers to Questions of safety, and email, which sends him re-appoint safety Questions (Not Available I)
    I ask you to help change that sends e-mail to him (re-appoint safety Questions)
    Thank you .

    You won't be able to change or add a rescue email address until you can answer your questions, you will need to contact Support in your country to get the questions reset.
    Contacting Apple about account security : http://support.apple.com/kb/HT5699
    When they've been reset you can then use the steps half-way down the HT5312 page that you posted from to update/add a rescue email address for potential future use : http://support.apple.com/kb/HT5312

  • Mail.app will not send (att) mail. Web mail and Thunderbird can send.

    Mail.app will not send (att) mail. Web mail and Thunderbird can send.

    I'm having the exact same problem on my iMac. I can receive email from imap.mail.yahoo.com, but cannot receive from smtp.mail.yahoo.com. I have not changed these settings in years and as of a few days ago they stopped working. These settings work fine on my iPhone and iPad.
    So far I have:
    -Deleted accounts and reestablished them
    -Deleted the Mail preference file ->com.apple.mail.plist

  • Shell script to start forms and reports server on reboot

    Does anyone have on shell script to automatically start up the forms and reports server on unix after a reboot?
    thanks much

    I also recompiled the "test.fmb" that came with the 10g Forms and Server on my windows xp machine and when I downloaded it back to the Linux Forms and Server machine, it loss the functionality of the "OK" button which is suppose to perform "exit_form" when pressed.
    BTW, I am using 10G developer suite on windows xp.

  • Not receiving some mail and can't send mail to myself

    I've been trying to get a password reset link from Paypal (which I haven't used since before I got my new Imac) but I'm not getting any of their emails. I called their tech support and had them send it twice more, but I'm still not getting anything and they have no clue what the problem is, even though I do get adverts from them. I tried sending myself an email and I can't get that either. I've been using AT&T internet for years so I'm forced to have email on my yahoo page as well as standard mac mail but I'm not getting the emails on my yahoo account (same address) either. What is going on and how can I fix it? Software is Lion 10.6.8

    I would check each smtp server and ports and imap or pop3 depending on your mail provider
    settings up against the mail providers listed settings to verify that your settings are set correctly

  • Mail and iCal Schedule Send

    Is there a way, besides using Mail Scripts, to schedule-send an email message. I say Mail and iCal because there was no place for Mail problems that I saw in the forum, and this has to do with iCal, so, why not question here? Thanks.

    You don't reply in email to an iCloud invitation. You load the ICS attachment and are prompted to accept or decline.
    iCloud: Invite people to an event

  • Mail and AOL cant send from 1 of 3 accounts

    I have 3 AOL screen names and have been using them with OSX mail for years. Now, one of the accounts refuses to send email.
    I get:
    "cannot send email using the server smpt.aol.com"
    My other 2 account use the same server and no problem.
    I completely trashed my old OSX mail and reinstalled...even dumped the preferences so it started from scratch and still the same problem. If I run the AOL application I can send all day but I really want to use OSX mail.
    Any ideas on how to fix this?
    Thanks, Michael

    Hi PrintGuy!
    After you started from scratch, did you reconfigure the settings in Apple Mail for AOL?
    This is a handy utility AOL Services Assistant, that does it automatically.
    ali b

  • Conflict between MAIL and AOL - cannot send! same port?

    I just spent an hour on the phone with a very nice Apple tech and it turns out that the reason I cannot send mail (I can, intermittently) on my Mac mail application is that it conflicts (he believes) with aol, i.e. perhaps they are sharing the same port.
    The error message says mail cannot be delivered on Port 25 - but when I sign out of aol, mail works!
    Is there a way to adjust the port aol uses, or make some other change with aol so I can have both app's open at the same time?

    I don't use the aol browser, but I do like to sign on directly
    to check my "other" (i.e. aol) email, use the address book, etc.
    Apple provides what is called the AOL Service Assistant which will transfer (from the AOL program) your AOL email account or accounts to the Mail application, AOL address book contacts to the Address Book application and I believe it will also transfer AOL bookmarks to Safari so you can dump using what is a VERY old program for OS X which I doubt AOL will provide another update for.
    I have no idea if it is possible to change the port used by the AOL program and I'm not even sure if the AOL program uses an SMTP server for sending messages with an AOL account.

  • Leopard Mail and Filemaker pro - "Send Mail" is s-l-o-w

    When I upgraded to Leopard, I began having a problem with the "Send Mail" function in Filemaker Pro, even after I upgraded to the latest version. Previously, sending mail with an attachment to 300 BCC addresses went very quickly - about 10 seconds. Since Leopard, I have begun seeing each address get loaded into the BCC line, an operation taking 20 minutes or more. Has anyone else seen this, and are there any suggestions on how to remedy it?

    You might try this.
    MAC Mail, for some reason, wants a DNS server setting in the network setup.
    Under System Preferences, go to Network and add your DNS numbers for your ISP Server. Get the right numbers from your ISP. I did a search for "DNS" on the ATT/YAHOO member web site.
    This fixes the slow checking and sending of mail....It also fixes problems where mail sends slow and may give Authentication errors.
    I spent many hours on this and finally the answer was posted on this forum.
    Public DNS servers are less likely to be changed. They have been tried and do work. Nobody knows why.
    For Public DNS servers look at.
    http://www.tech-faq.com/public-dns-servers.shtml

  • Can't read body of e-mail and can't send e-mails with text in body.

    The mail on my IPOD touch suddenly doesn't show up in the body of the text. Only can read "From, To and Subject". I also am unable to send e-mails as I can't get into text body. I have twice deleted the account and installed again but problem still occurs.
    Can somebody please help or direct me to where I can find help.

    Software was just updated and works fine.

  • Black mailing and report abuse

    Hi
    Dear Admin
    This girl on a chat site gave me her skype id
    and then she asked me to show my face
    then she asked my number
    and a code came from this UK no
    along with a 4 digit code
    she asked me the code which i didnt give her
    she threatened me that she would post my video on fb
    but i obliged to her saying she could go on
    and she blocked my number
    please help
    [edited to remove Personal Information]

    Hi
    Dear Admin
    This girl on a chat site gave me her skype id
    and then she asked me to show my face
    then she asked my number
    she insisted on me joining in with her. 
    later she played the movie in front of camera and demand 1000 USD to be sent to an account and Id number. I refused on which she threatened me that she would post the video on facebook and on different websites if I didnt comply. I blocked her on skype and sent a email on [e-mail removed for privacy and security]

  • Is it possible to synch Mail and Outlook which running in Parallels?

    I'm working on a Mac G5 running Leopard 10.5.1 and running Windows XP in Parallels. I mainly use the Mac side and have been told that I have to use Outlook in the Windows environment so I can access all it's wonderful features (most of which I find useless). I prefer to pause Parallels and use it only when I need it, which, as it turns out, is to mostly check for e-mail.
    Is it possible to synch Mail up with Outlook so that I can easily glance at the dock and see if I have any new messages? If so, how?
    Thanks in advance

    I'd be interested in knowing this as well!

  • Help with two scripts - Mounting remote DMG and Checking which network I'm connected to

    Hey guys, I need some help with two separate scripts:
    1. The first script I'm trying to create to mount a DMG stored remotely on another Mac using an AppleScript or shell script. Using the following:
    set cmd to "hdiutil mount 'afp://username:[email protected]/Lion/Users/username/Desktop/Test.sparseim age'"
    do shell script cmd
    results in the following error:
    error "hdiutil: mount failed - not recognized" number 1
    I'm not very experienced regarding AppleScript or using hdiutil, could somebody point out what's wrong with my script?
    2. The second script I'm working on to try and essentially prevent the 'Could Not Find Server' Finder dialog when a network mount is unavailable. I guess what I'd like it to do is detect which network I'm connected to, and if I'm connected to the correct network, then mount the shares, otherwise just fail silently without any errors. From the searching I've done, using try statements should do this, but they do not, and I'm still presented with an error dialog after the server cannot be found.
    Does anybody have any suggestions on this script? Also, I've seen some tips regarding detecting which wireless network the Mac is connected to, which could work, but what about when connected via Ethernet?
    Thanks!

    Edit: I need to clarify on my first script request:
    I need to mount the DMG on the remote Mac, not on the Mac I'm running the script from.

  • AdminTools: how to get a list of reports which send to a specific email

    Hello,
    AdminTools is very usefull to get data about instances in the repository. when I ran
    SELECT si_Name, si_scheduleinfo.SI_DESTINATIONS,* FROM CI_INFOOBJECTS WHERE SI_PROGID = 'CrystalEnterprise.Report'
    How to access si_scheduleinfo.SI_DESTINATIONS.1.SI_DEST_SCHEDULEOPTIONS.SI_MAIL_ADDRESSES.1?
    Please help. Thanks.

    Hi Leo,
    Please refer to below link
    http://www.tek-tips.com/viewthread.cfm?qid=1535142
    http://forumtopics.org/busobj/viewtopic.php?p=733608&sid=79423c76c28d6c08492378a3383f985d
    Regards,
    Sravanthi

  • Can i use java scripts in d2k forms and reports

    Good day all,
    Can i use the above said, if yes any assistance or eg.
    thanks in advance.

    Hi,
    The appropriate Forum for this question would be
    Forms
    (Forums Home » Oracle Technology Network (OTN) » Products » Developer Suite » Forms)
    Thanks
    Vineet

Maybe you are looking for

  • OCI DRIVER error. Please help me!!!

    Hi there, I am trying to connect to oracle 9.0.1 database that is on server, not on my system. I am using JDBC for conncetion. I want to use OCI driver but it gives me "java.lang.UnsatisfiedLinkError: no ocijdbc8 in java.library.path" I have jdbc dri

  • SCCM 2012 - Automatic User Device affinity - Not Working

    Hi, I need to enable the Automatic User Device affinity. Have enabled following two group policy settings: Audit account logon events Audit logon events In client settings User and Device Affinity following is enabled: User device affinity threshold

  • [BEGINNER] Checking for username and password in OID

    Hi all ! I have the requirement to move USER/PASSWORD credentials from DB into OID. I have created the Organization structure and users now I need to validate user/password. I'd like to authenticate programmatically with JNDI Java Api so that the cod

  • ISE : Machine/user ActiveDirectory group retrieving

    Hello, We are migrating our ACS 5.1 to ISE 1.0.4. - On ACS we were doing 802.1x Authentification over an Activedirectory, assigning Vlan according to computer/user group. In some case the user vlan could be different from the computer vlan (ex admin

  • PDF Comparison in batch

    Can a bunch of PDF be compared against another set in batch mode? Is there any plug in supporting this option available in Adobe?