Interface->send e-mail,FM'SO_NEW_DOCUMENT_ATT_SEND_API1'
*----------------------------------------------------------------------*
*GLOBAL DEFINITION
*----------------------------------------------------------------------*
FIELD-SYMBOLS: <ft_tb> TYPE STANDARD TABLE , "dynamic internal table
<fs_tb> TYPE any , "workspace
<dyn_field> TYPE any . "Dynamic internal table fields
*----------------------------------------------------------------------*
*SELECT SCREEN
*----------------------------------------------------------------------*
PARAMETERS: p_mailto TYPE ad_smtpadr .
PERFORM frm_send_email. *&---------------------------------------------------------------------* *& Form FRM_SEND_EMAIL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_send_email. DATA: i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE, i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE, i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE, i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE, i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE, v_objhead TYPE soli_tab, v_lines_txt TYPE i, v_lines_bin TYPE i, lv_title TYPE so_obj_des, v_docchgi TYPE sodocchgi1, v_lines_bin_all TYPE i, v_filelen TYPE i. DATA: lv_date TYPE string, lv_data TYPE string, lv_time TYPE string, lv_mess TYPE string. *****&step1.Set Mail recipient mailbox i_reclist-receiver = p_mailto. "邮箱地址 i_reclist-express = 'X'. i_reclist-rec_type = 'U'. APPEND i_reclist. *****&step2. Set Email subject lv_title = 'Daily Report' && sy-datum. "邮件标题 v_docchgi-obj_name = 'Text'. v_docchgi-expiry_dat = sy-datum + 10 . "expiration date v_docchgi-sensitivty = 'F'. "Functional object v_docchgi-doc_size = v_lines_txt * 255. v_docchgi-obj_descr = lv_title. *****&step3.Set Mail body CLEAR:i_objtxt. i_objtxt-line = 'Dear Sir/Madam,'. "邮件内容 INSERT i_objtxt INDEX 1. INSERT INITIAL LINE INTO i_objtxt INDEX 2 . CONCATENATE sy-datum(4) '/' sy-datum+4(2) '/' sy-datum+6(2) INTO lv_date. CONCATENATE 'Please find updated file for your reference.' lv_date 'in the attachment.' INTO lv_mess SEPARATED BY space. CLEAR:i_objtxt. i_objtxt-line = lv_mess. INSERT i_objtxt INDEX 3. CLEAR:lv_mess. INSERT INITIAL LINE INTO i_objtxt INDEX 4 . *****&step4.Set Email Signature APPEND INITIAL LINE TO i_objtxt.
"邮件签名 lv_mess = 'This email is automatically sent by SAP, if you have any questions, please contact me in time. Thank you!'. MOVE lv_mess TO i_objtxt-line. APPEND i_objtxt. CLEAR:lv_mess,i_objtxt. DESCRIBE TABLE i_objtxt LINES v_lines_txt. 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. *****&step5.Set Email attachment "Convert output table data to attachment format data PERFORM frm_get_attac. "The output table is converted to a string PERFORM frm_table_change USING lv_mess. "convert string to record PERFORM frm_str_record TABLES i_record USING lv_mess v_filelen. " attachment name APPEND LINES OF i_record TO i_objbin. DESCRIBE TABLE i_record LINES v_lines_bin. DESCRIBE TABLE i_objbin LINES v_lines_bin_all.CONCATENATE 'Daily Data-' sy-datum INTO i_objpack-obj_descr. "附件名APPEND i_objpack. i_objpack-transf_bin = 'X'. i_objpack-body_start = v_lines_bin_all - v_lines_bin + 1 . i_objpack-body_num = v_lines_bin. i_objpack-doc_type = 'XLSX'. i_objpack-obj_name = 'text'. i_objpack-doc_size = v_lines_bin * 255. *****&step6.Send email CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING document_data = v_docchgi put_in_outbox = 'X' commit_work = 'X' TABLES packing_list = i_objpack object_header = v_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. WAIT UP TO 2 SECONDS. SUBMIT rsconn01 WITH mode = 'INT' AND RETURN. CLEAR :gv_message_text_output. gv_message_text_output = text-s01. MESSAGE s208(00) WITH gv_message_text_output. ELSE. CLEAR :gv_message_text_output. gv_message_text_output = text-s02. MESSAGE s208(00) WITH gv_message_text_output DISPLAY LIKE 'E'. ENDIF. ENDFORM. "FRM_SEND_EMAIL *&---------------------------------------------------------------------* *& Form FRM_GET_ATTAC *&---------------------------------------------------------------------* * text 动态获取ALV数据 *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_get_attac . DATA lt_dytable TYPE REF TO data. DATA ls_dytable TYPE REF TO data. DATA: lv_string TYPE string, lv_mess TYPE string. CLEAR lv_string. "Dynamically generate internal tables CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = gt_fieldcat IMPORTING ep_table = lt_dytable EXCEPTIONS generate_subpool_dir_full = 1 OTHERS = 2. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. ASSIGN lt_dytable->* TO <ft_tb> . CREATE DATA ls_dytable LIKE LINE OF <ft_tb>. ASSIGN ls_dytable->* TO <fs_tb> . MOVE-CORRESPONDING gt_itab TO <ft_tb>. ENDFORM. "FRM_GET_ATTAC *&---------------------------------------------------------------------* *& Form FRM_TABLE_CHANGE *&---------------------------------------------------------------------* * text 将数据处理为字符串格式 *----------------------------------------------------------------------* * -->P_<FT_TB> text * -->P_LV_MESS text *----------------------------------------------------------------------* FORM frm_table_change USING outstr TYPE string. DATA: tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab, enter(2) TYPE c VALUE cl_abap_char_utilities=>cr_lf, n TYPE i. DATA: BEGIN OF headtab OCCURS 0 , length TYPE i, decimals TYPE i, type_kind TYPE c, name(30) TYPE c, END OF headtab. DATA descr_ref TYPE REF TO cl_abap_structdescr. DATA:tmpbuffer TYPE xstring. DATA len TYPE i. FIELD-SYMBOLS: <comp_wa> TYPE abap_compdescr, <f_field> , <f_intab> TYPE any. DATA:str TYPE string, str2 TYPE string, text1 TYPE c. LOOP AT gt_fieldcat INTO DATA(gs_fieldcat). headtab-name = gs_fieldcat-coltext. APPEND headtab. ENDLOOP. DESCRIBE TABLE headtab LINES n. "Define the header structure LOOP AT headtab INTO DATA(ls_headtab). str = ls_headtab-name. SEARCH str FOR '-'. IF sy-subrc = 0 AND sy-fdpos <> 0. SPLIT str AT '-' INTO str text1. CONDENSE str. CONCATENATE '-' str INTO str. ELSE. CONDENSE str. ENDIF. IF sy-tabix = 1. CONCATENATE outstr str INTO outstr. ELSEIF sy-tabix = n. CONCATENATE outstr tab str enter INTO outstr. ELSE. CONCATENATE outstr tab str INTO outstr. ENDIF. ENDLOOP. "Process row data as string LOOP AT <ft_tb> ASSIGNING <fs_tb>. DO n TIMES. ASSIGN COMPONENT sy-index OF STRUCTURE <fs_tb> TO <f_field>. str = <f_field>. SEARCH str FOR '-'. IF sy-subrc = 0 AND sy-fdpos <> 0. SPLIT str AT '-' INTO str text1. CONDENSE str. CONCATENATE '-' str INTO str. ELSE. CONDENSE str. ENDIF. CONCATENATE str2 tab str INTO str2. ENDDO. SHIFT str2. CONCATENATE outstr str2 enter INTO outstr. CLEAR str2. ENDLOOP. ENDFORM. "FRM_TABLE_CHANGE *&---------------------------------------------------------------------* *& Form FRM_STR_RECORD *&---------------------------------------------------------------------* * text 将字符串处理为二进制标签 *----------------------------------------------------------------------* * -->P_I_RECORD text * -->P_LV_MESS text * -->P_V_FILELEN text *----------------------------------------------------------------------* FORM frm_str_record TABLES record USING str len. DATA:tmpbuffer TYPE xstring. CALL FUNCTION 'SCMS_STRING_TO_XSTRING' EXPORTING text = str mimetype = '"APPLICATION/MSEXCEL;charset=utf-16le"' IMPORTING buffer = tmpbuffer EXCEPTIONS failed = 1 OTHERS = 2. IF sy-subrc = 0. CONCATENATE cl_abap_char_utilities=>byte_order_mark_little tmpbuffer INTO tmpbuffer IN BYTE MODE. ENDIF. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = tmpbuffer append_to_table = '' IMPORTING output_length = len TABLES binary_tab = record. ENDFORM. "FRM_STR_RECORD
post SAP-Garson
原文链接:https://www.cnblogs.com/abapmila/p/15963367.html文章来自于网络,如果侵犯了您的权益,请联系站长删除!