Application Development 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: 

Send mail with attachment

Former Member
0 Kudos

Hello all.

I have a problem that i dont know how to resolve: I need to send an email to some adresses with an attachment ( an excel file stored on the server's drive) How can it be done?

The email has to be sent by a job that should do this operation each day.

Thank you,

Cristian.

Message was edited by:

Cristian Boartes

1 ACCEPTED SOLUTION

Former Member
0 Kudos

HI ,

Refer these threads,

hope this helps.

4 REPLIES 4

Former Member
0 Kudos

see this

Sending mail with attachment

*

  • This program will allowed you to send email with attachment.

  • First, specify the attachment file from your local hardisk and execute.

  • Next, specify the sender email address and click the send button.

report y_cr17_mail.

data method1 like sy-ucomm.

data g_user like soudnamei1.

data g_user_data like soudatai1.

data g_owner like soud-usrnam.

data g_receipients like soos1 occurs 0 with header line.

data g_document like sood4 .

data g_header like sood2.

data g_folmam like sofm2.

data g_objcnt like soli occurs 0 with header line.

data g_objhead like soli occurs 0 with header line.

data g_objpara like selc occurs 0 with header line.

data g_objparb like soop1 occurs 0 with header line.

data g_attachments like sood5 occurs 0 with header line.

data g_references like soxrl occurs 0 with header line.

data g_authority like sofa-usracc.

data g_ref_document like sood4.

data g_new_parent like soodk.

data: begin of g_files occurs 10 ,

text(4096) type c,

end of g_files.

data : fold_number(12) type c,

fold_yr(2) type c,

fold_type(3) type c.

parameters ws_file(4096) type c default 'c:\debugger.txt'.

  • Can me any file fromyour pc ....either xls or word or ppt etc ...

g_user-sapname = sy-uname.

call function 'SO_USER_READ_API1'

exporting

user = g_user

  • PREPARE_FOR_FOLDER_ACCESS = ' '

importing

user_data = g_user_data

  • EXCEPTIONS

  • USER_NOT_EXIST = 1

  • PARAMETER_ERROR = 2

  • X_ERROR = 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.

fold_type = g_user_data-outboxfol+0(3).

fold_yr = g_user_data-outboxfol+3(2).

fold_number = g_user_data-outboxfol+5(12).

clear g_files.

refresh : g_objcnt,

g_objhead,

g_objpara,

g_objparb,

g_receipients,

g_attachments,

g_references,

g_files.

method1 = 'SAVE'.

g_document-foltp = fold_type.

g_document-folyr = fold_yr.

g_document-folno = fold_number.

g_document-objtp = g_user_data-object_typ.

*g_document-OBJYR = '27'.

*g_document-OBJNO = '000000002365'.

*g_document-OBJNAM = 'MESSAGE'.

g_document-objdes = 'sap-img.com testing by program'.

g_document-folrg = 'O'.

*g_document-okcode = 'CHNG'.

g_document-objlen = '0'.

g_document-file_ext = 'TXT'.

g_header-objdes = 'sap-img.com testing by program'.

g_header-file_ext = 'TXT'.

call function 'SO_DOCUMENT_REPOSITORY_MANAGER'

exporting

method = method1

office_user = sy-uname

ref_document = g_ref_document

new_parent = g_new_parent

importing

authority = g_authority

tables

objcont = g_objcnt

objhead = g_objhead

objpara = g_objpara

objparb = g_objparb

recipients = g_receipients

attachments = g_attachments

references = g_references

files = g_files

changing

document = g_document

header_data = g_header

  • FOLMEM_DATA =

  • RECEIVE_DATA =

.

  • File from the pc to send...

method1 = 'ATTCREATEFROMPC'.

g_files-text = ws_file.

append g_files.

call function 'SO_DOCUMENT_REPOSITORY_MANAGER'

exporting

method = method1

office_user = g_owner

ref_document = g_ref_document

new_parent = g_new_parent

importing

authority = g_authority

tables

objcont = g_objcnt

objhead = g_objhead

objpara = g_objpara

objparb = g_objparb

recipients = g_receipients

attachments = g_attachments

references = g_references

files = g_files

changing

document = g_document

header_data = g_header

.

method1 = 'SEND'.

g_receipients-recnam = 'MK085'.

g_receipients-recesc = 'B'.

g_receipients-sndex = 'X'.

append g_receipients.

call function 'SO_DOCUMENT_REPOSITORY_MANAGER'

exporting

method = method1

office_user = g_owner

ref_document = g_ref_document

new_parent = g_new_parent

importing

authority = g_authority

tables

objcont = g_objcnt

objhead = g_objhead

objpara = g_objpara

objparb = g_objparb

recipients = g_receipients

attachments = g_attachments

references = g_references

files = g_files

changing

document = g_document

header_data = g_header.

*-- End of Program

<b>also try this one for background scheduling the same</b>

Sending mail with attachment report in Background

Pay attention because it’s working with output list from spool converted to pdf.

=================================================================================

z_send_email_fax_global

FUNCTION-POOL z_gfaian_mail_fax. “MESSAGE-ID ..

*———————————————————————–

  • WORK TABLE AREAS

*———————————————————————–

TABLES: tsp01.

*———————————————————————–

  • INTERNAL TABLES

*———————————————————————–

DATA: lt_rec_tab LIKE STANDARD TABLE OF soos1 WITH HEADER LINE,

lt_note_text LIKE STANDARD TABLE OF soli WITH HEADER LINE,

lt_attachments LIKE STANDARD TABLE OF sood5 WITH HEADER LINE.

DATA: lt_objcont LIKE STANDARD TABLE OF soli WITH HEADER LINE,

lt_objhead LIKE STANDARD TABLE OF soli WITH HEADER LINE.

DATA: pdf_format LIKE STANDARD TABLE OF tline WITH HEADER LINE.

TYPES: BEGIN OF y_files,

file(60) TYPE c,

END OF y_files.

DATA: lt_files TYPE STANDARD TABLE OF y_files WITH HEADER LINE.

DATA: l_objcont LIKE soli OCCURS 0 WITH HEADER LINE.

DATA: l_objhead LIKE soli OCCURS 0 WITH HEADER LINE.

*———————————————————————–

  • STRUCTURES

*———————————————————————–

DATA: folder_id LIKE soodk,

object_id LIKE soodk,

link_folder_id LIKE soodk,

g_document LIKE sood4,

  • g_header_data LIKE sood2,

g_folmem_data LIKE sofm2,

g_header_data LIKE sood2,

g_receive_data LIKE soos6,

g_ref_document LIKE sood4,

g_new_parent LIKE soodk,

l_folder_id LIKE sofdk,

v_email(50).

DATA: hd_dat like sood1.

*———————————————————————–

  • VARIABLES

*———————————————————————–

DATA: client LIKE tst01-dclient,

name LIKE tst01-dname,

objtype LIKE rststype-type,

type LIKE rststype-type.

DATA: numbytes TYPE i,

arc_idx LIKE toa_dara,

pdfspoolid LIKE tsp01-rqident,

jobname LIKE tbtcjob-jobname,

jobcount LIKE tbtcjob-jobcount,

is_otf.

DATA: outbox_flag LIKE sonv-flag VALUE ‘X’,

store_flag LIKE sonv-flag,

delete_flag LIKE sonv-flag,

owner LIKE soud-usrnam,

on LIKE sonv-flag VALUE ‘X’,

sent_to_all LIKE sonv-flag,

g_authority LIKE sofa-usracc,

w_objdes LIKE sood4-objdes.

DATA: c_file LIKE rlgrap-filename,

n_spool(6) TYPE n.

DATA: cancel.

DATA: desired_type LIKE sood-objtp,

real_type LIKE sood-objtp,

attach_type LIKE sood-objtp,

otf LIKE sood-objtp VALUE ‘OTF’, ” SAPscript Ausgabeformat

ali LIKE sood-objtp VALUE ‘ALI’. ” ABAP lists

*———————————————————————–

  • CONSTANTS

*———————————————————————–

CONSTANTS: ou_fol LIKE sofh-folrg VALUE ‘O’,

c_objtp LIKE g_document-objtp VALUE ‘RAW’,

c_file_ext LIKE g_document-file_ext VALUE ‘TXT’.

=================================================================================

z_send_email_fax2

FUNCTION z_faian_mail_fax2.

*”———————————————————————-

”Interface local:

*” IMPORTING

*” REFERENCE(SRC_SPOOLID) LIKE TSP01-RQIDENT

*” REFERENCE(FAX_MAIL_NUMBER) TYPE SO_NAME

*” REFERENCE(HEADER_MAIL) TYPE SO_OBJ_DES

*” REFERENCE(OBJECT_TYPE) TYPE SO_ESCAPE

*” TABLES

*” LT_BODY_EMAIL STRUCTURE SOLI

*” EXCEPTIONS

*” ERR_NO_ABAP_SPOOLJOB

*”———————————————————————-

  • Fist part: Verify if the spool really exists

SELECT SINGLE * FROM tsp01 WHERE rqident = src_spoolid.

IF sy-subrc NE 0.

RAISE err_no_abap_spooljob. “doesn’t exist

ELSE.

client = tsp01-rqclient.

name = tsp01-rqo1name.

CALL FUNCTION ‘RSTS_GET_ATTRIBUTES’

EXPORTING

authority = ‘SP01&#8242;

client = client

name = name

part = 1

IMPORTING

type = type

objtype = objtype

EXCEPTIONS

fb_error = 1

fb_rsts_other = 2

no_object = 3

no_permission = 4

OTHERS = 5.

IF objtype(3) = ‘OTF’.

desired_type = otf.

ELSE.

desired_type = ali.

ENDIF.

CALL FUNCTION ‘RSPO_RETURN_SPOOLJOB’

EXPORTING

rqident = src_spoolid

desired_type = desired_type

IMPORTING

real_type = real_type

TABLES

buffer = l_objcont

EXCEPTIONS

no_such_job = 14

type_no_match = 94

job_contains_no_data = 54

no_permission = 21

can_not_access = 21

read_error = 54.

IF sy-subrc EQ 0.

attach_type = real_type.

ENDIF.

CALL FUNCTION ‘SO_FOLDER_ROOT_ID_GET’

EXPORTING

owner = sy-uname

region = ou_fol

IMPORTING

folder_id = l_folder_id

EXCEPTIONS

OTHERS = 5.

  • fill out informations about the header of the email

CLEAR: g_document.

g_document-foltp = l_folder_id-foltp.

g_document-folyr = l_folder_id-folyr.

g_document-folno = l_folder_id-folno.

g_document-objtp = c_objtp.

g_document-objdes = header_mail.

g_document-file_ext = c_file_ext.

g_header_data-objdes = header_mail.

CALL FUNCTION ‘SO_DOCUMENT_REPOSITORY_MANAGER’

EXPORTING

method = ‘SAVE’

office_user = sy-uname

IMPORTING

authority = g_authority

TABLES

objcont = lt_body_email

attachments = lt_attachments

CHANGING

document = g_document

header_data = g_header_data

EXCEPTIONS

OTHERS = 1.

folder_id-objtp = l_folder_id-foltp.

folder_id-objyr = l_folder_id-folyr.

folder_id-objno = l_folder_id-folno.

object_id-objtp = c_objtp.

object_id-objyr = g_document-objyr.

object_id-objno = g_document-objno.

link_folder_id-objtp = l_folder_id-foltp.

link_folder_id-objyr = l_folder_id-folyr.

link_folder_id-objno = l_folder_id-folno.

REFRESH lt_rec_tab.

  • CLEAR lt_rec_tab.

  • lt_rec_tab-sel = ‘X’.

  • lt_rec_tab-recesc = object_type. “This field for FAX/MAIL

  • lt_rec_tab-recnam = ‘U-’.

  • lt_rec_tab-deliver = ‘X’.

  • lt_rec_tab-not_deli = ‘X’.

  • lt_rec_tab-read = ‘X’.

  • lt_rec_tab-mailstatus = ‘E’.

  • lt_rec_tab-adr_name = fax_mail_number.

  • lt_rec_tab-sortfield = fax_mail_number.

  • lt_rec_tab-recextnam = fax_mail_number.

  • lt_rec_tab-sortclass = ‘5&#8242;.

  • APPEND lt_rec_tab.

lt_rec_tab-recextnam = fax_mail_number.

lt_rec_tab-recesc = object_type.

lt_rec_tab-sndart = ‘INT’.

lt_rec_tab-sndpri = 1.

APPEND lt_rec_tab.

lt_files-file = c_file.

APPEND lt_files.

  • begin of insertion by faianf01

hd_dat-objdes = header_mail.

CALL FUNCTION ‘SO_ATTACHMENT_INSERT’

EXPORTING

object_id = object_id

attach_type = attach_type

object_hd_change = hd_dat

owner = sy-uname

TABLES

objcont = l_objcont

objhead = l_objhead

EXCEPTIONS

active_user_not_exist = 35

communication_failure = 71

object_type_not_exist = 17

operation_no_authorization = 21

owner_not_exist = 22

parameter_error = 23

substitute_not_active = 31

substitute_not_defined = 32

system_failure = 72

x_error = 1000.

IF sy-subrc > 0.

ENDIF.

  • end of insertion by faianf01

  • send email from SAPOFFICE

CALL FUNCTION ‘SO_OBJECT_SEND’

EXPORTING

folder_id = folder_id

object_id = object_id

outbox_flag = outbox_flag

link_folder_id = link_folder_id

owner = sy-uname

  • check_send_authority = ‘X’

TABLES

receivers = lt_rec_tab

  • note_text = lt_note_text

EXCEPTIONS

active_user_not_exist = 35

communication_failure = 71

component_not_available = 1

folder_no_authorization = 5

folder_not_exist = 6

forwarder_not_exist = 8

object_no_authorization = 13

object_not_exist = 14

object_not_sent = 15

operation_no_authorization = 21

owner_not_exist = 22

parameter_error = 23

substitute_not_active = 31

substitute_not_defined = 32

system_failure = 72

too_much_receivers = 73

user_not_exist = 35.

ENDIF.

ENDFUNCTION.

=================================================================================

z_send_email_fax

FUNCTION ZCBFS_SEND_MAIL.

*”———————————————————————-

”Interface local:

*” IMPORTING

*” REFERENCE(SRC_SPOOLID) LIKE TSP01-RQIDENT

*” REFERENCE(HEADER_MAIL) TYPE SO_OBJ_DES

*” TABLES

*” LIST_FAX_MAIL_NUMBER STRUCTURE SOLI

*” EXCEPTIONS

*” ERR_NO_ABAP_SPOOLJOB

*”———————————————————————-

DATA: vg_achou(1) TYPE n.

  • Fist part: Verify if the spool really exists

vg_achou = 1.

DO 60 TIMES.

SELECT SINGLE * FROM tsp01 WHERE rqident = src_spoolid.

IF sy-subrc IS INITIAL.

CLEAR vg_achou.

EXIT.

ELSE.

WAIT UP TO 1 SECONDS.

ENDIF.

ENDDO.

IF vg_achou = 1.

RAISE err_no_abap_spooljob. “doesn’t exist

ENDIF.

client = tsp01-rqclient.

name = tsp01-rqo1name.

CALL FUNCTION ‘RSTS_GET_ATTRIBUTES’

EXPORTING

authority = ‘SP01&#8242;

client = client

name = name

part = 1

IMPORTING

type = type

objtype = objtype

EXCEPTIONS

fb_error = 1

fb_rsts_other = 2

no_object = 3

no_permission = 4

OTHERS = 5.

IF objtype(3) = ‘OTF’.

desired_type = otf.

ELSE.

desired_type = ali.

ENDIF.

CALL FUNCTION ‘RSPO_RETURN_SPOOLJOB’

EXPORTING

rqident = src_spoolid

desired_type = desired_type

IMPORTING

real_type = real_type

TABLES

buffer = l_objcont

EXCEPTIONS

no_such_job = 14

type_no_match = 94

job_contains_no_data = 54

no_permission = 21

can_not_access = 21

read_error = 54.

IF sy-subrc EQ 0.

attach_type = real_type.

ENDIF.

CALL FUNCTION ‘SO_FOLDER_ROOT_ID_GET’

EXPORTING

owner = sy-uname

region = ou_fol

IMPORTING

folder_id = l_folder_id

EXCEPTIONS

OTHERS = 5.

  • fill out informations about the header of the email

CLEAR: g_document.

g_document-foltp = l_folder_id-foltp.

g_document-folyr = l_folder_id-folyr.

g_document-folno = l_folder_id-folno.

g_document-objtp = c_objtp.

g_document-objdes = header_mail.

g_document-file_ext = c_file_ext.

g_header_data-objdes = header_mail.

CALL FUNCTION ‘SO_DOCUMENT_REPOSITORY_MANAGER’

EXPORTING

method = ‘SAVE’

office_user = sy-uname

IMPORTING

authority = g_authority

TABLES

attachments = lt_attachments

CHANGING

document = g_document

header_data = g_header_data

EXCEPTIONS

OTHERS = 1.

folder_id-objtp = l_folder_id-foltp.

folder_id-objyr = l_folder_id-folyr.

folder_id-objno = l_folder_id-folno.

object_id-objtp = c_objtp.

object_id-objyr = g_document-objyr.

object_id-objno = g_document-objno.

link_folder_id-objtp = l_folder_id-foltp.

link_folder_id-objyr = l_folder_id-folyr.

link_folder_id-objno = l_folder_id-folno.

REFRESH lt_rec_tab.

LOOP AT LIST_FAX_MAIL_NUMBER.

lt_rec_tab-recextnam = LIST_FAX_MAIL_NUMBER-LINE.

lt_rec_tab-recesc = ‘U’.

lt_rec_tab-sndart = ‘INT’.

lt_rec_tab-sndpri = 1.

APPEND lt_rec_tab.

ENDLOOP.

lt_files-file = c_file.

APPEND lt_files.

hd_dat-objdes = header_mail.

CALL FUNCTION ‘SO_ATTACHMENT_INSERT’

EXPORTING

object_id = object_id

attach_type = attach_type

object_hd_change = hd_dat

owner = sy-uname

TABLES

objcont = l_objcont

objhead = l_objhead

EXCEPTIONS

active_user_not_exist = 35

communication_failure = 71

object_type_not_exist = 17

operation_no_authorization = 21

owner_not_exist = 22

parameter_error = 23

substitute_not_active = 31

substitute_not_defined = 32

system_failure = 72

x_error = 1000.

IF sy-subrc > 0.

ENDIF.

  • send email from SAPOFFICE

CALL FUNCTION ‘SO_OBJECT_SEND’

EXPORTING

folder_id = folder_id

object_id = object_id

outbox_flag = outbox_flag

link_folder_id = link_folder_id

owner = sy-uname

TABLES

receivers = lt_rec_tab

note_text = lt_note_text

EXCEPTIONS

active_user_not_exist = 35

communication_failure = 71

component_not_available = 1

folder_no_authorization = 5

folder_not_exist = 6

forwarder_not_exist = 8

object_no_authorization = 13

object_not_exist = 14

object_not_sent = 15

operation_no_authorization = 21

owner_not_exist = 22

parameter_error = 23

substitute_not_active = 31

substitute_not_defined = 32

system_failure = 72

too_much_receivers = 73

user_not_exist = 35.

ENDFUNCTION.

regards,

srinivas

<b>*reward for useful answers*</b>

Former Member
0 Kudos

HI ,

Refer these threads,

hope this helps.

Former Member
0 Kudos

Hi,

Please follow the below link,

[Removed by the moderator.]

Regs,

Venkat

Former Member
0 Kudos

Venkat, I looked over your sollution...i am quite new to abap, can it be done as a background job...or to program a job with this program?

Guys, thaks for the liks, i hope i will be able to solve the problem.