Когда-то давно написал, отправляет все файлы из папки на сервере на указаный емайл. have fun.
REPORT ZSENDMAIL.
* defining some constants
DATA: attach_name(99) TYPE c VALUE 'default.csv',
attach_type(99) TYPE c VALUE 'txt',
email_subject(512) TYPE c VALUE 'R/3 Email: attached files',
email_body(1024) TYPE c VALUE
'This email have some attached files.',
file_list LIKE RSFILLST OCCURS 0 WITH HEADER LINE,
filecount TYPE i,
pattern LIKE RSMRGSTR-NAME VALUE '*.*'.
PARAMETERS: sendfile(40) TYPE c
DEFAULT '//serv/pub/some/' LOWER CASE,
email(99) TYPE c default
'nobody@nowhere.com'.
CALL FUNCTION 'SUBST_GET_FILE_LIST'
EXPORTING
DIRNAME = sendfile
FILENM = '*'
PATTERN = pattern
TABLES
FILE_LIST = file_list
EXCEPTIONS
ACCESS_ERROR = 1.
IF sy-subrc IS INITIAL.
DESCRIBE TABLE file_list LINES filecount.
IF filecount NE 0.
PERFORM sendfilesto
TABLES
file_list
CHANGING
filecount
sendfile
email
email_subject
email_body.
ELSE.
write: / sendfile, ': не найдено ни одного файла!'.
ENDIF.
ENDIF.
*********************************************************************
FORM sendfilesto
TABLES
files structure RSFILLST
CHANGING
filescount TYPE i
path LIKE sendfile
email LIKE email
email_subject LIKE email_subject
email_body LIKE email_body.
* define worker variables
DATA: objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
objhead LIKE solisti1 OCCURS 0 WITH HEADER LINE,
objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
DATA: doc_chng LIKE sodocchgi1,
v_tab_lines1 LIKE sy-tabix ,
v_tab_lines LIKE sy-tabix .
DATA : v_up TYPE i,
v_nup TYPE i.
* Subject
doc_chng-obj_descr = email_subject.
objtxt = email_body.
* Appending the body of the Mail
APPEND objtxt.
DESCRIBE TABLE objtxt LINES v_tab_lines.
READ TABLE objtxt INDEX v_tab_lines.
doc_chng-doc_size = ( v_tab_lines - 1 ) * 255 + STRLEN( objtxt ).
DESCRIBE TABLE files LINES filescount.
DATA: sfile TYPE string,
scopyfile TYPE string.
** Creation of the entry for the Mail Contents
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = v_tab_lines.
objpack-doc_type = 'RAW'.
APPEND objpack.
DATA shift TYPE i VALUE 1.
CLEAR objbin.
LOOP AT files.
if files-name = '.' OR files-name = '..'.
continue.
endif.
* clear some stuffs
CLEAR objpack.
CLEAR objhead.
CLEAR v_tab_lines.
CLEAR objbin.
* check if we can open file
CONCATENATE path files-name INTO sfile.
OPEN DATASET sfile FOR INPUT IN BINARY MODE.
if sy-subrc <> 0.
continue.
endif.
* Getting File Name and attach type
SPLIT files-name AT '.' INTO doc_chng-obj_name attach_type.
* opening attach files
* reading file from disk to objbin and forming attach body.
DATA s TYPE string.
READ DATASET sfile INTO s.
* now save copy of file to the /arc folder
CONCATENATE path 'arc/' files-name INTO scopyfile.
OPEN DATASET scopyfile FOR OUTPUT IN BINARY MODE.
IF sy-subrc = 0.
TRANSFER s TO scopyfile.
CLOSE DATASET scopyfile.
ENDIF.
* copy file content to the objbin table
DATA doc_size TYPE i.
doc_size = strlen( s ).
do.
objbin = s.
append objbin.
v_tab_lines = v_tab_lines + 1.
SHIFT s BY 255 PLACES.
if strlen( s ) < 255.
objbin = s.
append objbin.
v_tab_lines = v_tab_lines + 1.
exit.
endif.
enddo.
* closing file
CLOSE DATASET sfile.
* delete the faile that has been sent
DELETE DATASET sfile.
objhead = files-name. " Attachment Name
APPEND objhead.
* Creation of the entry for the attachment
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = shift.
objpack-body_num = v_tab_lines.
objpack-doc_type = attach_type.
objpack-obj_name = files-name. "attach_name.
objpack-obj_descr = files-name.
objpack-doc_size = doc_size.
APPEND objpack.
shift = shift + v_tab_lines.
ENDLOOP.
* Completing the recipient list
reclist-receiver = email.
reclist-rec_type = 'U'.
reclist-com_type = 'INT'.
APPEND reclist.
* Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_chng
put_in_outbox = 'X'
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.
IF sy-subrc <> 0.
write 'Ошибка при отправке сообщения!'.
ELSE.
write 'Сообщение успешно поставлено в очередь на отправку!'.
ENDIF.
commit work.
ENDFORM.