现在的位置: 首页 > 综合 > 正文

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

2012年08月26日 ⁄ 综合 ⁄ 共 3473字 ⁄ 字号 评论关闭

       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.

抱歉!评论已关闭.