Skip to Content
avatar image
Former Member

Send mail with attachment

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

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

4 Answers

  • avatar image
    Former Member
    Aug 17, 2007 at 08:51 AM
    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Aug 17, 2007 at 08:49 AM

    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>

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Aug 17, 2007 at 08:54 AM

    Hi,

    Please follow the below link,

    http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm

    Regs,

    Venkat

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Aug 17, 2007 at 09:01 AM

    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.

    Add comment
    10|10000 characters needed characters exceeded