Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Email

Former Member
0 Likes
592

How to send a Email to user ID's through a report program and email should contain a attachment??

Please help on this...

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
564

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.

3 REPLIES 3
Read only

Former Member
0 Likes
565

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.

Read only

0 Likes
564

Ah-ha.....

Read only

Former Member
0 Likes
564

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.