2007 Jul 23 7:11 PM
Hi all,
How to send email in SMARTFORMS?
can any one tell as it is urgent requrement.
thanks
revanth
2007 Jul 23 7:18 PM
Check the code....
Summury: Converting the smartfrom to PDF is process of 3 simple steps.
Calling the Smart form, then it returns the OTF data in Return.
Converting the OTF data into required format using the Function Module CONVERT_OTF_2_PDF.
Download the File
*&---------------------------------------------------------------------*
*& Report ZTEST_NREDDY_PDF
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_NREDDY_PDF.
DATA: it_otf TYPE STANDARD TABLE OF itcoo,
it_docs TYPE STANDARD TABLE OF docs,
it_lines TYPE STANDARD TABLE OF tline,
st_job_output_info TYPE ssfcrescl,
st_document_output_info TYPE ssfcrespd,
st_job_output_options TYPE ssfcresop,
st_output_options TYPE ssfcompop,
st_control_parameters TYPE ssfctrlop,
v_len_in TYPE so_obj_len,
v_language TYPE sflangu VALUE 'E',
v_e_devtype TYPE rspoptype,
v_bin_filesize TYPE i,
v_name TYPE string,
v_path TYPE string,
v_fullpath TYPE string,
v_filter TYPE string,
v_uact TYPE i,
v_guiobj TYPE REF TO cl_gui_frontend_services,
v_filename TYPE string,
v_fm_name TYPE rs38l_fnam.
CONSTANTS c_formname TYPE tdsfname VALUE 'ZTEST'.
CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
EXPORTING
i_language = v_language
i_application = 'SAPDEFAULT'
IMPORTING
e_devtype = v_e_devtype.
st_output_options-tdprinter = v_e_devtype.
*st_output_options-tdprinter = 'locl'.
st_control_parameters-no_dialog = 'X'.
st_control_parameters-getotf = 'X'.
*.................GET SMARTFORM FUNCTION MODULE NAME.................*
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = c_formname
IMPORTING
fm_name = v_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*...........................CALL SMARTFORM............................*
CALL FUNCTION v_fm_name
EXPORTING
control_parameters = st_control_parameters
output_options = st_output_options
IMPORTING
document_output_info = st_document_output_info
job_output_info = st_job_output_info
job_output_options = st_job_output_options
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.
ELSE.
*.........................CONVERT TO OTF TO PDF.......................*
CALL FUNCTION 'CONVERT_OTF_2_PDF'
IMPORTING
bin_filesize = v_bin_filesize
TABLES
otf = st_job_output_info-otfdata
doctab_archive = it_docs
lines = it_lines
EXCEPTIONS
err_conv_not_possible = 1
err_otf_mc_noendmarker = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*........................GET THE FILE NAME TO STORE....................*
CONCATENATE 'smrt' '.pdf' INTO v_name.
CREATE OBJECT v_guiobj.
CALL METHOD v_guiobj->file_save_dialog
EXPORTING
default_extension = 'pdf'
default_file_name = v_name
file_filter = v_filter
CHANGING
filename = v_name
path = v_path
fullpath = v_fullpath
user_action = v_uact.
IF v_uact = v_guiobj->action_cancel.
EXIT.
ENDIF.
*..................................DOWNLOAD AS FILE....................*
MOVE v_fullpath TO v_filename.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = v_bin_filesize
filename = v_filename
filetype = 'BIN'
TABLES
data_tab = it_lines
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
also check the link below.
Cheers
VJ
2007 Jul 23 7:19 PM
Hi,
Use 'SO_NEW_DOCUMENT_SEND_API1 F.M
Please go through the code.
data declaration
-
c_u(1) VALUE 'U', "Value U
c_int(3) VALUE 'INT', "Value Int
c_saprpt(6) VALUE 'SAPRPT', "Heading
c_f(1) VALUE 'F', "Value F
c_raw(3) VALUE 'RAW'. "Doc Type
-
getting the data from TVARV
-
CONCATENATE 'CBSI_FILE_NAME' '0227' INTO l_var_name SEPARATED BY '_'.
CALL FUNCTION 'Z_GET_TVARV_ENTRIES'
EXPORTING
i_name = l_var_name
i_type = 'P'
I_MSGTY =
IMPORTING
e_parameter = l_file.
TABLES
t_tvarv =
p_file = l_file .
-
Sending email
-
PERFORM send_file_as_email_attachment
USING v_email
'SM0003 Control Total Data'
'SM0003 Control Total Data'
' '.
&----
Send email
----
-->P_GV_EMAIL Email id
-->P_TEXT_003 Subject
-->P_TEXT_003 Subject
-->P_6200 text
----
FORM send_file_as_email_attachment
USING p_email TYPE somlreci1-receiver
p_mtitle TYPE sodocchgi1-obj_descr
p_filename TYPE so_obj_des
p_attdescription TYPE so_obj_nam.
*
*Local varibales
DATA: lv_mtitle TYPE sodocchgi1-obj_descr,
lv_email TYPE somlreci1-receiver,
lv_attdescription TYPE so_obj_nam ,
lv_attfilename TYPE so_obj_des ,
lv_sent_all TYPE sonv-flag.
*move values
it_attach[] = it_output[].
lv_sent_all = c_x.
lv_email = p_email.
lv_mtitle = p_mtitle.
lv_attdescription = p_attdescription.
lv_attfilename = p_filename.
Fill the document data.
it_docchange-doc_size = 1.
Populate the subject/generic message attributes
it_docchange-obj_langu = sy-langu.
it_docchange-obj_name = c_saprpt.
it_docchange-obj_descr = lv_mtitle .
it_docchange-sensitivty = c_f.
Fill the document data and get size of attachment
READ TABLE it_attach
INDEX v_chr_entries
TRANSPORTING NO FIELDS.
it_docchange-doc_size =
( v_chr_entries - 1 ) * 255 + STRLEN( it_attach ).
it_docchange-obj_langu = sy-langu.
it_docchange-obj_name = c_saprpt.
it_docchange-obj_descr = lv_mtitle.
it_docchange-sensitivty = c_f.
Describe the body of the message
CLEAR wa_objpack.
REFRESH it_objpack.
wa_objpack-transf_bin = space.
wa_objpack-head_start = 1.
wa_objpack-head_num = 0.
wa_objpack-body_start = 1.
DESCRIBE TABLE it_message LINES v_objpackbody.
wa_objpack-doc_type = c_raw.
APPEND wa_objpack
TO it_objpack.
Create attachment notification
wa_objpack-transf_bin = c_x.
wa_objpack-head_start = 1.
wa_objpack-head_num = 1.
wa_objpack-body_start = 1.
DESCRIBE TABLE it_attach LINES v_objpackbody.
wa_objpack-obj_descr = lv_attdescription.
wa_objpack-obj_name = lv_attfilename.
wa_objpack-doc_size = wa_objpack-body_num * 255.
APPEND wa_objpack
TO it_objpack.
Add the recipients email address
REFRESH it_reclist.
LOOP AT it_mailid .
wa_reclist-receiver = it_mailid-low.
wa_reclist-receiver = '[email protected]'.
wa_reclist-rec_type = c_u.
wa_reclist-com_type = c_int.
wa_reclist-notif_del = c_x.
wa_reclist-notif_ndel = c_x.
APPEND wa_reclist
TO it_reclist.
CLEAR wa_reclist.
ENDLOOP.
IF 1 = 2.
ENDIF.
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = it_docchange
document_type = c_raw
put_in_outbox = c_x
commit_work = c_x
IMPORTING
sent_to_all = lv_sent_all
TABLES
object_content = it_attach
receivers = it_reclist
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 NE 0.
MESSAGE e114 ."Unable to send An Email with Session Log.
ENDIF. "IF sy-subrc NE 0.
ENDFORM. "send_file_as_email_attachment
Thanks,
Sudhakar
2007 Jul 23 7:19 PM
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |