cancel
Showing results for 
Search instead for 
Did you mean: 

Mail body as attachment in email

Former Member
0 Kudos

Hi,

whenever we are sending mails through the FM SO_DOCUMENT_SEND_API1 the text in the body is going as text attachment in the mail. This problem is occuring when the mail is viewed in outlook , in the business workplace the mail is looking good (body as body only).

Please let me know if anyone has encountered this problem and has the solution?

Thanks,

Rajinikanth G

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Solved.

Thanks,

Rajinikanth G

Former Member
0 Kudos

Hi,


report  zpuchaseorder_details_smartfrm.
 
data: i_otf type itcoo occurs 0 with header line,
      i_tline type table of tline with header line,
      i_receivers type table of somlreci1 with header line,
      i_record like solisti1 occurs 0 with header line,
      i_objpack like sopcklsti1 occurs 0 with header line,
      i_objtxt like solisti1 occurs 0 with header line,
      i_objbin like solisti1 occurs 0 with header line,
      i_reclist like somlreci1 occurs 0 with header line,
      wa_objhead type soli_tab,
      w_ctrlop type ssfctrlop,
      w_compop type ssfcompop,
      w_return type ssfcrescl,
      wa_doc_chng type sodocchgi1,
      w_data type sodocchgi1,
      wa_buffer type string, "To convert from 132 to 255
      v_form_name type rs38l_fnam,
      v_len_in like sood-objlen,
      v_len_out like sood-objlen,
      v_len_outn type i,
      v_lines_txt type i,
      v_lines_bin type i.
 
call function 'SSF_FUNCTION_MODULE_NAME'
  exporting
    formname = 'ZPUCHASEORDER_DETAILS_SMARTFRM'
  importing
    fm_name = v_form_name
  exceptions
    no_form = 1
    no_function_module = 2
    others = 3.
  if sy-subrc  0.
    message id sy-msgid type sy-msgty number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
 
w_ctrlop-getotf    = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev  = 'X'.
 
call function v_form_name
  exporting
    control_parameters = w_ctrlop
    output_options = w_compop
    user_settings = 'X'
  importing
    job_output_info = w_return
  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.
 
i_otf[] = w_return-otfdata[].
 
call function 'CONVERT_OTF'
  exporting
    format = 'PDF'
    max_linewidth = 132
  importing
    bin_filesize = v_len_in
  tables
    otf = i_otf
    lines = i_tline
  exceptions
    err_max_linewidth = 1
    err_format = 2
    err_conv_not_possible = 3
    others = 4.
  if sy-subrc  0.
  endif.
 
loop at i_tline.
  translate i_tline using '~'.
  concatenate wa_buffer i_tline into wa_buffer.
endloop.
 
translate wa_buffer using '~'.
 
do.
  i_record = wa_buffer.
  append i_record.
  shift wa_buffer left by 255 places.
  if wa_buffer is initial.
    exit.
  endif.
enddo.

refresh: i_reclist,
         i_objtxt,
         i_objbin,
         i_objpack.
clear wa_objhead.
 
i_objbin[] = i_record[].

i_objtxt = 'test with pdf-Attachment!'.
append i_objtxt.
describe table i_objtxt lines v_lines_txt.
read table i_objtxt index v_lines_txt.
wa_doc_chng-obj_name   = 'smartform'.
wa_doc_chng-expiry_dat = sy-datum + 10.
wa_doc_chng-obj_descr  = 'smartform'.
wa_doc_chng-sensitivty = 'F'.
wa_doc_chng-doc_size   = v_lines_txt * 255.

clear i_objpack-transf_bin.
 
i_objpack-head_start = 1.
i_objpack-head_num   = 0.
i_objpack-body_start = 1.
i_objpack-body_num   = v_lines_txt.
i_objpack-doc_type   = 'RAW'.
append i_objpack.

i_objpack-transf_bin = 'X'.
i_objpack-head_start = 1.
i_objpack-head_num = 0.
i_objpack-body_start = 1.
describe table i_objbin lines v_lines_bin.
read table i_objbin index v_lines_bin.
i_objpack-doc_size = v_lines_bin * 255 .
i_objpack-body_num = v_lines_bin.
i_objpack-doc_type = 'PDF'.
i_objpack-obj_name = 'smart'.
i_objpack-obj_descr = 'test'.
append i_objpack.
clear i_reclist.
i_reclist-receiver = 'email address'.
i_reclist-rec_type = 'U'.
append i_reclist.
 
call function 'SO_NEW_DOCUMENT_SEND_API1'
  exporting
    document_data = wa_doc_chng
    put_in_outbox = 'X'
    commit_work = 'X'
  tables
    packing_list = i_objpack
    object_header = wa_objhead
    contents_bin = i_objbin
    contents_txt = i_objtxt
    receivers = i_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:/ 'Error When Sending the File', sy-subrc.
  else.
    write:/ 'Mail sent'.
  endif.

Former Member
0 Kudos

Hi Rajnikanth,

If my understanding is correct..

please check the code in the below perform

perform send_file_as_email_attachment

tables it_message

it_attach

using p_email

'Example .xls documnet attachment'

'XLS'

'filename'

' '

' '

' '

changing gd_error

gd_reciever.

form send_file_as_email_attachment tables pit_message

pit_attach

using p_email

p_mtitle

p_format

p_filename

p_attdescription

p_sender_address

p_sender_addres_type

changing p_error

p_reciever.

data: ld_error type sy-subrc,

ld_reciever type sy-subrc,

ld_mtitle like sodocchgi1-obj_descr,

ld_email like somlreci1-receiver,

ld_format type so_obj_tp ,

ld_attdescription type so_obj_nam ,

ld_attfilename type so_obj_des ,

ld_sender_address like soextreci1-receiver,

ld_sender_address_type like soextreci1-adr_typ,

ld_receiver like sy-subrc.

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[] = pit_attach[].

  • Describe the body of the message

clear t_packing_list.

refresh t_packing_list.

t_packing_list-transf_bin = space.

t_packing_list-head_start = 1.

t_packing_list-head_num = 0.

t_packing_list-body_start = 1.

describe table it_message lines t_packing_list-body_num.

t_packing_list-doc_type = 'RAW'.

append t_packing_list.

  • Create attachment notification

t_packing_list-transf_bin = 'X'.

t_packing_list-head_start = 1.

t_packing_list-head_num = 1.

t_packing_list-body_start = 1.

describe table t_attachment lines t_packing_list-body_num.

t_packing_list-doc_type = ld_format.

t_packing_list-obj_descr = ld_attdescription.

t_packing_list-obj_name = ld_attfilename.

t_packing_list-doc_size = t_packing_list-body_num * 255.

append t_packing_list.

  • Add the recipients email address

clear t_receivers.

refresh t_receivers.

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,

gowri

Former Member
0 Kudos

hi rajnikanth,

please check the code in the below perform

perform send_file_as_email_attachment

tables it_message

it_attach

using p_email

'Example .xls documnet attachment'

'XLS'

'filename'

' '

' '

' '

changing gd_error

gd_reciever.

form send_file_as_email_attachment tables pit_message

pit_attach

using p_email

p_mtitle

p_format

p_filename

p_attdescription

p_sender_address

p_sender_addres_type

changing p_error

p_reciever.

data: ld_error type sy-subrc,

ld_reciever type sy-subrc,

ld_mtitle like sodocchgi1-obj_descr,

ld_email like somlreci1-receiver,

ld_format type so_obj_tp ,

ld_attdescription type so_obj_nam ,

ld_attfilename type so_obj_des ,

ld_sender_address like soextreci1-receiver,

ld_sender_address_type like soextreci1-adr_typ,

ld_receiver like sy-subrc.

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[] = pit_attach[].

  • Describe the body of the message

clear t_packing_list.

refresh t_packing_list.

t_packing_list-transf_bin = space.

t_packing_list-head_start = 1.

t_packing_list-head_num = 0.

t_packing_list-body_start = 1.

describe table it_message lines t_packing_list-body_num.

t_packing_list-doc_type = 'RAW'.

append t_packing_list.

  • Create attachment notification

t_packing_list-transf_bin = 'X'.

t_packing_list-head_start = 1.

t_packing_list-head_num = 1.

t_packing_list-body_start = 1.

describe table t_attachment lines t_packing_list-body_num.

t_packing_list-doc_type = ld_format.

t_packing_list-obj_descr = ld_attdescription.

t_packing_list-obj_name = ld_attfilename.

t_packing_list-doc_size = t_packing_list-body_num * 255.

append t_packing_list.

  • Add the recipients email address

clear t_receivers.

refresh t_receivers.

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

gowri