Sending SmartForm as an attachment in Mail
Program:
*&---------------------------------------------------------------------*
*& Report ZVB_ADOBE_SO
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_adobe_so1.
DATA:lv_fmname TYPE
tdsfname,
lr_ctrlop TYPE ssfctrlop,
lr_outopt TYPE ssfcompop.
DATA:lt_otfdata TYPE
ssfcrescl.
DATA:lt_pdf_data
TYPE TABLE OF tline,
lt_binary_content TYPE solix_tab.
"Variables
DATA: lv_bin_filesize TYPE so_obj_len,
lv_sent_to_all TYPE
os_boolean,
lv_bin_xstr TYPE
xstring,
lv_fname TYPE rs38l_fnam,
lv_string_text TYPE
string.
DATA:lv_uname TYPE soextreci1-receiver, "Sender
lr_subject TYPE
sodocchgi1,
lt_mailbody TYPE
TABLE OF solisti1, "Mail Body
lr_mailbody TYPE
solisti1,
lt_mailrec TYPE
TABLE OF somlrec90, "Mail recievers
lr_mailrec TYPE
somlrec90,
lr_pack_list TYPE sopcklsti1,
lt_pack_list TYPE TABLE OF sopcklsti1.
DATA:lr_vbak TYPE
zssd_vbak_01,
lt_vbap TYPE TABLE OF zssd_vbap_01.
PARAMETERS:p_vbeln TYPE vbak-vbeln
DEFAULT '0000000060'.
SELECT SINGLE vbeln,
erdat,
erzet,
ernam,
vbtyp
FROM vbak
INTO @lr_vbak
WHERE vbeln = @p_vbeln.
IF sy-subrc = 0.
SELECT vbeln,
posnr,
netwr,
waerk
FROM vbap
INTO TABLE @lt_vbap
WHERE vbeln = @lr_vbak-vbeln.
ENDIF.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZVB_SO_SF'
*
VARIANT = ' '
*
DIRECT_CALL = ' '
IMPORTING
fm_name = lv_fmname
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
"Control Parameters
lr_ctrlop-getotf =
'X'.
lr_ctrlop-no_dialog = 'X'.
lr_ctrlop-preview =
'X'.
"Output Options
lr_outopt-tddest =
'LP01'.
CALL FUNCTION lv_fmname
EXPORTING
control_parameters = lr_ctrlop
output_options =
lr_outopt
user_settings = ' '
p_vbeln = p_vbeln
lr_vbak = lr_vbak
lt_vbap = lt_vbap
IMPORTING
job_output_info =
lt_otfdata
*
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error =
1
internal_error =
2
send_error = 3
user_canceled = 4
OTHERS = 5.
DATA(lt_otf) =
lt_otfdata-otfdata[].
*Covert OTF data into PDF
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = lv_bin_filesize
bin_file = lv_bin_xstr
TABLES
otf = lt_otf[]
lines = lt_pdf_data[]
EXCEPTIONS
err_max_linewidth =
1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 4
OTHERS = 5.
***Xstring to binary
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_bin_xstr
TABLES
binary_tab = lt_binary_content.
***Sending Mail
*Mail Subject
lr_subject-obj_descr = 'Sales Order Details'.
lr_subject-sensitivty = 'F'.
lr_subject-doc_size = 1.
*Mail Body
lr_mailbody-line = 'Hi'.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.
lr_mailbody-line = ' '.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.
lr_mailbody-line = 'Please
find the attached document as Sales Order Details'.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.
lr_mailbody-line = ' '.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.
lr_mailbody-line = '**This
is system generated mail. Do not reply.'.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.
lv_uname = sy-uname. "Sender
*Reciever Details
lr_mailrec-receiver = 'abc@gmail.com'.
lr_mailrec-com_type = 'INT'.
lr_mailrec-rec_type = 'U'.
APPEND lr_mailrec TO lt_mailrec.
**** MAIL BODY-LENGTH
DESCRIBE TABLE lt_mailbody LINES lr_pack_list-body_num.
CLEAR lr_pack_list-transf_bin.
lr_pack_list-head_start = 1.
lr_pack_list-head_num = 0.
lr_pack_list-body_start = 1.
lr_pack_list-doc_type = 'RAW'.
APPEND lr_pack_list TO lt_pack_list.
CLEAR: lr_pack_list.
** Create attachment notification
lr_pack_list-transf_bin = 'X'.
lr_pack_list-head_start = 1.
lr_pack_list-head_num = 1.
lr_pack_list-body_start = 1.
*Attachmentt Details
DESCRIBE TABLE lt_binary_content
LINES lr_pack_list-body_num.
lr_pack_list-doc_type = 'PDF'.
CONCATENATE 'Sales Order-' p_vbeln INTO lr_pack_list-obj_descr.
lr_pack_list-obj_name = 'SO Detaisl'.
lr_pack_list-doc_size = lr_pack_list-body_num * 255.
APPEND lr_pack_list TO lt_pack_list.
CLEAR:lr_pack_list.
*Send mail
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = lr_subject
sender_address = lv_uname
sender_address_type = 'B'
commit_work = 'X'
TABLES
packing_list = lt_pack_list
contents_txt = lt_mailbody
contents_hex = lt_binary_content
receivers = lt_mailrec
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.
Output:
Comments
Post a Comment