Wednesday, December 22, 2010
REPORT  ztest_smartform.
DATA:it_nfal            TYPE nfal       OCCURS 0 WITH HEADER LINE.
DATA:it_nfal_final      TYPE nfal       OCCURS 0 WITH HEADER LINE.
DATA:fm_name            TYPE rs38l_fnam.
DATA:wa_control_par     TYPE ssfctrlop.
DATA:wa_output_options  TYPE ssfcompop.
DATA:flag               TYPE c.
DATA:no_of_records      TYPE i.
DATA:it_otf_data        TYPE ssfcrescl.
DATA:it_otf_final       TYPE itcoo OCCURS 0 WITH HEADER LINE.
DATA:bin_filesize       TYPE i.
DATA:it_pdfdata         TYPE TABLE OF tline.
DATA:it_pdf             TYPE TABLE OF solisti1.
DATA :g_sent_to_all     TYPE sonv-flag.
DATA :g_tab_lines       TYPE i.

DATA :i_document_data   TYPE STANDARD TABLE OF sodocchgi1,
i_packing_list    TYPE STANDARD TABLE OF sopcklsti1,
i_attachment      TYPE STANDARD TABLE OF solisti1,
i_body_msg        TYPE STANDARD TABLE OF solisti1,
i_receivers       TYPE STANDARD TABLE OF somlreci1,
i_pdf             TYPE STANDARD TABLE OF tline,
w_document_data   LIKE LINE OF i_document_data,
w_packing_list    LIKE LINE OF i_packing_list,
w_attachment      LIKE LINE OF i_attachment,
w_body_msg        LIKE LINE OF i_body_msg,
w_receivers       LIKE LINE OF i_receivers,
w_pdf             LIKE LINE OF i_pdf.

START-OF-SELECTION.
"select data
SELECT * FROM nfal INTO TABLE      it_nfal UP TO 10 ROWS WHERE einri = 'CGH'.
SELECT * FROM nfal APPENDING TABLE it_nfal UP TO 10 ROWS WHERE einri = 'SGH'.
SELECT * FROM nfal APPENDING TABLE it_nfal UP TO 10 ROWS WHERE einri = 'KKH'.
SORT it_nfal BY einri.
DESCRIBE TABLE it_nfal LINES no_of_records.
"This loop prints the data
LOOP AT it_nfal.
AT FIRST.
"Get Function module name for given smartform
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZTEST_SMARTFORM'
IMPORTING
fm_name  = fm_name.
ENDAT.
APPEND it_nfal TO it_nfal_final.
AT END OF einri.
wa_control_par-no_dialog = 'X'.   "It supresses the Printer dialog.
wa_output_options-tddest = 'LOCL'."Set printer
"Call Smartform function module.
CALL FUNCTION fm_name
EXPORTING
control_parameters = wa_control_par
output_options     = wa_output_options
TABLES
it_nfal            = it_nfal_final.
CLEAR it_nfal_final[].
ENDAT.
ENDLOOP.
CLEAR :wa_control_par,wa_output_options.
"This loop converts otf data to pdf and sends mail
LOOP AT it_nfal.
AT FIRST.
"Get Function module name for given smartform
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZTEST_SMARTFORM'
IMPORTING
fm_name  = fm_name.
ENDAT.
APPEND it_nfal TO it_nfal_final.
AT END OF einri.
wa_control_par-getotf    = 'X'.   "Set this to get OTF data
wa_control_par-no_dialog = 'X'.   "It supresses the Printer dialog.
wa_output_options-tddest = 'LOCL'."Set printer
"Call Smartform function module.
CALL FUNCTION fm_name
EXPORTING
control_parameters = wa_control_par
output_options     = wa_output_options
IMPORTING
job_output_info    = it_otf_data
TABLES
it_nfal            = it_nfal_final.
"Getting OTF data
APPEND LINES OF it_otf_data-otfdata[] TO it_otf_final[].
CLEAR it_nfal_final[].
ENDAT.
AT LAST.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format       = 'PDF'
IMPORTING
bin_filesize = bin_filesize
TABLES
otf          = it_otf_final
lines        = it_pdfdata[].
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
EXPORTING
line_width_dst = '255'
TABLES
content_in     = it_pdfdata[]
content_out    = it_pdf[].
IF sy-subrc = 0.
"Send mail
PERFORM send_mail.
ENDIF.
ENDAT.
ENDLOOP.
*&---------------------------------------------------------------------*
*&      Form  SEND_MAIL
*&---------------------------------------------------------------------*
FORM send_mail .
"Subject of the mail.
w_document_data-obj_name  = 'MAIL_TO_HEAD'.
w_document_data-obj_descr = 'Regarding Mail Program by SAP ABAP'.
"Body of the mail
w_body_msg = 'This is body of mail msg.'.
APPEND w_body_msg TO i_body_msg.
CLEAR  w_body_msg.
"Write Packing List for Body
DESCRIBE TABLE i_body_msg LINES g_tab_lines.
w_packing_list-head_start = 1.
w_packing_list-head_num   = 0.
w_packing_list-body_start = 1.
w_packing_list-body_num   = g_tab_lines.
w_packing_list-doc_type   = 'RAW'.
APPEND w_packing_list TO i_packing_list.
CLEAR  w_packing_list.
"Write Packing List for Attachment
w_packing_list-transf_bin = 'X'.
w_packing_list-head_start = 1.
w_packing_list-head_num   = 1.
w_packing_list-body_start = 1.
DESCRIBE TABLE it_pdf LINES w_packing_list-body_num.
w_packing_list-doc_type   = 'PDF'.
w_packing_list-obj_descr  = 'PDF Attachment'.
w_packing_list-obj_name   = 'PDF_ATTACHMENT'.
w_packing_list-doc_size   = w_packing_list-body_num * 255.
APPEND w_packing_list TO i_packing_list.
CLEAR  w_packing_list.
"Fill the document data and get size of attachment
w_document_data-obj_langu  = sy-langu.
READ TABLE it_pdf INTO w_pdf INDEX g_tab_lines.
w_document_data-doc_size = ( g_tab_lines - 1 ) * 255 + STRLEN( w_attachment ).
"Receivers List.
w_receivers-rec_type   = 'B'."Internet address
w_receivers-receiver   = 'IBMVENKAT'.
w_receivers-com_type   = 'INT'.
w_receivers-notif_del  = 'X'.
w_receivers-notif_ndel = 'X'.
APPEND w_receivers TO i_receivers .
CLEAR:w_receivers.
"Function module to send mail to Recipients
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data              = w_document_data
put_in_outbox              = 'X'
commit_work                = 'X'
IMPORTING
sent_to_all                = g_sent_to_all
TABLES
packing_list               = i_packing_list
contents_bin               = it_pdf
contents_txt               = i_body_msg
receivers                  = i_receivers
EXCEPTIONS
too_many_receivers         = 1
document_not_sent          = 2
document_type_not_exist    = 3
operation_no_authorization = 4
parameter_error            = 5
x_error                    = 6
enqueue_error              = 7
OTHERS                     = 8.
IF sy-subrc = 0 .
MESSAGE i303(me) WITH 'Mail has been Successfully Sent.'.
ENDIF.
ENDFORM.                    " SEND_MAIL

0 comments:

Post a Comment

Your useful comments, suggestions are appreciated.Your comments are moderated.

Followers

Contact Form

Name

Email *

Message *

Web Dynpro ABAP Book

An SAP Consultant

Follow US


Want to Contribute ?

If you are interested in writing about the new stuff you learn everyday while working, please write to the.sap.consultants@gmail.com.

Click on Contribution for more details.