InterFAX Sapscript Form Mail Object
The code below is a SAP form mail object which generates a PDF file from the SAP document, and attaches it to an email, which InterFAX can use to deliver a fax to the recipient. This object can be used for both Sapscript and Smart Forms processing program. For instructions on using this object in your code, see Writing ABAP Processing Program for Mail-to-Fax.
* This routine receives OTF data. OTF data is converted to PDF
* format and send to the Partner's email address
*---------------------------------------------------------
FORM mail_object TABLES otf_data STRUCTURE itcoo .
DATA: pdf_size TYPE i, " PDF Size pdf_itab_size TYPE i, " Attachment size mailtxt_size TYPE i, " Text in mail size l_vbeln LIKE vbdka-vbeln. " Order Doc DATA: it_mailtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE, " Mail Text it_pdf TYPE TABLE OF tline WITH HEADER LINE, " OTF output it_mailpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE, " Dist details it_mailhead LIKE solisti1 OCCURS 1 WITH HEADER LINE," Header data it_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE, " Rec List it_pdfdata LIKE solix OCCURS 0 WITH HEADER LINE. " Attachment data DATA: it_doc_att LIKE sodocchgi1. " Attri of new doc DATA: BEGIN OF it_pdfout OCCURS 0, " PDF in 255 length tline TYPE char255, END OF it_pdfout. * Sales doc and Customer DATA: BEGIN OF i_vbeln OCCURS 0, vbeln LIKE vbpa-vbeln, " Sales Document adrnr LIKE vbpa-adrnr, " Customer END OF i_vbeln.
* Sender Address no and SMTP address DATA: BEGIN OF i_addrs OCCURS 0, addrnumber LIKE adr6-smtp_addr, smtp_addr LIKE adr6-smtp_addr, END OF i_addrs.
DATA: otfdata LIKE soli OCCURS 0 WITH HEADER LINE. DATA: pdfdata LIKE solisti1 OCCURS 0 WITH HEADER LINE. DATA: pdf_filesize LIKE sood-objlen. DATA: bin_filesize TYPE i. DATA: w_otf TYPE itcoo. "For OTF DATA: w_pdf TYPE solisti1. "For PDF DATA: i_content_txt TYPE soli_tab. "Content DATA: w_transfer_bin TYPE sx_boolean. "Content DATA: i_content_bin TYPE solix_tab, "Content i_objhead TYPE soli_tab.
DATA: v_len_in TYPE so_obj_len, v_size TYPE i.
* Convert OTF to PDF LOOP AT otf_data INTO w_otf. CONCATENATE w_otf-tdprintcom w_otf-tdprintpar INTO w_pdf. APPEND w_pdf TO i_content_txt. ENDLOOP. CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' EXPORTING format_src = 'OTF' format_dst = 'PDF' CHANGING transfer_bin = w_transfer_bin content_txt = i_content_txt content_bin = i_content_bin objhead = i_objhead len = v_len_in EXCEPTIONS err_conv_failed = 1 OTHERS = 2.
v_size = v_len_in. pdf_itab_size = v_size.
it_pdfout[] = it_pdf[].
* Create the PDF File CLEAR it_pdfdata. REFRESH it_pdfdata. LOOP AT it_pdfout. MOVE it_pdfout-tline TO it_pdfdata-line. APPEND it_pdfdata. CLEAR it_pdfdata. ENDLOOP.
*---------------------------------------------------------
* EMAIL BODY TEXT STARTS HERE it_mailtxt-line = 'ORDER ACKNOWLEDGEMENT'. APPEND it_mailtxt. * empty line CLEAR it_mailtxt-line. APPEND it_mailtxt. it_mailtxt-line = 'Dear customer,'. APPEND it_mailtxt. it_mailtxt-line = 'We received your order. ' & 'Thank you for your confidence.'. APPEND it_mailtxt. it_mailtxt-line = 'Attached you will find our confirmation.' & ' '. APPEND it_mailtxt. * empty line x 3 CLEAR it_mailtxt-line. APPEND it_mailtxt. CLEAR it_mailtxt-line. APPEND it_mailtxt. CLEAR it_mailtxt-line. APPEND it_mailtxt. APPEND it_mailtxt. it_mailtxt-line = 'Best Regards'.
APPEND it_mailtxt.
DESCRIBE TABLE it_mailtxt LINES mailtxt_size.
* EMAIL BODY TEXT ENDS HERE
*---------------------------------------------------------
* Document Number for Output CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = vbdka-vbeln IMPORTING output = l_vbeln.
* Attributes of new doc CONCATENATE 'Email to InterFAX' l_vbeln INTO it_doc_att-obj_descr SEPARATED BY space. it_doc_att-sensitivty = 'F'. it_doc_att-doc_size = mailtxt_size * 255.
* Create Pack to text in mail body. CLEAR it_mailpack-transf_bin. it_mailpack-head_start = 1. it_mailpack-head_num = 0. it_mailpack-body_start = 1. it_mailpack-body_num = mailtxt_size. it_mailpack-doc_type = 'RAW'. APPEND it_mailpack.
* Create Pack to PDF Attach. it_mailpack-transf_bin = 'X'. it_mailpack-head_start = 1. it_mailpack-head_num = 1. it_mailpack-body_start = 1. it_mailpack-body_num = pdf_itab_size. it_mailpack-doc_type = 'PDF'. CONCATENATE l_vbeln '.pdf' INTO it_mailpack-obj_name. CONCATENATE 'Order' space l_vbeln INTO it_mailpack-obj_descr. it_mailpack-doc_size = pdf_itab_size * 255. APPEND it_mailpack.
*Get email addresses based on Sales document. SELECT vbeln adrnr INTO TABLE i_vbeln FROM vbpa WHERE vbeln = vbdka-vbeln AND parvw = nast-parvw. IF NOT i_vbeln[] IS INITIAL. SELECT addrnumber extension2 INTO TABLE i_addrs FROM adrc FOR ALL ENTRIES IN i_vbeln WHERE addrnumber = i_vbeln-adrnr AND extension2 NE space. ENDIF.
IF i_addrs[] IS NOT INITIAL. LOOP AT i_addrs. it_reclist-receiver = i_addrs-smtp_addr. it_reclist-express = 'X'. it_reclist-rec_type = 'U'. it_reclist-notif_del = 'X'. " request delivery notification it_reclist-notif_ndel = 'X'. " request not delivered notification APPEND it_reclist. CLEAR: i_addrs. ENDLOOP. ELSE. MESSAGE e999(re) WITH 'Email not found !'. EXIT. ENDIF.
* Call FM to send email CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING document_data = it_doc_att put_in_outbox = 'X' TABLES packing_list = it_mailpack object_header = it_mailhead contents_txt = it_mailtxt contents_hex = i_content_bin" it_pdfdata receivers = it_reclist EXCEPTIONS too_many_receivers = 1 document_not_sent = 2 document_type_not_exist = 3 operation_no_authorizationfiltered = 4 parameter_error = 5 x_error = 6 enqueue_error = 7 OTHERS = 8. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
ENDFORM. " MAIL_OBJECT
|