1、Smartform导出为PDF并且作为附加资料进行邮件发送Smartform导出为PDF并且作为附件进行邮件发送1、首先获取Smartform生成的功能函数,CALL FUNCTION SSF_FUNCTION_MODULE_NAME EXPORTING formname = c_formname IMPORTING fm_name = v_fm_name EXCEPTIONS no_form = 1 no_function_module = 2OTHERS = 3.2、调用该函数并且在参数中设定获取OTF数据st_control_parameters-no_dialog = X.st_con
2、trol_parameters-getotf = X.CALL FUNCTION v_fm_name EXPORTING control_parameters = st_control_parameters output_options = st_output_options IMPORTING document_output_info = st_document_output_info job_output_info = st_job_output_info job_output_options = st_job_output_options TABLES pt_data = gt_data
3、 EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4OTHERS = 5.3、将OTF数据转换成PDF文件CALL FUNCTION CONVERT_OTF EXPORTING format = PDF IMPORTING bin_filesize = v_bin_filesize bin_file = g_binfile TABLES otf = st_job_output_info-otfdata* doctab_archive = it_docs lines = it_li
4、nes EXCEPTIONS err_max_linewidth = 1 err_format = 2 err_conv_not_possible = 3 err_bad_otf = 4 OTHERS = 5.IF g_binfile IS NOT INITIAL. CALL FUNCTION SCMS_XSTRING_TO_BINARY EXPORTING buffer = g_binfile IMPORTING output_length = v_bin_filesize TABLES binary_tab = gt_record.ENDIF.4、处理邮件主题,附件,收件人,发件人(默认会
5、是登陆用户配置的邮箱)APPEND LINES OF GT_record TO i_objbin.*Mail Bodyi_objtxt-line = 邮件正文.APPEND i_objtxt.DESCRIBE TABLE i_objtxt LINES v_lines_txt.wa_doc-obj_langu = SY-LANGU.wa_doc-obj_name = smartform.wa_doc-expiry_dat = sy-datum + 10.wa_doc-obj_descr = 邮件标题题题题题题题题题.wa_doc-sensitivty = F.wa_doc-doc_size =
6、v_lines_txt * 255 + v_bin_filesize.* Main TextCLEAR i_objpack-transf_bin.i_objpack-head_start = 1.i_objpack-head_num = 0.i_objpack-body_start = 1.i_objpack-body_num = v_lines_txt.i_objpack-doc_type = RAW.APPEND i_objpack.* Attachment (pdf-Attachment)CLEAR v_lines_bin.i_objpack-transf_bin = X.i_objpa
7、ck-head_start = 1.i_objpack-head_num = 1.i_objpack-body_start = 1.DESCRIBE TABLE i_objbin LINES v_lines_bin.i_objpack-doc_size = v_bin_filesize .i_objpack-body_num = v_lines_bin.i_objpack-doc_type = PDF.i_objpack-obj_name = smart.i_objpack-obj_descr = PDF.”这里是附件名APPEND i_objpack.CLEAR i_reclist.i_re
8、clist-rec_type = U.i_reclist-receiver = xxx.“收件人地址APPEND i_reclist.5、调用发送邮件的函数CALL FUNCTION SO_NEW_DOCUMENT_ATT_SEND_API1 EXPORTING document_data = wa_doc put_in_outbox = commit_work = X TABLES packing_list = i_objpack* object_header = wa_objhead contents_bin = i_objbin contents_txt = i_objtxt recei
9、vers = i_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 = 7OTHERS = 8.邮件发送后可在sost中查看到、6、如果需要保存PDF到本地*.GET THE FILE NAME TO STORE.*CONCATENATE smrt .pdf INTO v_name.*CREATE OBJECT
10、 v_guiobj.*CALL METHOD v_guiobj-file_save_dialog* EXPORTING* default_extension = pdf* default_file_name = v_name* file_filter = v_filter* CHANGING* filename = v_name* path = v_path* fullpath = v_fullpath* user_action = v_uact.*IF v_uact = v_guiobj-action_cancel.* EXIT.*ENDIF.*.DOWNLOAD AS FILE.*MOVE
11、 v_fullpath TO v_filename.*CALL FUNCTION GUI_DOWNLOAD* EXPORTING* bin_filesize = v_bin_filesize* filename = v_filename* filetype = BIN* TABLES* data_tab = it_lines* EXCEPTIONS* file_write_error = 1* no_batch = 2* gui_refuse_filetransfer = 3* invalid_type = 4* no_authority = 5* unknown_error = 6* hea
12、der_not_allowed = 7* separator_not_allowed = 8* filesize_not_allowed = 9* header_too_long = 10* dp_error_create = 11* dp_error_send = 12* dp_error_write = 13* unknown_dp_error = 14* access_denied = 15* dp_out_of_memory = 16* disk_full = 17* dp_timeout = 18* file_not_found = 19* dataprovider_exceptio
13、n = 20* control_flush_error = 21* OTHERS = 22.完整代码请见下面:*&-*& Report ZTEST_MAIL3 *& *&-*& *& *&-*REPORT ztest_mail3 .TYPES:BEGIN OF ty_data.TYPES: matkl TYPE mara-matkl, wgbez TYPE t023t-wgbez, matnr TYPE mara-matnr, maktx TYPE makt-maktx, ebeln TYPE ekko-ebeln, ebelp TYPE ekpo-ebelp, ekgrp TYPE ekko
14、-ekgrp, bukrs TYPE ekko-bukrs, werks TYPE ekpo-werks, lifnr TYPE ekko-lifnr, netpr TYPE ekpo-netpr, normt TYPE mara-normt, groes TYPE mara-groes, kdatb TYPE ekko-kdatb, kdate TYPE ekko-kdate, jiaohuo(30), waibu(30),*增加物料基本单位,订单单位 meins(3), bstme(3),*BO C2014080601 增加车间和生产线 labor_t(30), spart_t(20),*
15、EO C2014080601 增加车间和生产线*BO C2014082101 增加物料长文本,规格型号,供应商描述,采购订单文* beizhu(100),* zeinr(22),* lifnr_d(35),* caigou(100),*EO C2014082101 增加车间和生产线END OF ty_data.DATA:gt_data TYPE TABLE OF ty_data WITH HEADER LINE.DATA:g_binfile TYPE xstring,gt_record TYPE TABLE OF solisti1 WITH HEADER LINE.* Internal tab
16、le declarationDATA: it_otf TYPE STANDARD TABLE OF itcoo, it_docs TYPE STANDARD TABLE OF docs, it_lines TYPE STANDARD TABLE OF tline WITH HEADER LINE.* Declaration of local variables.DATA: st_job_output_info TYPE ssfcrescl, st_document_output_info TYPE ssfcrespd, st_job_output_options TYPE ssfcresop,
17、 st_output_options TYPE ssfcompop, st_control_parameters TYPE ssfctrlop, v_len_in TYPE so_obj_len, v_language TYPE sflangu VALUE E, v_e_devtype TYPE rspoptype, v_bin_filesize TYPE i, v_name TYPE string, v_path TYPE string, v_fullpath TYPE string, v_filter TYPE string, v_uact TYPE i, v_guiobj TYPE RE
18、F TO cl_gui_frontend_services, v_filename TYPE string, v_fm_name TYPE rs38l_fnam.CONSTANTS c_formname TYPE tdsfname VALUE ZPVNP21_CN01.DATA wa_buffer TYPE string. To convert from 132 to 255DATA: i_record TYPE TABLE OF solisti1 WITH HEADER LINE, wa_doc TYPE sodocchgi1, i_reclist TYPE TABLE OF somlrec
19、i1 WITH HEADER LINE,* Objects to send mail. i_objpack TYPE TABLE OF sopcklsti1 WITH HEADER LINE, i_objtxt TYPE TABLE OF solisti1 WITH HEADER LINE, i_objbin TYPE TABLE OF solisti1 WITH HEADER LINE,* Work Area declarations wa_objhead TYPE soli_tab,* Variables declarations* v_len_in TYPE sood-objlen, v
20、_lines_txt TYPE i, v_lines_bin TYPE i.CALL FUNCTION SSF_GET_DEVICE_TYPE EXPORTING i_language = v_language i_application = SAPDEFAULT IMPORTING e_devtype = v_e_devtype.st_output_options-tdprinter = v_e_devtype.st_control_parameters-no_dialog = X.st_control_parameters-getotf = X.*.GET SMARTFORM FUNCTI
21、ON MODULE NAME.*CALL FUNCTION SSF_FUNCTION_MODULE_NAME EXPORTING formname = c_formname IMPORTING fm_name = v_fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3.*.CALL SMARTFORM.*CALL FUNCTION v_fm_name EXPORTING control_parameters = st_control_parameters output_options = st_output_opti
22、ons IMPORTING document_output_info = st_document_output_info job_output_info = st_job_output_info job_output_options = st_job_output_options TABLES pt_data = gt_data EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5.*.CONVERT TO OTF TO PDF.*CALL FUNCTION
23、CONVERT_OTF EXPORTING format = PDF IMPORTING bin_filesize = v_bin_filesize bin_file = g_binfile TABLES otf = st_job_output_info-otfdata* doctab_archive = it_docs lines = it_lines EXCEPTIONS err_max_linewidth = 1 err_format = 2 err_conv_not_possible = 3 err_bad_otf = 4 OTHERS = 5.IF g_binfile IS NOT
24、INITIAL. CALL FUNCTION SCMS_XSTRING_TO_BINARY EXPORTING buffer = g_binfile IMPORTING output_length = v_bin_filesize TABLES binary_tab = gt_record.ENDIF.APPEND LINES OF GT_record TO i_objbin.*i_objbin = GT_record.*Mail Bodyi_objtxt-line = 邮件正文.APPEND i_objtxt.DESCRIBE TABLE i_objtxt LINES v_lines_txt
25、.wa_doc-obj_langu = SY-LANGU.wa_doc-obj_name = smartform.wa_doc-expiry_dat = sy-datum + 10.wa_doc-obj_descr = 邮件标题.wa_doc-sensitivty = F.wa_doc-doc_size = v_lines_txt * 255 + v_bin_filesize.* Main TextCLEAR i_objpack-transf_bin.i_objpack-head_start = 1.i_objpack-head_num = 0.i_objpack-body_start = 1
26、.i_objpack-body_num = v_lines_txt.i_objpack-doc_type = RAW.APPEND i_objpack.* Attachment (pdf-Attachment)CLEAR v_lines_bin.i_objpack-transf_bin = X.i_objpack-head_start = 1.i_objpack-head_num = 1.i_objpack-body_start = 1.DESCRIBE TABLE i_objbin LINES v_lines_bin.i_objpack-doc_size = v_bin_filesize .
27、i_objpack-body_num = v_lines_bin.i_objpack-doc_type = PDF.i_objpack-obj_name = smart.i_objpack-obj_descr = PDF.APPEND i_objpack.CLEAR i_reclist.i_reclist-rec_type = U. i_reclist-to_answer = X.i_reclist-notif_read = X.i_reclist-notif_del = X.i_reclist-notif_ndel = X.i_reclist-receiver = xxx.APPEND i_
28、reclist.CALL FUNCTION SO_NEW_DOCUMENT_ATT_SEND_API1 EXPORTING document_data = wa_doc put_in_outbox = commit_work = X TABLES packing_list = i_objpack* object_header = wa_objhead contents_bin = i_objbin contents_txt = i_objtxt receivers = i_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.*start SAPconnect process immediately* SUBMIT rsconn01 WITH mode EQ INT AND RETURN.* COMMIT WORK.ENDIF.*.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1