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
|