InterFAX Sapscript Processing Program Example

Use this example as a basis for your processing program, if you are creating it from scratch. Please see the instructions in
Writing ABAP Processing Program for Mail-to-Fax (start from step 5 in the instructions) to see how to modify this example to suit your needs.
NOTE: This example does not contain a full processing program, rather it starts from the FORM_CLOSE statement. Take the code up to the FORM_CLOSE statement from an existing program, preferably one used for regular printing.



*---------------------------------------------------------------------*
* FORM FORM_CLOSE *
*---------------------------------------------------------------------*
* End of printing the form *
*---------------------------------------------------------------------*



FORM form_close.

*>>>>>>>>>>>>>>>>>>>>>>>>>>>> EFAX/EMAIL our PDF : data declaration

 DATA : BEGIN OF lt_otf OCCURS 0.

 INCLUDE STRUCTURE itcoo.

 DATA : END OF lt_otf.

 DATA : BEGIN OF lt_doctab OCCURS 0.

 INCLUDE STRUCTURE docs.

 DATA : END OF lt_doctab.

 DATA : BEGIN OF lt_pdfdata OCCURS 0.

 INCLUDE STRUCTURE tline.

 DATA : END OF lt_pdfdata.

 DATA : v_bin.

*<<<<<<<<<<<<<<<<<<<<<<<<<<<





 CALL FUNCTION 'CLOSE_FORM'

 TABLES

 otfdata = lt_otf

 EXCEPTIONS

 unopened = 1

 bad_pageformat_for_print = 2

 send_error = 3

 spool_error = 4

 codepage = 5

 OTHERS = 6.



ENDFORM. "FORM_CLOSE
*---------------------------------------------------
* FORM MAIL_OBJECT *
*---------------------------------------------------------
* 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