InterFAX Smart Forms 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 PERFORM init_printing statement. Take the code up to the PERFORM init_printing statement from an existing program, preferably one used for regular printing.


* Printing parameter setting

 PERFORM init_printing.





 CALL FUNCTION function_name

 EXPORTING

* ARCHIVE_INDEX =

* ARCHIVE_INDEX_TAB =

* ARCHIVE_PARAMETERS =

 control_parameters = st_ssfctrlop

* MAIL_APPL_OBJ =

* MAIL_RECIPIENT =

* MAIL_SENDER =

 output_options = st_ssfcompop

 user_settings = ' '

 p_name2 = w_name2

 p_street = w_street

 p_postcode = w_postcode

 p_city = w_city1

 p_tel = w_tel_number

 IMPORTING

 document_output_info = st_ssfcrespd

 job_output_info = st_ssfcrescl

 job_output_options = st_ssfcresop

 TABLES

 itab = itab

 EXCEPTIONS

 formatting_error = 1

 internal_error = 2

 send_error = 3

 user_canceled = 4

 OTHERS = 5.



 IF sy-subrc <> 0.

 MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

 ENDIF.



* EMail or EFax the PDF

 PERFORM mail_object TABLES st_ssfcrescl-otfdata.



*&---------------------------------------------------------------------*

*& Form init_printing

*&---------------------------------------------------------------------*

FORM init_printing .

*----------------------------------------------------------------------*

* Retrieve the Function Module name dynamically generated by Smartforms

*----------------------------------------------------------------------*

 MOVE-CORRESPONDING nast TO st_ssfcompop.



 st_ssfcompop-tdfaxuser = sy-uname.

 st_ssfcompop-tdschedule = 'IMM'.

 st_ssfcompop-tdnoarmch = 'X'.

 st_ssfcompop-tdnoprev = ' '.

 st_ssfcompop-tddataset = 'A_VOLU'.

 st_ssfcompop-tdnewid = 'X'.

 st_ssfcompop-tdimmed = 'X'.

 

* Parameters that have to be set-up for Efax/Email config :

 st_ssfctrlop-no_dialog = 'X'.

 st_ssfctrlop-getotf = 'X'." Retrieve the OTF data
 st_ssfctrlop-langu = sy-langu.


 CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
 EXPORTING
 formname = 'Z_SMARTFORMS' " Smartform name
 direct_call = 'X'
 IMPORTING
 fm_name = function_name
 EXCEPTIONS
 no_form = 1
 no_function_module = 2
 OTHERS = 3.
 IF sy-subrc <> 0.
* error.
 ENDIF.


ENDFORM. "init_printing
*---------------------------------------------------------
* 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 Conf.'.
 APPEND it_mailtxt.
* empty line
 CLEAR it_mailtxt-line. APPEND it_mailtxt.
 it_mailtxt-line = 'Cher client,'.
 APPEND it_mailtxt.

 it_mailtxt-line = 'test ' &
 'test' &.
 APPEND it_mailtxt.

 DESCRIBE TABLE it_mailtxt LINES mailtxt_size.
* EMAIL BODY TEXT ENDS HERE

*---------------------------------------------------------
* Attributes of new doc
 WRITE sy-datum TO w_datum.
 CONCATENATE 'Email to InterFAX' w_datum
 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 'Ann_Volume' space sy-datum INTO it_mailpack-obj_descr.
 it_mailpack-doc_size = pdf_itab_size * 255.
 APPEND it_mailpack.

* Email adress / Efax adress
 it_reclist-receiver = w_email.
 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.

* 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