"打印参数
DATA: lv_form TYPE tdsfname VALUE 'ZMM_SF_POPRINT',
lv_fmname TYPE rs38l_fnam,
ls_ctrlop TYPE ssfctrlop,
ls_compop TYPE ssfcompop,
ls_jobinfo TYPE ssfcrescl,
ls_info TYPE ssfcrescl,
ls_options TYPE ssfcresop.
* lt_output TYPE TABLE OF zfis006.
"附件参数
DATA: lt_otf TYPE TABLE OF itcoo,
lt_tline TYPE TABLE OF tline,
lt_record TYPE TABLE OF solisti1,
ls_otf TYPE itcoo,
ls_tline TYPE tline,
ls_record TYPE solisti1.
"邮件参数
DATA: lv_size TYPE i, "邮件附件大小
lv_lines_txt TYPE i, "邮件文本行数
lv_lines_bin TYPE i, "邮件附件行数
lv_benfile TYPE xstring,
lv_object TYPE char50, "邮件主题
lv_pdfname TYPE char50,
lt_objpack TYPE TABLE OF sopcklsti1 , "邮件内容 正文+附件
lt_objtxt TYPE TABLE OF solisti1 , "正文内容
lt_objbin TYPE TABLE OF solisti1 , "附件内容
lt_reclist TYPE TABLE OF somlreci1 , "收件人
ls_doc_chng TYPE sodocchgi1, "邮件属性
ls_objpack TYPE sopcklsti1,
ls_objtxt TYPE solisti1,
ls_objbin TYPE solisti1,
ls_reclist TYPE somlreci1.
*&---打印Smartform
"打印控制
ls_ctrlop-getotf = 'X'.
ls_ctrlop-no_dialog = 'X'.
ls_compop-tddest = 'LP01'. "指定打印机
* ls_compop-tdnoprev = 'X'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = lv_form
IMPORTING
fm_name = lv_fmname.
CALL FUNCTION lv_fmname
EXPORTING
output_options = ls_compop
control_parameters = ls_ctrlop
user_settings = ' '
gs_data = ls_form_header
IMPORTING
job_output_info = ls_jobinfo
TABLES
gt_data = lt_form_item.
*&---转pdf
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
pdf_username = 'TIANCZ'
IMPORTING
bin_filesize = lv_size
bin_file = lv_benfile
TABLES
otf = ls_jobinfo-otfdata[]
lines = lt_tline.
IF lv_benfile IS NOT INITIAL.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_benfile
IMPORTING
output_length = lv_size
TABLES
binary_tab = lt_record.
ENDIF.
REFRESH:lt_reclist,lt_objtxt,lt_objbin,lt_objpack.
CLEAR: ls_doc_chng.
"将转换后的文件添加到邮件附件
APPEND LINES OF lt_record TO lt_objbin.
* &---邮件处理
" 获取收件人
SELECT SINGLE
adsmtp
FROM zmmt016
WHERE
bname = @ls_form_header-ernam
INTO @DATA(lv_receiver).
"添加邮件正文
ls_objtxt = TEXT-m22. " 采购订单审批通过,请查收附件
APPEND ls_objtxt TO lt_objtxt.
"邮件正文行数
lv_lines_txt = lines( lt_objtxt ).
lv_object = is_input-ebeln && TEXT-m21. " 采购订单审批通过
lv_pdfname = 'xxx.pdf'. " 附件PDF命名
ls_doc_chng-obj_langu = sy-langu.
ls_doc_chng-obj_name = TEXT-t05. " Email
* ls_doc_chng-expiry_dat = sy-datum + 10. " 邮件过期日,在此日期后邮件将无法被查看
ls_doc_chng-obj_descr = lv_object. "邮件标题
* ls_doc_chng-sensitivty = 'F'. " 邮件保密等级
ls_doc_chng-doc_size = lv_lines_txt * 255 + lv_size.
ls_doc_chng-priority = '3'. " 1:低优先级 3:普通优先级 5:高优先级
CLEAR ls_objpack-transf_bin.
ls_objpack-head_start = 1.
ls_objpack-head_num = 0.
ls_objpack-body_start = 1.
ls_objpack-body_num = lv_lines_txt.
ls_objpack-doc_type = 'RAW'.
APPEND ls_objpack TO lt_objpack.
CLEAR:lv_lines_bin.
ls_objpack-transf_bin = 'X'.
ls_objpack-head_start = 1.
ls_objpack-head_num = 1.
ls_objpack-body_start = 1.
lv_lines_bin = lines( lt_record ).
ls_objpack-doc_size = lv_size .
ls_objpack-body_num = lv_lines_bin.
ls_objpack-doc_type = 'PDF'.
ls_objpack-obj_name = 'PO'.
ls_objpack-obj_descr = lv_pdfname.
APPEND ls_objpack TO lt_objpack.
ls_reclist-receiver = lv_receiver."收件人邮箱
ls_reclist-rec_type = 'U'.
APPEND ls_reclist TO lt_reclist.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = ls_doc_chng " 邮件属性
put_in_outbox = ''
commit_work = 'X'
TABLES
packing_list = lt_objpack " 邮件内容
contents_bin = lt_objbin " 附件内容(二进制)
contents_txt = lt_objtxt " 邮件内容(直接填入)
receivers = lt_reclist " 收件箱地址
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc = 0.
es_return-type = 'S'.
es_return-message = es_return-message && TEXT-m19. " 邮件发送成功
WAIT UP TO 1 SECONDS.
" 立即发送邮件
SUBMIT rsconn01 "#EC CI_SUBMIT
WITH mode = 'INT' WITH output = '' AND RETURN. ".
ELSE.
es_return-type = 'S'.
es_return-message = es_return-message && TEXT-m20. " 邮件发送失败
ENDIF.
ABAP SmartForm转PDF并发送邮件
最新推荐文章于 2023-08-15 10:04:47 发布