SMTP配置及ABAP实现
SAP 系统配置项
配置参数文件
参考: note-455140
a).SMICM查询SMTP配置的端口,没有的话自己整一个
b).RZ10新增两个参数
icm/server_port_<*> = PROT=SMTP,PORT=<port>;
is/SMTP/virt_host_<*> = <host>:<port>,<port>,...;
激活SAPconnect
a).SU01建一个账号,推荐建系统账号,不是也没关系
两个页签: 邮件地址、参数文件
b).SICF激活SAPconnect服务
参数编号填上图配的,我的是is/SMTP/virt_host_0所以填0
填入a中创建的用户
逻辑处理类CL_SMTP_EXT_SAPCONNECT
配置连接参数
以飞书举例
获取邮箱的SMTP码
邮箱–>设置–>第三方邮箱客户端登录–>生成;即可获得码
配置SMTP连接
a).SCOT按向导开整
b).设置作业,定期从队列中获取电子邮件并通过 Internet 发送
邮件发送测试
a).SBWP发送邮件
b).SOST发送
以上,SAP与飞书邮箱打通。接下来就是使用ABAP代码发送了
ABAP实现邮件发送
主要使用CL_BCS、CL_DOCUMENG_BCS两个类实现。由于自己还没完成,所以在此简述过程
//设置为立即发送
cl_bcs->set_send_immediately( abap_true ).
//设置发送方
cl_bcs->set_sender( cl_cam_address_bcs=>create_internet_address( address ) ).
//设置接收方(i_Copy = '')/抄送方(i_Copy = 'X')
cl_bcs->add_recipient( i_recipient = cl_cam_address_bcs=>create_internet_address( address )
i_copy = copy
i_express = abap_true ).
//为邮件内容实例文档类
cl_document_bcs = cl_document_bcs=>create_document(
i_type = i_type //文档类型
i_subject = i_subject //标题
i_length = i_length //长度
i_language = i_language
i_importance = i_importance
i_sensitivity = i_sensitivity
i_text = i_text // 内容
i_hex = i_hex
i_header = i_header
i_sender = i_sender
iv_vsi_profile = iv_vsi_profile ).
//增加附件
cl_document_bcs->add_attachment( EXPORTING i_attachment_type = ls_attachment-type //数据类型
i_attachment_subject = ls_attachment-subject //附件名称
i_attachment_size = ls_attachment-size //附件大小
i_att_content_hex = ls_attachment-attachment //二进制数据流).
//为连接引擎加载内容文档
cl_bcs->set_document( zcl_document_bcs ).
//发送
IF zcl_bcs->send( i_with_error_screen = 'X' ).
ex_uuid = zcl_bcs->oid( ).
//表SOOS SOES SOST
COMMIT WORK AND WAIT.
ENDIF.
DEMO
DATA:BEGIN OF ls_bkpf,
bukrs TYPE bukrs,
belnr TYPE belnr_d,
gjahr TYPE gjahr,
blart TYPE blart,
budat TYPE budat,
xblnr TYPE xblnr,
bktxt TYPE bktxt.
DATA END OF ls_bkpf.
DATA lt_bkpf LIKE TABLE OF ls_bkpf.
DATA:lv_tdobject TYPE tdobjectgr VALUE 'GRAPHICS',
lv_tdname TYPE tdobname VALUE 'ZSLOGAN',
lv_tdid TYPE tdidgr VALUE 'BMAP',
lv_tdbtype TYPE tdbtype VALUE 'BMON', "'BCOL',
lv_graphic_xstr TYPE xstring.
DATA:cl_adapter_mails TYPE REF TO zcl_adapter_mails,
lt_text TYPE soli_tab,
lt_address TYPE zcl_adapter_mails=>tty_address,
ls_attachment TYPE zcl_adapter_mails=>ty_attachment,
lt_attachment TYPE zcl_adapter_mails=>tty_attachment.
SELECT * FROM bkpf INTO CORRESPONDING FIELDS OF TABLE lt_bkpf
WHERE gjahr = '2024' AND monat = '04' AND blart = 'RV'.
cl_adapter_mails = NEW #( ).
APPEND '详情见附件' TO lt_text.
APPEND VALUE #( type = 'SENDER' address = 'xxxx@xxxx.com' ) TO lt_address.
APPEND VALUE #( type = 'RECEIVER' address = 'xxxx@xxxx.com' ) TO lt_address.
APPEND VALUE #( type = 'RECEIVER' address = 'xxxx@xxxx.com' ) TO lt_address.
APPEND VALUE #( type = 'CCOPY' address = 'xxxx@xxxx.com' ) TO lt_address.
cl_adapter_mails->set_address( lt_address ).
cl_adapter_mails->create_document( EXPORTING
i_type = 'RAW'
i_subject = '请协助分析销售收入凭证异常原因'
i_text = lt_text ).
CLEAR ls_attachment.
ls_attachment-type = 'BIN'.
ls_attachment-subject = '异常凭证明细.xlsx'.
cl_adapter_mails->data_to_xstring( EXPORTING data = lt_bkpf
IMPORTING ex_size = ls_attachment-size
et_solix_tab = ls_attachment-attachment ).
APPEND ls_attachment TO lt_attachment.
CLEAR ls_attachment.
ls_attachment-type = 'BIN'.
ls_attachment-subject = 'slogan.png'.
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object = lv_tdobject
p_name = lv_tdname
p_id = lv_tdid
p_btype = lv_tdbtype
RECEIVING
p_bmp = lv_graphic_xstr
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
cl_adapter_mails->xstring_to_solix( EXPORTING iv_xstring = lv_graphic_xstr
IMPORTING ex_size = ls_attachment-size
et_solix = ls_attachment-attachment ).
APPEND ls_attachment TO lt_attachment.
cl_adapter_mails->add_attachment( lt_attachment ).
cl_adapter_mails->send( ).
zcl_adapter_mails
CLASS zcl_adapter_mails DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES:
BEGIN OF ty_address,
type TYPE char10,
address TYPE ad_smtpadr.
TYPES END OF ty_address .
TYPES:
tty_address TYPE TABLE OF ty_address .
TYPES:
BEGIN OF ty_attachment,
type TYPE so_obj_tp,
subject TYPE so_obj_des,
size TYPE so_obj_len,
attachment TYPE solix_tab.
TYPES END OF ty_attachment .
TYPES:
tty_attachment TYPE TABLE OF ty_attachment .
METHODS constructor .
METHODS create_document
IMPORTING
VALUE(i_type) TYPE so_obj_tp
VALUE(i_subject) TYPE so_obj_des
VALUE(i_length)