SAP做为自成一体的系统,其开发环境有着丰富的资源,其中就包括发送邮件的SAP Office组件。通过SAP组件,可以实现向Internet发送邮件。 通过 CALL FUNCTION 'SO_OBJECT_SEND' ,就可以实现邮件的发送,下面的代码片断,就举例说明了参数的作用。
必须说明的是,下面的代码,只是在发送的邮件中提供一个文本类型的附件。大家在使用SAP的Office发送邮件的时候,可以带上上传的文件做为邮件附件,还可以使用ALV的内容做为附件(在标准ALV,工具上有发送邮件)。这些理论上都是可行的,只是小弟还不知道,所以这里只是抛个砖,有玉的请尽管砸过来~~~~~
data: object_hd_change LIKE sood1 OCCURS 10 WITH HEADER LINE, " 邮件正文的头信息
receivers LIKE soos1 OCCURS 10 WITH HEADER LINE,
packing_list LIKE soxpl OCCURS 10 WITH HEADER LINE, " 邮件附件的头信息
objcont LIKE soli OCCURS 10 WITH HEADER LINE, " 邮件正文
att_cont LIKE soli OCCURS 10 WITH HEADER LINobject_hd_changeE, " 邮件附件
att_head LIKE soli OCCURS 10 WITH HEADER LINE. " 头行
data : count TYPE i,length TYPE i.
data: lc_item1(24) type c.
data: lc_item2(24) type c.
data: lc_line_sub(29) type c.
data: lc_line_sub2(52) type c.
data: ls_data type string.
data: li_len type i.
data: ls_title type string.
refresh: objcont,receivers,packing_list,
objcont,att_cont,att_head.
CLEAR: ATT_CONT-LINE.
att_cont-line = '附件文本的标题'.
ls_title = att_cont-line.
append att_cont.
* 放入附件内表
CLEAR: ATT_CONT-LINE.
ATT_CONT-LINE = '附件文本内容.
append att_cont. "如果有行内容,可以append多次
move '邮件内容标题' to objcont-line.
APPEND objcont.
move 'file' to att_head-line.
append att_head.
DESCRIBE TABLE objcont LINES count.
DESCRIBE FIELD objcont-line LENGTH length IN BYTE MODE .
object_hd_change-objla = 'E'. "创建文档使用的语言
object_hd_change-objnam = 'LIST'. "文档,文件夹或分配清单的名称
object_hd_change-objdes = gs_string. "内容的简短描述CHAR50
object_hd_change-objsns = 'O'. "对象:灵敏度 P机密 F功能 O标准
object_hd_change-objlen = count * length. "文档内容的大小
append object_hd_change.
* 接收者
receivers-recextnam = 'seewood@gmail.com'.
receivers-recesc = 'U'. " 地址类型, U: 互联网地址
APPEND receivers. " 收件人地址
DESCRIBE TABLE att_cont LINES count. " 邮件附件总行数
DESCRIBE FIELD att_cont-line LENGTH length " 邮件每行的长度
IN BYTE MODE .
packing_list-head_start = '1'. "传输包中的对象表头开始行
packing_list-body_start = '1'. "对象包中的对象内容开始行
packing_list-head_num = '0'. "在对象包内的对象表头行号
packing_list-body_num = count * length. "在对象包内的对象内容行号
packing_list-objtp = 'RAW'. "文档类别代码
packing_list-OBJDES = gs_string.
packing_list-OBJNAM = gs_string.
* OBJDES OBJNAM
APPEND packing_list.
* 调用函数发送邮件
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
* New object: General header data
object_hd_change = object_hd_change
object_type = 'RAW' " RAW SAP编辑程序文件
SENDER = sy-uname " 发送者用户名
TABLES
objcont = objcont " Content
* Recipient table with send attributes
receivers = receivers " 接收人地址
packing_list = packing_list " 邮件内容
att_cont = att_cont " 附件
ATT_HEAD = att_head " 标题
EXCEPTIONS
active_user_not_exist = 1
communication_failure = 2
component_not_available = 3
folder_not_exist = 4
folder_no_authorization = 5
forwarder_not_exist = 6
note_not_exist = 7
object_not_exist = 8
object_not_sent = 9
object_no_authorization = 10
object_type_not_exist = 11
operation_no_authorization = 12
owner_not_exist = 13
parameter_error = 14
substitute_not_active = 15
substitute_not_defined = 16
system_failure = 17
too_much_receivers = 18
user_not_exist = 19
originator_not_exist = 20
x_error = 21
OTHERS = 22.
PR_SUBRC = SY-SUBRC.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.