Professional Documents
Culture Documents
*******************************************************************************
*
S-H-O-R-T-----D-E-S-C-R-I-P-T-I-O-N
*
*******************************************************************************
*Program Description : Method to send email with pdf attatchment.
*
*Developer :
Hafizul Mollah
*
*Brief Description : This method is used to send email with
*
*
a pdf attachment. It can be used to send the email
*
*
to multiple email addresses(To, CC,BCC) or to a
*
*
distribution name or distribution id.
*
*******************************************************************************
* CONSTANTS----------------------------------------------------------------*
CONSTANTS:
c_tab TYPE c VALUE cl_bcs_convert=>gc_tab,
c_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf,
gc_tab TYPE c VALUE cl_bcs_convert=>gc_tab,
gc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf.
* TYPES----------------------------------------------------------------*
TYPES: BEGIN OF ty_itab,
line TYPE ztp_text_struct,
END OF ty_itab,
BEGIN OF ty_itab2,
line TYPE soli,
END OF ty_itab2,
BEGIN OF ty_header,
field TYPE char80,
END OF ty_header,
BEGIN OF ty_field,
field TYPE char40,
END OF ty_field,
BEGIN OF ty_maxlen,
maxlen TYPE i,
END OF ty_maxlen.
* INTERNAL TABLES------------------------------------------------------*
DATA:
li_dlientries
TYPE STANDARD TABLE OF sodlienti1,
li_binary_content TYPE solix_tab,
li_main_text
TYPE bcsy_text,
li_recipient
TYPE ztp_smtp_tab,
i_header
TYPE STANDARD TABLE OF ty_header,
i_maxlen
TYPE STANDARD TABLE OF ty_maxlen,
li_final
TYPE ztp_text_tab,
i_field
TYPE STANDARD TABLE OF ty_field.
* STRUCTURES-----------------------------------------------------------*
DATA:
st_itab1
TYPE ty_itab,
st_itab2
TYPE ty_itab2,
st_email_addr TYPE ztp_smtp_struct,
st_dlientry
TYPE sodlienti1,
st_body
TYPE soli.
* FIELD-SYMBOLS----------------------------------------------------*
FIELD-SYMBOLS: <f_source>
TYPE any,
<f_wa_filetab> TYPE any,
<l_xline>
TYPE x,
<t_dyntable>
ame
<fs_dyntable> TYPE any ,
rk area
<fs_fldval>
TYPE any,
<fs>
TYPE any.
value
* VARIABLES------------------------------------------------------------*
DATA:
wa_header
TYPE ty_header,
send_request
TYPE REF TO cl_bcs,
document
TYPE REF TO cl_document_bcs,
recipient
TYPE REF TO if_recipient_bcs,
bcs_exception
TYPE REF TO cx_bcs,
l_size
TYPE so_obj_len,
l_sent_to_all
TYPE os_boolean,
l_dliname
TYPE so_obj_nam,
l_dlidata
TYPE sodlidati1,
l_string
TYPE string,
l_cl_name
TYPE string,
l_mailcc
TYPE c,
l_mailbcc
TYPE c,
l_recipient
TYPE ad_smtpadr,
t_newtable
TYPE REF TO data,
t_newline
TYPE REF TO data,
t_fldcat
TYPE lvc_t_fcat,
wa_it_fldcat
TYPE lvc_s_fcat,
wa_colno(2)
TYPE n,
wa_flname
TYPE string,
t_attachment
TYPE solisti1 ,
pdf_content
TYPE solix_tab,
lp_pdf_size
TYPE so_obj_len,
main_text
TYPE bcsy_text,
binary_content TYPE solix_tab,
size
TYPE so_obj_len,
sent_to_all
TYPE os_boolean,
lv_string
TYPE string,
wa_tab1
TYPE ztp_text_struct,
wa_tab2
TYPE soli,
pdf_xstring
TYPE xstring,
it_pdf_table
TYPE rcl_bag_tline,
wa_pdfline
LIKE LINE OF it_pdf_table,
l_column_index TYPE sy-index,
l_rc
TYPE c,
l_handle
TYPE sy-tabix,
l_spoolid
TYPE tsp01-rqident,
l_str(255)
TYPE c,
params
TYPE pri_params,
valid
TYPE char1,
l_pdf_bytecount TYPE i,
wa_im_itab_1
TYPE ztp_text_struct,
g_data
TYPE char25,
l_output
TYPE char40,
l_col_cnt
TYPE i,
l_maxcnt
TYPE i,
wa_field
TYPE ty_field,
wa_maxlen
TYPE ty_maxlen,
l_index
TYPE char2,
lwa_final
TYPE ztp_text_struct,
l_field
l_rec
wa_im_itab_2
wa_im_itab_3
l_field_conv
l_comp
l_pos
l_sp_id
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
string,
i,
soli,
soli,
string,
string,
i VALUE 1,
tsp01_sp0r-rqid_char.
"'30221'
*
*
*
*
*
*
*
*
dst_device
PDF_DESTINATION
NO_BACKGROUND
GET_SIZE_FROM_FORMAT
IMPORTING
pdf_bytecount
PDF_SPOOLID
LIST_PAGECOUNT
BTC_JOBNAME
BTC_JOBCOUNT
BIN_FILE
TABLES
pdf
EXCEPTIONS
err_no_abap_spooljob
err_no_spooljob
err_no_permission
err_conv_not_possible
err_bad_destdevice
user_cancelled
err_spoolerror
err_temseerror
err_btcjob_open_failed
err_btcjob_submit_failed
err_btcjob_close_failed
OTHERS
= 'LOCL'
=
=
=
= l_pdf_bytecount
=
=
=
=
=
= it_pdf_table
=
=
=
=
=
=
=
=
=
=
=
=
1
2
3
4
5
6
7
8
9
10
11
12.
i_text
= li_main_text
i_subject = im_email_subject_line ).
*add the spread sheet as attachment to document object
document->add_attachment(
i_attachment_type
= 'PDF'
i_attachment_subject = im_attachment_name
i_attachment_size
= lp_pdf_size
i_att_content_hex
= pdf_content ).
*add document object to send request
send_request->set_document( document ).
*get email addresses from table
LOOP AT im_email_address INTO st_email_addr.
APPEND st_email_addr TO li_recipient.
ENDLOOP.
*Get email addresses from Distribution list
CALL FUNCTION 'SO_DLI_READ_API1'
EXPORTING
shared_dli
= 'X'
dli_id
= space
dli_name
= im_email_dist_name
IMPORTING
dli_data
= l_dlidata
TABLES
dli_entries
= li_dlientries
EXCEPTIONS
dli_not_exist
= 9001
operation_no_authorization = 9002
parameter_error
= 9003
x_error
= 9004
OTHERS
= 01.
CLEAR st_email_addr.
LOOP AT li_dlientries INTO st_dlientry.
st_email_addr-smtpadr = st_dlientry-member_adr.
st_email_addr-mail_to = 'X'.
APPEND st_email_addr TO li_recipient.
ENDLOOP.
*Get email addresses from Distribution Id
CALL FUNCTION 'SO_DLI_READ_API1'
EXPORTING
shared_dli
= 'X'
dli_id
= im_email_dist_id
dli_name
= space
IMPORTING
dli_data
= l_dlidata
TABLES
dli_entries
= li_dlientries
EXCEPTIONS
dli_not_exist
= 9001
operation_no_authorization = 9002
parameter_error
= 9003
x_error
= 9004
OTHERS
= 01.
LOOP AT li_dlientries INTO st_dlientry.
st_email_addr-smtpadr = st_dlientry-member_adr.
"#EC NOTEXT
"#EC NOTEXT
"Size
st_email_addr-mail_to = 'X'.
APPEND st_email_addr TO li_recipient.
ENDLOOP.
*--------- add recipient (e-mail address)----------------------LOOP AT li_recipient INTO st_email_addr.
l_recipient = st_email_addr-smtpadr.
recipient = cl_cam_address_bcs=>create_internet_address( l_recipient )
.
IF st_email_addr-mail_to = 'X'.
CLEAR l_mailcc.
CLEAR l_mailbcc.
ELSE.
IF st_email_addr-mail_cc = 'X'.
l_mailcc = 'X'.
CLEAR l_mailbcc.
ELSE.
IF st_email_addr-mail_bcc = 'X'.
l_mailbcc = 'X'.
CLEAR l_mailcc.
ENDIF.
ENDIF.
ENDIF.
TRY.
CALL METHOD send_request->add_recipient
EXPORTING
i_recipient = recipient
i_express
= 'X'
i_copy
= l_mailcc
i_blind_copy = l_mailbcc.
ENDTRY .
ENDLOOP.
*add recipient object to send request
*send_request->add_recipient( recipient ).
*---------- send document --------------------------------------send_request->send_request->set_link_to_outbox( 'X' ).
l_sent_to_all = send_request->send( i_with_error_screen = 'X' ).
COMMIT WORK.
IF l_sent_to_all IS INITIAL.
ex_send_to_all = '1'.
ELSE.
ex_send_to_all = '0'.
ENDIF.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
*
*
ENDIF.
ENDMETHOD.