转自 http://blog.chinaunix.net/uid-20591812-id-1918813.html

程序实例

*&---------------------------------------------------------------------*
*& Report  Z14841_TEST010
*&---------------------------------------------------------------------*
REPORT  z14841_test010.
TYPES: BEGIN OF stru_master,
	kunnr  TYPE kunnr, " 客户编号 1"
	bukrs  TYPE bukrs, " 公司代码"
	pro_mill  TYPE werks_d,  " 工厂"
*quota     TYPE zcdfquota,  " 额度"
*account   TYPE char10,     " 帐期"
*zdays     TYPE zcdfdays,   " 天数"
*valid_beg TYPE zcdfdatum1, " 有效起始日期"
*valid_end TYPE zcdfdatum2, " 有效结束日期"
*docno     TYPE zcdfdocno,  " 授信申请编号"
*name1     TYPE name1_gp,   " 名称 1"
*assure_mode TYPE char10,   " 授信类别"
*quota1 TYPE zcdfquota,     " 额度"
*route  TYPE char1,         " 审批路径"
*uname  TYPE uname,         " 签准人"
*zlevel TYPE zcdflevel,     " 评级"
*zclass TYPE zcdfclass,     " 客户类型"
*zjye   TYPE dmbtr,         " 当月交易额"
*zqmye  TYPE dmbtr,         " 期末余额"
*zyqzk  TYPE dmbtr,         " 逾期金额"
END OF stru_master.
TYPES : tab_master TYPE TABLE OF stru_master.
DATA:lt_master TYPE	tab_master,
 	 wa_master TYPE stru_master.
*************************************************************
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 LINE,     " 邮件附件 "
      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.
DATA: gs_string 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 = ['coldfire@163.com'](mailto:'coldfire@163.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.
IF sy-subrc = 0.
  COMMIT WORK.
ENDIF.
*Instructs mail send program for SAPCONNECT to send email(rsconn01)
*PERFORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
                WITH output = 'X'
                AND RETURN.