Function module that will take any internal table as input, convert in to XLS format
and send out emails with the attachment.
Add the appropriate import parameters.
Source Code
====================================================
function zinttab_excl_email.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(SENDER) TYPE AD_SMTPADR
*" REFERENCE(SUBJECT) TYPE SO_OBJ_DES
*" TABLES
*" RECEPIENTS TYPE BCSY_SMTPA
*" RETURN TYPE TABLE_OF_STRINGS OPTIONAL
*" DATA_TO_SEND
*" EMAIL_BODY TYPE BCSY_TEXT
*"----------------------------------------------------------------------
*Function module that will take any internal table as input, convert in to XLS format
*and send out emails with the attachment. :SATYABRATA SAHOO
*"----------------------------------------------------------------------
if recepients[] is initial.
return.
endif.
data: lo_send_request type ref to cl_bcs,
lo_document type ref to cl_document_bcs,
lo_sender_id type ref to if_sender_bcs,
lo_recipient type ref to if_recipient_bcs.
data: lo_bcs_exception type ref to cx_bcs.
data: lv_bcs_message type string,
lv_send_to_all type os_boolean,
lv_fields(10).
field-symbols: < fs_recipient > type ad_smtpadr.
*******************************************************************************
* build the file content
data: lo_struct_type type ref to cl_abap_structdescr,
lo_element_type type ref to cl_abap_elemdescr.
data: lt_components type cl_abap_structdescr=>component_table,
ls_field type dfies.
field-symbols: type abap_componentdescr.
data: lt_binary_text type solix_tab,
lv_text type string,
lv_size type so_obj_len.
* build the header data
lo_struct_type ?= cl_abap_typedescr=>describe_by_data( data_to_send ).
lt_components = lo_struct_type->get_components( ).
loop at lt_components assigning.
if sy-tabix gt 1.
concatenate lv_text cl_bcs_convert=>gc_tab into lv_text.
endif.
lo_element_type ?=-type.
ls_field = lo_element_type->get_ddic_field( ).
concatenate lv_text ls_field-scrtext_l into lv_text.
endloop.
concatenate lv_text cl_bcs_convert=>gc_crlf into lv_text.
* build the structure of the body
field-symbols: type any,
type any.
loop at data_to_send assigning.
loop at lt_components assigning.
if sy-tabix gt 1.
concatenate lv_text cl_bcs_convert=>gc_tab into lv_text.
endif.
assign component-name of structure to .
lv_fields =.
condense lv_fields.
* concatenate lv_text into lv_text.
concatenate lv_text lv_fields into lv_text.
endloop.
concatenate lv_text cl_bcs_convert=>gc_crlf into lv_text.
endloop.
try .
cl_bcs_convert=>string_to_solix(
exporting
iv_string = lv_text
iv_codepage = '4103' "suitable for MS Excel, leave empty"
iv_add_bom = abap_true
importing
et_solix = lt_binary_text
ev_size = lv_size ).
catch cx_bcs into lo_bcs_exception.
lv_bcs_message = lo_bcs_exception->get_text( ).
append lv_bcs_message to return.
exit.
endtry.
*******************************************************************************
* send an email
try .
clear: lo_send_request, lo_document, lo_sender_id.
lo_send_request = cl_bcs=>create_persistent( ).
lo_document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_text = email_body[]
i_subject = subject ).
if not data_to_send[] is initial.
lo_document->add_attachment(
i_attachment_type = 'XLS'
i_attachment_subject = subject
i_attachment_size = lv_size
i_att_content_hex = lt_binary_text ).
endif.
lo_send_request->set_document( lo_document ).
lo_sender_id = cl_cam_address_bcs=>create_internet_address( sender ).
lo_send_request->set_sender( lo_sender_id ).
* add recipients
loop at recepients assigning.
clear lo_recipient.
lo_recipient = cl_cam_address_bcs=>create_internet_address( ).
* add recipient with its respective attributes to send request
lo_send_request->add_recipient( i_recipient = lo_recipient
i_express = abap_true ).
endloop.
lo_send_request->set_status_attributes( i_requested_status = 'E'
i_status_mail = 'E' ).
lo_send_request->set_send_immediately( abap_true ).
lv_send_to_all = lo_send_request->send( i_with_error_screen = abap_true ).
if lv_send_to_all eq abap_true.
data: ls_return like line of return.
ls_return = text-001. "Success
append ls_return to return.
endif.
commit work.
catch cx_bcs into lo_bcs_exception.
lv_bcs_message = lo_bcs_exception->get_text( ).
append lv_bcs_message to return.
exit.
endtry.
endfunction.
============================================
Ref-http://techsplice.com/
and send out emails with the attachment.
Add the appropriate import parameters.
Add appropriate table parameters.
Source Code
====================================================
function zinttab_excl_email.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(SENDER) TYPE AD_SMTPADR
*" REFERENCE(SUBJECT) TYPE SO_OBJ_DES
*" TABLES
*" RECEPIENTS TYPE BCSY_SMTPA
*" RETURN TYPE TABLE_OF_STRINGS OPTIONAL
*" DATA_TO_SEND
*" EMAIL_BODY TYPE BCSY_TEXT
*"----------------------------------------------------------------------
*Function module that will take any internal table as input, convert in to XLS format
*and send out emails with the attachment. :SATYABRATA SAHOO
*"----------------------------------------------------------------------
if recepients[] is initial.
return.
endif.
data: lo_send_request type ref to cl_bcs,
lo_document type ref to cl_document_bcs,
lo_sender_id type ref to if_sender_bcs,
lo_recipient type ref to if_recipient_bcs.
data: lo_bcs_exception type ref to cx_bcs.
data: lv_bcs_message type string,
lv_send_to_all type os_boolean,
lv_fields(10).
field-symbols: < fs_recipient > type ad_smtpadr.
*******************************************************************************
* build the file content
data: lo_struct_type type ref to cl_abap_structdescr,
lo_element_type type ref to cl_abap_elemdescr.
data: lt_components type cl_abap_structdescr=>component_table,
ls_field type dfies.
field-symbols:
data: lt_binary_text type solix_tab,
lv_text type string,
lv_size type so_obj_len.
* build the header data
lo_struct_type ?= cl_abap_typedescr=>describe_by_data( data_to_send ).
lt_components = lo_struct_type->get_components( ).
loop at lt_components assigning
if sy-tabix gt 1.
concatenate lv_text cl_bcs_convert=>gc_tab into lv_text.
endif.
lo_element_type ?=
ls_field = lo_element_type->get_ddic_field( ).
concatenate lv_text ls_field-scrtext_l into lv_text.
endloop.
concatenate lv_text cl_bcs_convert=>gc_crlf into lv_text.
* build the structure of the body
field-symbols:
loop at data_to_send assigning
loop at lt_components assigning
if sy-tabix gt 1.
concatenate lv_text cl_bcs_convert=>gc_tab into lv_text.
endif.
assign component
lv_fields =
condense lv_fields.
* concatenate lv_text
concatenate lv_text lv_fields into lv_text.
endloop.
concatenate lv_text cl_bcs_convert=>gc_crlf into lv_text.
endloop.
try .
cl_bcs_convert=>string_to_solix(
exporting
iv_string = lv_text
iv_codepage = '4103' "suitable for MS Excel, leave empty"
iv_add_bom = abap_true
importing
et_solix = lt_binary_text
ev_size = lv_size ).
catch cx_bcs into lo_bcs_exception.
lv_bcs_message = lo_bcs_exception->get_text( ).
append lv_bcs_message to return.
exit.
endtry.
*******************************************************************************
* send an email
try .
clear: lo_send_request, lo_document, lo_sender_id.
lo_send_request = cl_bcs=>create_persistent( ).
lo_document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_text = email_body[]
i_subject = subject ).
if not data_to_send[] is initial.
lo_document->add_attachment(
i_attachment_type = 'XLS'
i_attachment_subject = subject
i_attachment_size = lv_size
i_att_content_hex = lt_binary_text ).
endif.
lo_send_request->set_document( lo_document ).
lo_sender_id = cl_cam_address_bcs=>create_internet_address( sender ).
lo_send_request->set_sender( lo_sender_id ).
* add recipients
loop at recepients assigning
clear lo_recipient.
lo_recipient = cl_cam_address_bcs=>create_internet_address(
* add recipient with its respective attributes to send request
lo_send_request->add_recipient( i_recipient = lo_recipient
i_express = abap_true ).
endloop.
lo_send_request->set_status_attributes( i_requested_status = 'E'
i_status_mail = 'E' ).
lo_send_request->set_send_immediately( abap_true ).
lv_send_to_all = lo_send_request->send( i_with_error_screen = abap_true ).
if lv_send_to_all eq abap_true.
data: ls_return like line of return.
ls_return = text-001. "Success
append ls_return to return.
endif.
commit work.
catch cx_bcs into lo_bcs_exception.
lv_bcs_message = lo_bcs_exception->get_text( ).
append lv_bcs_message to return.
exit.
endtry.
endfunction.
============================================
Ref-http://techsplice.com/