2007 Jul 03 1:34 PM
Hi
I was trying to send mail using fm SO_DOCUMENT_SEND_API1 but why problem is the internal table that needs to be passed has (contets bin ) has only 255 chars ...
but my data sets are huge and i need to send all of them in mail..so the remaining data is not getting reflected in the excel file....
whats the way out?
CONTENTS_BIN STRUCTURE SOLISTI1 OPTIONAL
Points for sure
Regards
Gunjan
Hi
I was trying to send mail using fm SO_DOCUMENT_SEND_API1 but why problem is the internal table that needs to be passed has (contets bin ) has only 255 chars ...
but my data sets are huge and i need to send all of them in mail..so the remaining data is not getting reflected in the excel file....
whats the way out?
CONTENTS_BIN STRUCTURE SOLISTI1 OPTIONAL
Points for sure
Regards
Gunjan
2007 Jul 03 1:38 PM
Hi,
&----
*& Report ZTESTMAIL *
*& *
&----
*& *
*& *
&----
REPORT ZTESTMAIL .
tables: bseg.
parameters: p_email type somlreci1-receiver default
data: it_message type standard table of solisti1 initial size 0
with header line.
data: it_attach type standard table of solisti1 initial size 0
with header line.
DATA: begin of int_bseg occurs 0,
zuonr like bseg-zuonr,
end of int_bseg.
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,
gd_error type sy-subrc,
gd_reciever type sy-subrc.
************************************************************************
*START_OF_SELECTION
start-of-selection.
Retrieve sample data from table ekpo
perform data_retrieval.
Populate table with detaisl to be entered into .xls file
*perform build_xls_data_table.
************************************************************************
*END-OF-SELECTION
end-of-selection.
Populate message body text
perform populate_email_message_body.
Send file by email as .xls speadsheet
perform send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Assignment Date after 2 days'
'XLS'
'filename'
' '
' '
' '
changing gd_error
gd_reciever.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
perform initiate_mail_execute_program.
&----
*& Form DATA_RETRIEVAL
&----
Retrieve data form EKPO table and populate itab it_ekko
----
form data_retrieval.
select zuonr from bseg into corresponding fields of int_bseg.
endselect.
DATA: begin of int_bseg1 occurs 0,
zuonr1 like bseg-zuonr,
end of int_bseg1.
loop at int_bseg.
int_bseg1-zuonr1 = int_bseg-zuonr.
endloop.
endform. " DATA_RETRIEVAL
&----
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
&----
Send email
----
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.
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
object_header = t_object_header
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.
&----
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
&----
Instructs mail send program for SAPCONNECT to send email.
----
form initiate_mail_execute_program.
wait up to 2 seconds.
if gd_error eq 0.
submit rsconn01 with mode = 'INT'
with output = 'X'
and return.
endif.
endform. " INITIATE_MAIL_EXECUTE_PROGRAM
&----
*& Form POPULATE_EMAIL_MESSAGE_BODY
&----
Populate message body text
----
form populate_email_message_body.
refresh it_message.
it_message = 'Assignment Date is coming After 2 Days Please check doc.'.
append it_message.
endform. " POPULATE_EMAIL_MESSAGE_BODY
Reward if helpfull
Regards,
Nandha
2007 Jul 03 1:43 PM
please read the post...
problem is char 255 length passed to the FM....how to pass big data?
as its getting chopped coz of length
Regards
Gunjan
2007 Jul 03 1:58 PM
You'll have to just keep dividing the whole content into bunches of 255 char and keep appending them in the internal table.
And yes you can put 'CR/LF' char at the end of the line which may end in 3 internal table lines. This way it will go thru also and appear correct since w/o CR/LF char it won't go to next line in the output.
Hope this helps
Regards
Nishant
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |