07-22-2009 11:52 AM
Hi all,
I have a little bit a problem with sending TXT file as attachment. If there is row length > 128 then file isn't appeared in notepad correctly. Where I do any misteakes. See on my test code please. Thanks.
REPORT test.
PARAMETERS: p_email(45) LOWER CASE.
START-OF-SELECTION.
PERFORM send_list.
FORM send_list.
DATA: it_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
it_attachment_xls LIKE solisti1 OCCURS 0 WITH HEADER LINE,
it_attachment_txt LIKE solisti1 OCCURS 0 WITH HEADER LINE.
CLASS cl_abap_char_utilities DEFINITION LOAD.
DATA:
con_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
con_cret(2) TYPE c VALUE cl_abap_char_utilities=>cr_lf.
REFRESH: it_attachment,it_attachment_txt.
REFRESH: it_attachment_xls.
DATA: BEGIN OF st,
f1(2) TYPE n,
f2(20) TYPE c,
f3(20) TYPE c,
f4(20) TYPE c,
f5(20) TYPE c,
f6(20) TYPE c,
f7(20) TYPE c,
END OF st.
DATA: itab1 LIKE TABLE OF st WITH HEADER LINE,
itab2 LIKE TABLE OF st WITH HEADER LINE.
DO 3 TIMES.
CLEAR itab1.
itab1-f1 = sy-index.
itab1-f2 = 'AAAAAAAAAAAAAAAAAAAAAA'.
itab1-f3 = 'BBBBBBBBBBBBBBBBBBBBBB'.
itab1-f4 = 'CCCCCCCCCCCCCCCCCCCCCC'.
itab1-f5 = 'DDDDDDDDDDDDDDDDDDDDDD'.
itab1-f6 = 'EEEEEEEEEEEEEEEEEEEEEE'.
itab1-f7 = 'FFFFFFFFFFFFFFFFFFFFFF'.
APPEND itab1.
ENDDO.
DO 5 TIMES.
CLEAR itab2.
itab2-f1 = sy-index.
itab2-f2 = 'UUUUUUUUUUUUUUUUUUUUUU'.
itab2-f3 = 'VVVVVVVVVVVVVVVVVVVVVV'.
itab2-f4 = 'WWWWWWWWWWWWWWWWWWWWWW'.
itab2-f5 = 'XXXXXXXXXXXXXXXXXXXXXX'.
itab2-f6 = 'YYYYYYYYYYYYYYYYYYYYYY'.
itab2-f7 = 'ZZZZZZZZZZZZZZZZZZZZZZ'.
APPEND itab2.
ENDDO.
Thanks for help.
Edited by: Martin Filipczyk on Jul 22, 2009 1:45 PM
07-22-2009 1:09 PM
LOOP AT itab1.
CONCATENATE itab1-f1 itab1-f2 itab1-f3 itab1-f4 itab1-f5 itab1-f6 itab1-f7
INTO it_attachment_xls SEPARATED BY con_tab.
CONCATENATE it_attachment_xls con_cret INTO it_attachment_xls.
APPEND it_attachment_xls.
ENDLOOP.
con_tab = ';'.
con_cret = ''.
LOOP AT itab2.
CONCATENATE itab2-f1 itab2-f2 itab2-f3 itab2-f4 itab2-f5 itab2-f6 itab2-f7
INTO it_attachment_txt SEPARATED BY con_tab.
APPEND it_attachment_txt.
ENDLOOP.
LOOP AT it_attachment_xls.
APPEND it_attachment_xls TO it_attachment.
ENDLOOP.
LOOP AT it_attachment_txt.
APPEND it_attachment_txt TO it_attachment.
ENDLOOP.
PERFORM send_file_as_email_attachment TABLES it_attachment
it_attachment_xls
it_attachment_txt USING p_email.
if not it_attachment[] is initial.
PERFORM initiate_mail_execute_program.
ENDIF.
ENDFORM.
FORM send_file_as_email_attachment TABLES it_attachment
it_attachment_xls
it_attachment_txt USING f_email.
DATA: it_message TYPE solisti1 OCCURS 0 WITH HEADER LINE,
it_packing_list TYPE sopcklsti1 OCCURS 0 WITH HEADER LINE,
it_contents TYPE solisti1 OCCURS 0 WITH HEADER LINE,
it_receivers TYPE somlreci1 OCCURS 0 WITH HEADER LINE,
it_object_header TYPE solisti1 OCCURS 0 WITH HEADER LINE,
it_objhead TYPE solisti1 OCCURS 1 WITH HEADER LINE.
DATA: tab_lines TYPE i,
tab_lines_xls TYPE i,
tab_lines_txt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data TYPE sodocchgi1,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
07-22-2009 1:11 PM
it_message = 'Test description'.
APPEND it_message.
DESCRIBE TABLE it_attachment LINES tab_lines.
CLEAR w_doc_data.
READ TABLE it_attachment INDEX tab_lines.
w_doc_data-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( it_attachment ).
* Jostain syystä vanhenemispäivä ei toimi...
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'EMAIL'. "name of object
w_doc_data-obj_descr = 'test'. "short text
w_doc_data-sensitivty = 'F'.
w_doc_data-expiry_dat = sy-datum + 30. "expiration date
w_doc_data-obj_expdat = sy-datum + 30.
DESCRIBE TABLE it_message LINES tab_lines.
CLEAR: it_packing_list.
it_packing_list-head_start = 1.
it_packing_list-head_num = 0.
it_packing_list-body_start = 1.
it_packing_list-body_num = tab_lines.
it_packing_list-doc_type = 'RAW'.
APPEND it_packing_list.
*Attachment 1
CLEAR: it_packing_list.
DESCRIBE TABLE it_attachment_xls LINES tab_lines_xls.
it_packing_list-doc_size = tab_lines_xls * 255.
it_packing_list-transf_bin = 'X'.
it_packing_list-head_start = 1.
it_packing_list-head_num = 1.
it_packing_list-body_start = 1.
it_packing_list-body_num = tab_lines_xls.
it_packing_list-doc_type = 'XLS'.
it_packing_list-obj_descr = 'List.xls'.
APPEND it_packing_list.
*Attachment 2
DESCRIBE TABLE it_attachment_txt LINES tab_lines_txt.
it_packing_list-doc_size = tab_lines_txt * 255.
it_packing_list-transf_bin = 'X'.
it_packing_list-head_start = 1.
it_packing_list-head_num = 1.
it_packing_list-body_start = tab_lines_xls + 1. " + 1 = header xls
it_packing_list-body_num = tab_lines_txt.
it_packing_list-doc_type = 'RAW'.
it_packing_list-obj_descr = 'List.txt'.
APPEND it_packing_list.
* Add the recipients email address
CLEAR it_receivers.
REFRESH it_receivers.
it_receivers-receiver = f_email.
it_receivers-rec_type = 'U'. "Internet
APPEND it_receivers.
07-22-2009 1:12 PM
*Send the e-mail
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = it_packing_list
contents_bin = it_attachment
contents_txt = it_message
receivers = it_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.
ENDFORM.
FORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = ' '
AND RETURN.
ENDFORM.
07-23-2009 9:30 AM