‎2008 Aug 15 12:47 PM
How to send a Email to user ID's through a report program and email should contain a attachment??
Please help on this...
‎2008 Aug 15 12:52 PM
Hi Try this..
FORM SEND_EMAIL_PROCESS USING L_FIELD_CATALOG TYPE SLIS_T_FIELDCAT_ALV
L_LAYOUT TYPE SLIS_LAYOUT_ALV
L_SORT_ALV TYPE SLIS_T_SORTINFO_ALV.
DATA:
lf_char TYPE c,
lf_length TYPE i,
lf_rec_len TYPE i,
lf_menge(17) TYPE c,
lwa_disvariant LIKE disvariant,
lwa_is_layout TYPE slis_layout_alv,
lwa_rec(255) TYPE c,
lf_fieldname TYPE lvc_fname,
lf_field_catalog TYPE SLIS_FIELDCAT_ALV,
lwa_sort_alv TYPE SLIS_SORTINFO_ALV,
lwa_sort TYPE LINE OF KKBLO_T_SORTINFO.
DATA: lf_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.
FIELD-SYMBOLS <fs1> TYPE ANY.
CHECK p_varia IS NOT INITIAL.
lwa_disvariant-report = sy-repid.
lwa_disvariant-variant = p_varia.
LOOP AT L_FIELD_CATALOG INTO lf_field_catalog.
MOVE-CORRESPONDING lf_field_catalog TO wf_emailfieldcat.
wf_emailfieldcat-tabname = 'I_TAB'.
APPEND wf_emailfieldcat TO i_emailfieldcat.
CLEAR: wf_emailfieldcat, lf_field_catalog.
ENDLOOP.
IF p_varia IS NOT INITIAL.
CLEAR i_emaillayout.
MOVE-CORRESPONDING L_LAYOUT TO i_emaillayout.
FM returns the modified field catelog based on the selection screen
display variant
CALL FUNCTION 'LT_VARIANT_LOAD'
EXPORTING
I_TABNAME = i_detail_name
I_DIALOG = 'N'
IMPORTING
ET_FIELDCAT = i_emailfieldcat1
ET_SORT = i_sort
ET_FILTER = i_filter
CHANGING
CS_LAYOUT = i_emaillayout
CT_DEFAULT_FIELDCAT = i_emailfieldcat
CS_VARIANT = lwa_disvariant
EXCEPTIONS
WRONG_INPUT = 1
FC_NOT_COMPLETE = 2
NOT_FOUND = 3
OTHERS = 4 .
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
I_EMAILFIELDCAT1[] = i_emailfieldcat[].
LOOP AT L_SORT_ALV INTO lwa_sort_alv.
MOVE-CORRESPONDING lwa_sort_alv TO lwa_sort.
APPEND lwa_sort TO I_SORT.
ENDLOOP.
ENDIF.
Sort by column position
SORT i_emailfieldcat1 BY col_pos.
delete the unselcted field columns in the display variant
DELETE I_EMAILFIELDCAT1 WHERE NO_OUT EQ ABAP_TRUE.
CLEAR lwa_rec.
LOOP AT i_emailfieldcat1 INTO wf_emailfieldcat.
Assign the column heading to the field symbol
ASSIGN COMPONENT 74 OF
STRUCTURE wf_emailfieldcat TO <fs>.
IF lwa_rec IS INITIAL.
CONCATENATE <fs> lf_tab
INTO lwa_rec.
ELSE.
CONCATENATE lwa_rec <fs> lf_tab
INTO lwa_rec.
ENDIF.
ENDLOOP.
CLEAR lf_rec_len.
lf_rec_len = STRLEN( lwa_rec ).
IF lf_rec_len EQ 255.
lwa_rec+253(1) = lf_tab.
lwa_rec+254(1) = space.
ENDIF.
Refresh I_MAIL_FINAL.
CLEAR I_MAIL_FINAL.
LOOP AT I_TAB.
I_MAIL_FINAL-I_BEZEI = I_TAB-I_BEZEI.
I_MAIL_FINAL-BEZEI = I_TAB-BEZEI.
I_MAIL_FINAL-VKGRP = I_TAB-VKGRP.
I_MAIL_FINAL-ERDAT = I_TAB-ERDAT.
I_MAIL_FINAL-ANGDT = I_TAB-ANGDT.
I_MAIL_FINAL-BNDDT = I_TAB-BNDDT.
I_MAIL_FINAL-CUST_INFO = I_TAB-CUST_INFO.
I_MAIL_FINAL-CUST_NAME = I_TAB-CUST_NAME.
I_MAIL_FINAL-ORT01 = I_TAB-ORT01.
I_MAIL_FINAL-REGIO = I_TAB-REGIO.
I_MAIL_FINAL-KUNNR = I_TAB-KUNNR.
I_MAIL_FINAL-BRSCH = I_TAB-BRSCH.
I_MAIL_FINAL-BSTNK = I_TAB-BSTNK.
I_MAIL_FINAL-VBELN = I_TAB-VBELN.
I_MAIL_FINAL-POSNR = I_TAB-POSNR.
I_MAIL_FINAL-AUART = I_TAB-AUART. "SB02+
I_MAIL_FINAL-MATNR = I_TAB-MATNR.
I_MAIL_FINAL-MAKTX = I_TAB-MAKTX.
I_MAIL_FINAL-KSCHL = I_TAB-KSCHL.
I_MAIL_FINAL-KBETR = I_TAB-KBETR.
I_MAIL_FINAL-KPEIN = I_TAB-KPEIN.
I_MAIL_FINAL-KMEIN = I_TAB-KMEIN.
I_MAIL_FINAL-WAERS = I_TAB-WAERS.
I_MAIL_FINAL-KWMENG = I_TAB-KWMENG.
I_MAIL_FINAL-WF_TEXT1 = I_TAB-WF_TEXT1.
I_MAIL_FINAL-VRKME = I_TAB-VRKME.
I_MAIL_FINAL-NETWR = I_TAB-NETWR.
I_MAIL_FINAL-WAERK = I_TAB-WAERK.
I_MAIL_FINAL-ABGRU = I_TAB-ABGRU.
I_MAIL_FINAL-Z_BEZEI = I_TAB-Z_BEZEI.
I_MAIL_FINAL-TXT30 = I_TAB-TXT30.
I_MAIL_FINAL-TXT04 = I_TAB-TXT04.
I_MAIL_FINAL-SAL_PERS = I_TAB-SAL_PERS.
I_MAIL_FINAL-SAL_NAME = I_TAB-SAL_NAME.
I_MAIL_FINAL-ORDER = I_TAB-ORDER.
I_MAIL_FINAL-ORDERITEM = I_TAB-ORDERITEM.
I_MAIL_FINAL-ZZPLINE = I_TAB-ZZPLINE.
I_MAIL_FINAL-ZZPLTEXT = I_TAB-ZZPLTEXT.
I_MAIL_FINAL-ZREP_ACCOUNT = I_TAB-ZREP_ACCOUNT.
I_MAIL_FINAL-NAME = I_TAB-NAME.
I_MAIL_FINAL-VKORG = I_TAB-VKORG.
I_MAIL_FINAL-VKBUR = I_TAB-VKBUR.
I_MAIL_FINAL-BNAME = I_TAB-BNAME.
I_MAIL_FINAL-TELF1 = I_TAB-TELF1.
I_MAIL_FINAL-WERKS = I_TAB-WERKS.
I_MAIL_FINAL-KZWI3 = I_TAB-KZWI3.
I_MAIL_FINAL-GPMS = I_TAB-GPMS.
APPEND I_MAIL_FINAL.
CLEAR I_MAIL_FINAL.
ENDLOOP.
To Sort Data
CALL FUNCTION 'K_KKB_OUTTAB_SORT'
EXPORTING
IT_SORT = I_SORT
TABLES
T_OUTTAB = I_MAIL_FINAL
EXCEPTIONS
SORTFIELD_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT I_MAIL_FINAL .
wf_tabix = sy-tabix.
AT FIRST.
REFRESH: i_rec.
CLEAR wa_rec.
Move the column headings to the email body
MOVE lwa_rec TO wa_rec-data.
APPEND wa_rec TO i_rec.
CLEAR wa_rec.
ENDAT.
This loop will assign the field values to the email body.
LOOP AT i_emailfieldcat1 INTO wf_emailfieldcat.
CLEAR lf_fieldname.
lf_fieldname = wf_emailfieldcat-fieldname.
ASSIGN COMPONENT lf_fieldname OF
STRUCTURE I_MAIL_FINAL TO <fs>.
IF wa_rec-data IS INITIAL.
CONCATENATE <fs> lf_tab
INTO wa_rec-data.
ELSE.
CONCATENATE wa_rec-data <fs> lf_tab
INTO wa_rec-data.
ENDIF.
ENDLOOP.
CLEAR lf_rec_len.
lf_rec_len = STRLEN( wa_rec-data ).
IF lf_rec_len EQ 255.
wa_rec-data+253(1) = lf_tab.
wa_rec-data+254(1) = space.
ENDIF.
APPEND wa_rec TO i_rec.
CLEAR : WA_rec.
ENDLOOP.
PERFORM EMAIL_SEND.
ENDFORM. " SEND_EMAIL_PROCESS
FORM EMAIL_SEND .
DATA : lf_text(50) TYPE c,
lf_obj_name(144) TYPE c,
lf_sy_date TYPE SY-DATUM.
DATA:
i_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
i_objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE,
i_objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
i_reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE,
l_doc_chng LIKE sodocchgi1,
tab_lines LIKE sy-tabix,
doc_size(12) TYPE n,
lwa_receivers TYPE type_somlreci1,
itab_line LIKE tline OCCURS 0 WITH HEADER LINE.
DATA: lf_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
lf_newline TYPE c VALUE cl_abap_char_utilities=>newline.
CLEAR:
i_receivers,
l_doc_chng,
doc_size,
tab_lines,
itab_line,
wf_vend_flag,
lf_sy_date,
lf_obj_name.
REFRESH:
i_receivers,
i_objhead,
i_objbin,
i_objtxt,
i_reclist,
i_objpack,
itab_line.
CLEAR i_receivers.
IF p_read EQ c_x.
i_receivers-notif_read = c_x.
i_receivers-notif_del = c_x.
i_receivers-notif_ndel = c_x.
ENDIF.
i_receivers-rec_type = c_u.
LOOP AT s_email.
IF s_email-low CA '@'.
i_receivers-receiver = s_email-low.
APPEND i_receivers.
ELSE.
i_userid-user = s_email-low.
APPEND i_userid.
ENDIF.
ENDLOOP.
IF NOT i_userid[] IS INITIAL.
PERFORM find_receivers TABLES i_userid.
IF NOT itab_receivers1[] IS INITIAL.
APPEND LINES OF itab_receivers1 TO i_receivers.
ENDIF.
ENDIF.
*-- Rec List
i_reclist[] = i_receivers[].
IF i_reclist[] IS INITIAL.
MESSAGE i000 WITH TEXT-I10.
EXIT.
ENDIF.
**-- Prepare OBJTEXT for Message Body text
i_objtxt = TEXT-M01.
APPEND i_objtxt.
CLEAR i_objtxt.
APPEND i_objtxt.
CLEAR i_objtxt.
i_objtxt = TEXT-M02.
APPEND i_objtxt.
CLEAR i_objtxt.
DESCRIBE TABLE i_objtxt LINES tab_lines.
*-- Header Length
READ TABLE i_objtxt INDEX tab_lines.
l_doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( i_objtxt ).
*--Attachment
l_doc_chng-obj_name = TEXT-M03.
*-- Prepare the packing list for the body of the text
It is a text document hence the transfer bin flag should be cleared
i_objpack-transf_bin = space.
The document needs no header (head_num = 0)
i_objpack-head_start = 1.
i_objpack-head_num = 0.
but it has a body
i_objpack-body_start = 1.
i_objpack-body_num = tab_lines.
*of type RAW
i_objpack-doc_type = c_raw.
APPEND i_objpack.
Email subject text population
lf_text = TEXT-M04.
l_doc_chng-obj_descr = lf_text.
*--Attachment addition
LOOP AT i_rec INTO wa_rec.
CONCATENATE wa_rec
lf_newline
INTO i_objbin.
APPEND i_objbin.
CLEAR i_objbin.
ENDLOOP.
lf_sy_date = sy-datum.
CONCATENATE text-m06 lf_sy_date INTO lf_obj_name.
*-- Prepare the packing list for the attachment
DESCRIBE TABLE i_objbin LINES tab_lines.
It is binary document
i_objpack-transf_bin = c_x.
we need header
i_objpack-head_start = 1.
i_objpack-head_num = 1.
body
i_objpack-body_start = 1.
i_objpack-body_num = tab_lines.
i_objpack-doc_type = 'XLS'.
i_objpack-obj_name = TEXT-M05.
i_objpack-obj_descr = lf_obj_name.
i_objpack-obj_langu = wf_spras.
READ TABLE i_objbin INDEX tab_lines.
doc_size = ( tab_lines - 1 ) * 255 + STRLEN( i_objbin ).
i_objpack-doc_size = doc_size.
APPEND i_objpack.
*********************************************************************
Send the document by calling the SAPoffice API1 module *
for sending documents with attachments *
as of 6.10 the flag 'commit_work' must be set *
*********************************************************************
DATA: l_sent_to_all LIKE sonv-flag.
l_doc_chng-obj_langu = wf_spras.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = l_doc_chng
commit_work = c_x
IMPORTING
sent_to_all = l_sent_to_all
TABLES
packing_list = i_objpack
object_header = i_objhead
contents_bin = i_objbin
contents_txt = i_objtxt
receivers = i_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
operation_no_authorization = 4
OTHERS = 99.
CASE SY-SUBRC.
WHEN 0.
MESSAGE i000 WITH TEXT-I20.
WHEN 1.
MESSAGE i000 WITH TEXT-I21.
EXIT.
WHEN 2.
MESSAGE i000 WITH TEXT-I22.
EXIT.
WHEN 4.
MESSAGE i000 WITH TEXT-I23.
EXIT.
WHEN OTHERS.
MESSAGE i000 WITH TEXT-I24.
EXIT.
ENDCASE.
ENDFORM. " EMAIL_SEND
Thanks,
Gaurav J.
‎2008 Aug 15 12:52 PM
Hi Try this..
FORM SEND_EMAIL_PROCESS USING L_FIELD_CATALOG TYPE SLIS_T_FIELDCAT_ALV
L_LAYOUT TYPE SLIS_LAYOUT_ALV
L_SORT_ALV TYPE SLIS_T_SORTINFO_ALV.
DATA:
lf_char TYPE c,
lf_length TYPE i,
lf_rec_len TYPE i,
lf_menge(17) TYPE c,
lwa_disvariant LIKE disvariant,
lwa_is_layout TYPE slis_layout_alv,
lwa_rec(255) TYPE c,
lf_fieldname TYPE lvc_fname,
lf_field_catalog TYPE SLIS_FIELDCAT_ALV,
lwa_sort_alv TYPE SLIS_SORTINFO_ALV,
lwa_sort TYPE LINE OF KKBLO_T_SORTINFO.
DATA: lf_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.
FIELD-SYMBOLS <fs1> TYPE ANY.
CHECK p_varia IS NOT INITIAL.
lwa_disvariant-report = sy-repid.
lwa_disvariant-variant = p_varia.
LOOP AT L_FIELD_CATALOG INTO lf_field_catalog.
MOVE-CORRESPONDING lf_field_catalog TO wf_emailfieldcat.
wf_emailfieldcat-tabname = 'I_TAB'.
APPEND wf_emailfieldcat TO i_emailfieldcat.
CLEAR: wf_emailfieldcat, lf_field_catalog.
ENDLOOP.
IF p_varia IS NOT INITIAL.
CLEAR i_emaillayout.
MOVE-CORRESPONDING L_LAYOUT TO i_emaillayout.
FM returns the modified field catelog based on the selection screen
display variant
CALL FUNCTION 'LT_VARIANT_LOAD'
EXPORTING
I_TABNAME = i_detail_name
I_DIALOG = 'N'
IMPORTING
ET_FIELDCAT = i_emailfieldcat1
ET_SORT = i_sort
ET_FILTER = i_filter
CHANGING
CS_LAYOUT = i_emaillayout
CT_DEFAULT_FIELDCAT = i_emailfieldcat
CS_VARIANT = lwa_disvariant
EXCEPTIONS
WRONG_INPUT = 1
FC_NOT_COMPLETE = 2
NOT_FOUND = 3
OTHERS = 4 .
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
I_EMAILFIELDCAT1[] = i_emailfieldcat[].
LOOP AT L_SORT_ALV INTO lwa_sort_alv.
MOVE-CORRESPONDING lwa_sort_alv TO lwa_sort.
APPEND lwa_sort TO I_SORT.
ENDLOOP.
ENDIF.
Sort by column position
SORT i_emailfieldcat1 BY col_pos.
delete the unselcted field columns in the display variant
DELETE I_EMAILFIELDCAT1 WHERE NO_OUT EQ ABAP_TRUE.
CLEAR lwa_rec.
LOOP AT i_emailfieldcat1 INTO wf_emailfieldcat.
Assign the column heading to the field symbol
ASSIGN COMPONENT 74 OF
STRUCTURE wf_emailfieldcat TO <fs>.
IF lwa_rec IS INITIAL.
CONCATENATE <fs> lf_tab
INTO lwa_rec.
ELSE.
CONCATENATE lwa_rec <fs> lf_tab
INTO lwa_rec.
ENDIF.
ENDLOOP.
CLEAR lf_rec_len.
lf_rec_len = STRLEN( lwa_rec ).
IF lf_rec_len EQ 255.
lwa_rec+253(1) = lf_tab.
lwa_rec+254(1) = space.
ENDIF.
Refresh I_MAIL_FINAL.
CLEAR I_MAIL_FINAL.
LOOP AT I_TAB.
I_MAIL_FINAL-I_BEZEI = I_TAB-I_BEZEI.
I_MAIL_FINAL-BEZEI = I_TAB-BEZEI.
I_MAIL_FINAL-VKGRP = I_TAB-VKGRP.
I_MAIL_FINAL-ERDAT = I_TAB-ERDAT.
I_MAIL_FINAL-ANGDT = I_TAB-ANGDT.
I_MAIL_FINAL-BNDDT = I_TAB-BNDDT.
I_MAIL_FINAL-CUST_INFO = I_TAB-CUST_INFO.
I_MAIL_FINAL-CUST_NAME = I_TAB-CUST_NAME.
I_MAIL_FINAL-ORT01 = I_TAB-ORT01.
I_MAIL_FINAL-REGIO = I_TAB-REGIO.
I_MAIL_FINAL-KUNNR = I_TAB-KUNNR.
I_MAIL_FINAL-BRSCH = I_TAB-BRSCH.
I_MAIL_FINAL-BSTNK = I_TAB-BSTNK.
I_MAIL_FINAL-VBELN = I_TAB-VBELN.
I_MAIL_FINAL-POSNR = I_TAB-POSNR.
I_MAIL_FINAL-AUART = I_TAB-AUART. "SB02+
I_MAIL_FINAL-MATNR = I_TAB-MATNR.
I_MAIL_FINAL-MAKTX = I_TAB-MAKTX.
I_MAIL_FINAL-KSCHL = I_TAB-KSCHL.
I_MAIL_FINAL-KBETR = I_TAB-KBETR.
I_MAIL_FINAL-KPEIN = I_TAB-KPEIN.
I_MAIL_FINAL-KMEIN = I_TAB-KMEIN.
I_MAIL_FINAL-WAERS = I_TAB-WAERS.
I_MAIL_FINAL-KWMENG = I_TAB-KWMENG.
I_MAIL_FINAL-WF_TEXT1 = I_TAB-WF_TEXT1.
I_MAIL_FINAL-VRKME = I_TAB-VRKME.
I_MAIL_FINAL-NETWR = I_TAB-NETWR.
I_MAIL_FINAL-WAERK = I_TAB-WAERK.
I_MAIL_FINAL-ABGRU = I_TAB-ABGRU.
I_MAIL_FINAL-Z_BEZEI = I_TAB-Z_BEZEI.
I_MAIL_FINAL-TXT30 = I_TAB-TXT30.
I_MAIL_FINAL-TXT04 = I_TAB-TXT04.
I_MAIL_FINAL-SAL_PERS = I_TAB-SAL_PERS.
I_MAIL_FINAL-SAL_NAME = I_TAB-SAL_NAME.
I_MAIL_FINAL-ORDER = I_TAB-ORDER.
I_MAIL_FINAL-ORDERITEM = I_TAB-ORDERITEM.
I_MAIL_FINAL-ZZPLINE = I_TAB-ZZPLINE.
I_MAIL_FINAL-ZZPLTEXT = I_TAB-ZZPLTEXT.
I_MAIL_FINAL-ZREP_ACCOUNT = I_TAB-ZREP_ACCOUNT.
I_MAIL_FINAL-NAME = I_TAB-NAME.
I_MAIL_FINAL-VKORG = I_TAB-VKORG.
I_MAIL_FINAL-VKBUR = I_TAB-VKBUR.
I_MAIL_FINAL-BNAME = I_TAB-BNAME.
I_MAIL_FINAL-TELF1 = I_TAB-TELF1.
I_MAIL_FINAL-WERKS = I_TAB-WERKS.
I_MAIL_FINAL-KZWI3 = I_TAB-KZWI3.
I_MAIL_FINAL-GPMS = I_TAB-GPMS.
APPEND I_MAIL_FINAL.
CLEAR I_MAIL_FINAL.
ENDLOOP.
To Sort Data
CALL FUNCTION 'K_KKB_OUTTAB_SORT'
EXPORTING
IT_SORT = I_SORT
TABLES
T_OUTTAB = I_MAIL_FINAL
EXCEPTIONS
SORTFIELD_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT I_MAIL_FINAL .
wf_tabix = sy-tabix.
AT FIRST.
REFRESH: i_rec.
CLEAR wa_rec.
Move the column headings to the email body
MOVE lwa_rec TO wa_rec-data.
APPEND wa_rec TO i_rec.
CLEAR wa_rec.
ENDAT.
This loop will assign the field values to the email body.
LOOP AT i_emailfieldcat1 INTO wf_emailfieldcat.
CLEAR lf_fieldname.
lf_fieldname = wf_emailfieldcat-fieldname.
ASSIGN COMPONENT lf_fieldname OF
STRUCTURE I_MAIL_FINAL TO <fs>.
IF wa_rec-data IS INITIAL.
CONCATENATE <fs> lf_tab
INTO wa_rec-data.
ELSE.
CONCATENATE wa_rec-data <fs> lf_tab
INTO wa_rec-data.
ENDIF.
ENDLOOP.
CLEAR lf_rec_len.
lf_rec_len = STRLEN( wa_rec-data ).
IF lf_rec_len EQ 255.
wa_rec-data+253(1) = lf_tab.
wa_rec-data+254(1) = space.
ENDIF.
APPEND wa_rec TO i_rec.
CLEAR : WA_rec.
ENDLOOP.
PERFORM EMAIL_SEND.
ENDFORM. " SEND_EMAIL_PROCESS
FORM EMAIL_SEND .
DATA : lf_text(50) TYPE c,
lf_obj_name(144) TYPE c,
lf_sy_date TYPE SY-DATUM.
DATA:
i_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
i_objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE,
i_objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
i_reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE,
l_doc_chng LIKE sodocchgi1,
tab_lines LIKE sy-tabix,
doc_size(12) TYPE n,
lwa_receivers TYPE type_somlreci1,
itab_line LIKE tline OCCURS 0 WITH HEADER LINE.
DATA: lf_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
lf_newline TYPE c VALUE cl_abap_char_utilities=>newline.
CLEAR:
i_receivers,
l_doc_chng,
doc_size,
tab_lines,
itab_line,
wf_vend_flag,
lf_sy_date,
lf_obj_name.
REFRESH:
i_receivers,
i_objhead,
i_objbin,
i_objtxt,
i_reclist,
i_objpack,
itab_line.
CLEAR i_receivers.
IF p_read EQ c_x.
i_receivers-notif_read = c_x.
i_receivers-notif_del = c_x.
i_receivers-notif_ndel = c_x.
ENDIF.
i_receivers-rec_type = c_u.
LOOP AT s_email.
IF s_email-low CA '@'.
i_receivers-receiver = s_email-low.
APPEND i_receivers.
ELSE.
i_userid-user = s_email-low.
APPEND i_userid.
ENDIF.
ENDLOOP.
IF NOT i_userid[] IS INITIAL.
PERFORM find_receivers TABLES i_userid.
IF NOT itab_receivers1[] IS INITIAL.
APPEND LINES OF itab_receivers1 TO i_receivers.
ENDIF.
ENDIF.
*-- Rec List
i_reclist[] = i_receivers[].
IF i_reclist[] IS INITIAL.
MESSAGE i000 WITH TEXT-I10.
EXIT.
ENDIF.
**-- Prepare OBJTEXT for Message Body text
i_objtxt = TEXT-M01.
APPEND i_objtxt.
CLEAR i_objtxt.
APPEND i_objtxt.
CLEAR i_objtxt.
i_objtxt = TEXT-M02.
APPEND i_objtxt.
CLEAR i_objtxt.
DESCRIBE TABLE i_objtxt LINES tab_lines.
*-- Header Length
READ TABLE i_objtxt INDEX tab_lines.
l_doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( i_objtxt ).
*--Attachment
l_doc_chng-obj_name = TEXT-M03.
*-- Prepare the packing list for the body of the text
It is a text document hence the transfer bin flag should be cleared
i_objpack-transf_bin = space.
The document needs no header (head_num = 0)
i_objpack-head_start = 1.
i_objpack-head_num = 0.
but it has a body
i_objpack-body_start = 1.
i_objpack-body_num = tab_lines.
*of type RAW
i_objpack-doc_type = c_raw.
APPEND i_objpack.
Email subject text population
lf_text = TEXT-M04.
l_doc_chng-obj_descr = lf_text.
*--Attachment addition
LOOP AT i_rec INTO wa_rec.
CONCATENATE wa_rec
lf_newline
INTO i_objbin.
APPEND i_objbin.
CLEAR i_objbin.
ENDLOOP.
lf_sy_date = sy-datum.
CONCATENATE text-m06 lf_sy_date INTO lf_obj_name.
*-- Prepare the packing list for the attachment
DESCRIBE TABLE i_objbin LINES tab_lines.
It is binary document
i_objpack-transf_bin = c_x.
we need header
i_objpack-head_start = 1.
i_objpack-head_num = 1.
body
i_objpack-body_start = 1.
i_objpack-body_num = tab_lines.
i_objpack-doc_type = 'XLS'.
i_objpack-obj_name = TEXT-M05.
i_objpack-obj_descr = lf_obj_name.
i_objpack-obj_langu = wf_spras.
READ TABLE i_objbin INDEX tab_lines.
doc_size = ( tab_lines - 1 ) * 255 + STRLEN( i_objbin ).
i_objpack-doc_size = doc_size.
APPEND i_objpack.
*********************************************************************
Send the document by calling the SAPoffice API1 module *
for sending documents with attachments *
as of 6.10 the flag 'commit_work' must be set *
*********************************************************************
DATA: l_sent_to_all LIKE sonv-flag.
l_doc_chng-obj_langu = wf_spras.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = l_doc_chng
commit_work = c_x
IMPORTING
sent_to_all = l_sent_to_all
TABLES
packing_list = i_objpack
object_header = i_objhead
contents_bin = i_objbin
contents_txt = i_objtxt
receivers = i_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
operation_no_authorization = 4
OTHERS = 99.
CASE SY-SUBRC.
WHEN 0.
MESSAGE i000 WITH TEXT-I20.
WHEN 1.
MESSAGE i000 WITH TEXT-I21.
EXIT.
WHEN 2.
MESSAGE i000 WITH TEXT-I22.
EXIT.
WHEN 4.
MESSAGE i000 WITH TEXT-I23.
EXIT.
WHEN OTHERS.
MESSAGE i000 WITH TEXT-I24.
EXIT.
ENDCASE.
ENDFORM. " EMAIL_SEND
Thanks,
Gaurav J.
‎2008 Aug 15 5:40 PM
‎2008 Aug 15 2:45 PM
Just read the Function module documentation, there is a simple example in it.
SO_NEW_DOCUMENT_ATT_SEND_API1
it will be useful for your future purpose.