*&---------------------------------------------------------------------*
*& Report Z_EXCEL_MAIL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_EXCEL_MAIL.
DATA: BEGIN OF it_kna1 OCCURS 0,
kunnr TYPE kunnr,
land1 TYPE land1_gp,
name1 TYPE name1_gp,
END OF it_kna1.
START-OF-SELECTION.
SELECT kunnr land1 name1 FROM kna1
INTO TABLE it_kna1 UP TO 10 ROWS
WHERE land1 = 'US'.
*-- Sending mail with Excel
TYPES: BEGIN OF t_solisti1,
line TYPE string,
END OF t_solisti1.
DATA : docdata LIKE sodocchgi1,
objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objbin_tmp TYPE STANDARD TABLE OF solix ,
objbin_final TYPE STANDARD TABLE OF solix ,
objhead TYPE TABLE OF solisti1,
objbin1 TYPE t_solisti1 OCCURS 10 WITH HEADER LINE,
reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
wa_objhead LIKE LINE OF objhead,
tab_lines TYPE sy-tabix.
DATA:gv_tab_lines TYPE c.
CONSTANTS : lk_tab_char TYPE c VALUE
cl_abap_char_utilities=>horizontal_tab,
lk_cr_char TYPE c VALUE cl_abap_char_utilities=>cr_lf,
lk_xls_extension TYPE so_obj_tp VALUE 'XLS',
lk_filename(255) TYPE c VALUE 'Customer Details.XLS'.
DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ) .
*-- Mail Subject
CONCATENATE 'Customer details as on'
sy-datum+4(2)
sy-datum+6(2)
sy-datum+0(4)
INTO docdata-obj_descr.
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = gv_tab_lines.
objpack-doc_type = 'RAW'.
APPEND objpack.
*-- Mail Subject
CLEAR : objhead,
wa_objhead.
REFRESH objhead.
wa_objhead-line = lk_filename.
APPEND wa_objhead TO objhead.
reclist-receiver = 'mailid@igroup.com'.
reclist-express = 'X'.
reclist-rec_type = 'U'. "Internet Mail Address
APPEND reclist.
reclist-receiver = 'mailid@igroup.com'.
reclist-copy = 'X'.
reclist-express = 'X'.
reclist-rec_type = 'U'. "Internet Mail Address
APPEND reclist.
*-- Creation of the document attachment
CONCATENATE 'Customer'
'Country'
'Name'
INTO objbin1-line
SEPARATED BY lk_tab_char.
CONCATENATE objbin1-line lk_cr_char
INTO objbin1-line.
CONDENSE objbin1-line.
APPEND objbin1.
APPEND: INITIAL LINE TO objbin1.
*-- Creation of the document body
LOOP AT it_kna1.
DATA:lv_tot_approval(20) TYPE c,
lv_sno(3) TYPE c.
lv_sno = lv_sno + 1.
CONCATENATE it_kna1-kunnr
it_kna1-land1
it_kna1-name1
INTO objbin1-line
SEPARATED BY lk_tab_char.
CONCATENATE objbin1-line lk_cr_char
INTO objbin1-line.
CONDENSE objbin1-line.
APPEND objbin1.
CLEAR : objbin1.
ENDLOOP.
DESCRIBE TABLE objbin1 LINES tab_lines.
tab_lines = tab_lines + 50.
objpack-doc_size = tab_lines * 255 .
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 1.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = lk_xls_extension.
objpack-obj_name = lk_filename.
objpack-obj_descr = lk_filename.
APPEND objpack.
*-- To avoid Junk Characters
LOOP AT objbin1.
DATA:lv_buffer TYPE xstring.
CLEAR lv_buffer.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
text = objbin1-line
IMPORTING
buffer = lv_buffer
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc = 0.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_buffer
TABLES
binary_tab = objbin_tmp.
APPEND LINES OF objbin_tmp TO objbin_final.
ENDIF.
ENDLOOP.
*-- FM to send mail
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = docdata
commit_work = 'X'
TABLES
packing_list = objpack
object_header = objhead
contents_txt = objtxt
contents_hex = objbin_final
receivers = 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 <> 0.
MESSAGE 'Mail was sent successfully' TYPE 'I'.
ELSE.
MESSAGE 'Mail sent successfully' TYPE 'I'.
ENDIF.
No comments:
Post a Comment