InterFAX Sapscript Form Mail Object - Sapscript PDF

This Sapscript code generates a PDF file from the SAP document, using a Sapscript form mail object, 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

Contact us today

Talk to a member of our team about the benefits InterFAX can bring to your organization's communications processes.

Contact us today