h101com 发表于 2015-9-17 13:20:04

利用SAP Offcie组件实现邮件发送功能

  SAP做为自成一体的系统,其开发环境有着丰富的资源,其中就包括发送邮件的SAP Office组件。通过SAP组件,可以实现向Internet发送邮件。 通过 CALL FUNCTION 'SO_OBJECT_SEND' ,就可以实现邮件的发送,下面的代码片断,就举例说明了参数的作用。
      必须说明的是,下面的代码,只是在发送的邮件中提供一个文本类型的附件。大家在使用SAP的Office发送邮件的时候,可以带上上传的文件做为邮件附件,还可以使用ALV的内容做为附件(在标准ALV,工具上有发送邮件)。这些理论上都是可行的,只是小弟还不知道http://www.cnblogs.com/seewood/admin/undefinedhttp://www.cnblogs.com/seewood/admin/undefinedhttp://www.cnblogs.com/seewood/admin/undefined,所以这里只是抛个砖,有玉的请尽管砸过来~~~~~
  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'       " RAWSAP编辑程序文件
      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.
页: [1]
查看完整版本: 利用SAP Offcie组件实现邮件发送功能