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

Sending mails to Internal SAP ID using SO_DOCUMENT_SEND_API1!!

Former Member
0 Likes
2,734

Hi

We are trying to send mail to SAP Internal Id ( SAP INBOX) using FM SO_DOCUMENT_SEND_API1 , but it doesn't seem to be working as we tried passing diff add type and receivers related info....it works fine for internet address...

if anyone have done the same ie sending mails to SAP Inbox...

reuqest your help

Regards

Gunjan

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,006

<b>Send external email from within ABAP program </b>

The code below demonstrates how to send an email to an external email address([email protected])

*&---------------------------------------------------------------------*
*& Report  ZSENDEMAIL                                                  *
*&                                                                     *
*&---------------------------------------------------------------------*
*& Example of sending external email via SAPCONNECT                    *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  zsendemail                    .

PARAMETERS: psubject(40) type c default  'Hello',
            p_email(40)   type c default '[email protected]' .

data:   it_packing_list like sopcklsti1 occurs 0 with header line,
        it_contents like solisti1 occurs 0 with header line,
        it_receivers like somlreci1 occurs 0 with header line,
        it_attachment like solisti1 occurs 0 with header line,
        gd_cnt type i,
        gd_sent_all(1) type c,
        gd_doc_data like sodocchgi1,
        gd_error type sy-subrc.

data:   it_message type standard table of SOLISTI1 initial size 0
                with header line.

***********************************************************************
*START-OF-SELECTION.
START-OF-SELECTION.

Perform populate_message_table.

*Send email message, although is not sent from SAP until mail send
*program has been executed(rsconn01)
PERFORM send_email_message.

*Instructs mail send program for SAPCONNECT to send email(rsconn01)
perform initiate_mail_execute_program.


*&---------------------------------------------------------------------*
*&      Form  POPULATE_MESSAGE_TABLE
*&---------------------------------------------------------------------*
*       Adds text to email text table
*----------------------------------------------------------------------*
form populate_message_table.
  Append 'Email line 1' to it_message.
  Append 'Email line 2' to it_message.
  Append 'Email line 3' to it_message.
  Append 'Email line 4' to it_message.
endform.                    " POPULATE_MESSAGE_TABLE


*&---------------------------------------------------------------------*
*&      Form  SEND_EMAIL_MESSAGE
*&---------------------------------------------------------------------*
*       Send email message
*----------------------------------------------------------------------*
form send_email_message.
* Fill the document data.
  gd_doc_data-doc_size = 1.

* Populate the subject/generic message attributes
  gd_doc_data-obj_langu = sy-langu.
  gd_doc_data-obj_name  = 'SAPRPT'.
  gd_doc_data-obj_descr = psubject.
  gd_doc_data-sensitivty = 'F'.

* Describe the body of the message
  clear it_packing_list.
  refresh it_packing_list.
  it_packing_list-transf_bin = space.
  it_packing_list-head_start = 1.
  it_packing_list-head_num = 0.
  it_packing_list-body_start = 1.
  describe table it_message lines it_packing_list-body_num.
  it_packing_list-doc_type = 'RAW'.
  append it_packing_list.

* Add the recipients email address
  clear it_receivers.
  refresh it_receivers.
  it_receivers-receiver = p_email.
  it_receivers-rec_type = 'U'.
  it_receivers-com_type = 'INT'.
  it_receivers-notif_del = 'X'.
  it_receivers-notif_ndel = 'X'.
  append it_receivers.

* Call the FM to post the message to SAPMAIL
  call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
       exporting
            document_data              = gd_doc_data
            put_in_outbox              = 'X'
       importing
            sent_to_all                = gd_sent_all
       tables
            packing_list               = it_packing_list
            contents_txt               = it_message
            receivers                  = it_receivers
       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.

* Store function module return code
  gd_error = sy-subrc.

* Get it_receivers return code
  loop at it_receivers.
  endloop.
endform.                    " SEND_EMAIL_MESSAGE


*&---------------------------------------------------------------------*
*&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
*&---------------------------------------------------------------------*
*       Instructs mail send program for SAPCONNECT to send email.
*----------------------------------------------------------------------*
form initiate_mail_execute_program.
  wait up to 2 seconds.
  if gd_error eq 0.
      submit rsconn01 with mode = 'INT'
                    with output = 'X'
                    and return.
  endif.
endform.                    " INITIATE_MAIL_EXECUTE_PROGRAM


 

reward points if it is usefull ...

Girish

Hi

We are trying to send mail to SAP Internal Id ( SAP INBOX) using FM SO_DOCUMENT_SEND_API1 , but it doesn't seem to be working as we tried passing diff add type and receivers related info....it works fine for internet address...

if anyone have done the same ie sending mails to SAP Inbox...

reuqest your help

Regards

Gunjan

12 REPLIES 12
Read only

Former Member
0 Likes
2,006

Hi Kumar,

Check the thread it may help you.

https://forums.sdn.sap.com/click.jspa?searchID=3417846&messageID=3505966

Thanks.

Read only

Former Member
0 Likes
2,006

Hello,

USe the <b>rec_type = 'O'</b>

Get the email from USR21 table


    SELECT SINGLE * INTO l_r_usr21 FROM usr21
                               WHERE bname = it_md51-uname.
      IF sy-subrc = 0.
        SELECT SINGLE * INTO l_r_adr6 FROM adr6
                          WHERE addrnumber = l_r_usr21-addrnumber AND
                                persnumber = l_r_usr21-persnumber AND
                                 date_from  < sy-datum.
    

If useful reward.

Vasanth

Read only

Former Member
0 Likes
2,006

Hi,

I have used it in following way.

IF s_email[] IS NOT INITIAL.

PERFORM f_send_email.

ELSE.

MESSAGE s010.

ENDIF.

FORM f_send_email .

DATA: lv_hex0(1) TYPE c,

lv_hex1(1) TYPE c,

lt_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

lt_objhead LIKE solisti1 OCCURS 0 WITH HEADER LINE,

lt_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,

lt_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,

lt_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

lv_doc_chng LIKE sodocchgi1,

lv_tab_lines LIKE sy-tabix,

lv_date(10) TYPE c,

lv_time(10) TYPE c,

lv_po_wtd(10) TYPE c,

lv_po_mtd(10) TYPE c ,

lv_po_ytd(10) TYPE c,

lv_po_l_wtd(10) TYPE c ,

lv_po_l_mtd(10) TYPE c ,

lv_po_l_ytd(10) TYPE c,

lv_pr_wtd(10) TYPE c ,

lv_pr_mtd(10) TYPE c ,

lv_pr_ytd(10) TYPE c ,

lv_pr_l_wtd(10) TYPE c ,

lv_pr_l_mtd(10) TYPE c,

lv_pr_l_ytd(10) TYPE c.

CONSTANTS: lc_rec_typ(1) TYPE c VALUE 'U'.

lv_hex0 = cl_abap_char_utilities=>horizontal_tab.

lv_hex1 = cl_abap_char_utilities=>cr_lf.

  • Creating the document to be sent

lv_doc_chng-obj_name = sy-repid.

lv_doc_chng-obj_descr = sy-repid.

WRITE sy-datum TO lv_date USING EDIT MASK '__/__/____'.

WRITE sy-uzeit TO lv_time USING EDIT MASK '__:__:__'.

CONCATENATE lv_doc_chng-obj_descr gc_under lv_date gc_under lv_time

INTO lv_doc_chng-obj_descr.

*Email body

lt_objtxt = text-019.

APPEND lt_objtxt.

CONCATENATE text-020 lv_date INTO lt_objtxt.

APPEND lt_objtxt.

CONCATENATE text-021 lv_time INTO lt_objtxt.

APPEND lt_objtxt.

DESCRIBE TABLE lt_objtxt LINES lv_tab_lines.

READ TABLE lt_objtxt INDEX lv_tab_lines.

lv_doc_chng-doc_size = ( lv_tab_lines - 1 ) * 255 +

STRLEN( lt_objtxt ).

  • Creating the entry for the compressed document

CLEAR lt_objpack-transf_bin.

lt_objpack-head_start = 1.

lt_objpack-head_num = 0.

lt_objpack-body_start = 1.

lt_objpack-body_num = lv_tab_lines.

lt_objpack-doc_type = 'RAW'.

APPEND lt_objpack.

  • Creating the document attachment

CONCATENATE text-018

text-004 text-005 text-006

text-007 text-008 text-009

text-010 text-011 text-012

text-013 text-014 text-015

text-016 text-017

INTO lt_objbin SEPARATED BY lv_hex0.

CONCATENATE lt_objbin lv_hex1 INTO lt_objbin.

APPEND lt_objbin.

LOOP AT gt_final INTO gw_final.

CLEAR: lv_po_wtd,

lv_po_mtd ,

lv_po_ytd,

lv_po_l_wtd ,

lv_po_l_mtd ,

lv_po_l_ytd,

lv_pr_wtd ,

lv_pr_mtd ,

lv_pr_ytd ,

lv_pr_l_wtd ,

lv_pr_l_mtd,

lv_pr_l_ytd.

lv_po_wtd = gw_final-po_wtd.

lv_po_mtd = gw_final-po_mtd.

lv_po_ytd = gw_final-po_ytd.

lv_po_l_wtd = gw_final-po_l_wtd.

lv_po_l_mtd = gw_final-po_l_mtd.

lv_po_l_ytd = gw_final-po_l_ytd.

lv_pr_wtd = gw_final-pr_wtd.

lv_pr_mtd = gw_final-pr_mtd.

lv_pr_ytd = gw_final-pr_ytd.

lv_pr_l_wtd = gw_final-pr_l_wtd.

lv_pr_l_mtd = gw_final-pr_l_mtd.

lv_pr_l_ytd = gw_final-pr_l_ytd.

CONCATENATE gw_final-ekotx

gw_final-eknam

gw_final-ekgrp

lv_po_wtd

lv_po_mtd

lv_po_ytd

lv_po_l_wtd

lv_po_l_mtd

lv_po_l_ytd

lv_pr_wtd

lv_pr_mtd

lv_pr_ytd

lv_pr_l_wtd

lv_pr_l_mtd

lv_pr_l_ytd

INTO lt_objbin SEPARATED BY lv_hex0.

CONCATENATE lt_objbin lv_hex1 INTO lt_objbin.

APPEND lt_objbin.

ENDLOOP.

DESCRIBE TABLE lt_objbin LINES lv_tab_lines.

lt_objhead = lv_doc_chng-obj_descr.

APPEND lt_objhead.

  • Creating the entry for the compressed attachment

lt_objpack-transf_bin = gc_x.

lt_objpack-head_start = 1.

lt_objpack-head_num = 1.

lt_objpack-body_start = 1.

lt_objpack-body_num = lv_tab_lines.

lt_objpack-doc_type = 'XLS'.

lt_objpack-obj_name = 'ATTACHMENT'.

CONCATENATE sy-repid gc_under lv_date gc_under lv_time INTO

lt_objpack-obj_descr.

lt_objpack-doc_size = lv_tab_lines * 255.

APPEND lt_objpack.

LOOP AT s_email.

lt_reclist-receiver = s_email-low.

lt_reclist-rec_type = lc_rec_typ.

APPEND lt_reclist.

ENDLOOP.

IF sy-subrc = 0.

  • To send email

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = lv_doc_chng

put_in_outbox = gc_x

commit_work = gc_x

TABLES

packing_list = lt_objpack

object_header = lt_objhead

contents_bin = lt_objbin

contents_txt = lt_objtxt

receivers = lt_reclist

EXCEPTIONS

too_many_receivers = 1

document_not_sent = 2

operation_no_authorization = 3

OTHERS = 99.

CASE sy-subrc.

WHEN 0.

WRITE: / 'Document sent successfully'.

WHEN 1.

WRITE: / 'Document could not be sent. Too many receivers'.

WHEN 2.

WRITE: / 'Document could not be sent to any of the recipients!'.

WHEN 3.

WRITE: / 'No authorization to send/create document!'.

WHEN OTHERS.

WRITE: / 'Error occurred during sending!'.

ENDCASE.

ENDIF.

ENDFORM. "f_send_email

regards,

Ruchika

Reward if useful.......

Read only

0 Likes
2,006

Hi

I am able to send to internet address only thing i want is the same mail program should work for SAP inbox also..so where am i going wrong?

Ruchika : whats the value of Rectype in ur program and does it work for SAP Inbox?

Regards

Gunjan

Read only

0 Likes
2,006

Hi,

I have used it for Internet address only.

I dont know about sap Inbox.

Regadrs,

Ruchika

Read only

0 Likes
2,006

Hi,

CONSTANTS: lc_rec_typ(1) TYPE c VALUE 'U'.

regards,

Ruchika

Read only

0 Likes
2,006

my problem is sap inbox...

Read only

Former Member
0 Likes
2,006

Hello,

Check this sample.


***********************************************************************

************************************************************************

** Table Declarations

************************************************************************

TABLES: SOLI.

************************************************************************

** Data Declarations

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS: SAPID RADIOBUTTON GROUP ADDR,

EMAIL_ID RADIOBUTTON GROUP ADDR.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

SELECT-OPTIONS: ID FOR SOLI-LINE NO INTERVALS.

SELECT-OPTIONS: CC FOR SOLI-LINE NO INTERVALS.

SELECT-OPTIONS: BCC FOR SOLI-LINE NO INTERVALS.

*PARAMETERS: SENDER LIKE SOUD-USRNAM.

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-009.

PARAMETERS: SUB_LINE(60) TYPE C.

SELECTION-SCREEN END OF BLOCK B3.

SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-008.

SELECT-OPTIONS: TEXT1 FOR SOLI-LINE NO INTERVALS.

SELECTION-SCREEN END OF BLOCK B4.

SELECTION-SCREEN BEGIN OF BLOCK B5 WITH FRAME TITLE TEXT-009.

SELECTION-SCREEN BEGIN OF LINE.

parameters: P_ATTACH as checkbox.

selection-screen comment 3(30) text-010.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B5.

DATA: MAIL_CONTENT LIKE SOLI OCCURS 0 WITH HEADER LINE,

SUBJECT_LINE LIKE SOOD1-OBJDES.

************************************************************************

** Start of program processing

************************************************************************

START-OF-SELECTION.

** Get the Body of the Message from the selection screen or from

** calling program

LOOP AT TEXT1.

MOVE TEXT1-LOW TO MAIL_CONTENT-LINE.

APPEND MAIL_CONTENT.

ENDLOOP.

** Subject of the Message

MOVE SUB_LINE TO SUBJECT_LINE.

** call a routine to send the workflow message

PERFORM SEND_EMAIL

TABLES MAIL_CONTENT

USING SUBJECT_LINE.

*&---------------------------------------------------------------------*

*& Form SEND_EMAIL

*&---------------------------------------------------------------------*

* Send Workflow message

*----------------------------------------------------------------------*

FORM SEND_EMAIL TABLES OBJCONT STRUCTURE MAIL_CONTENT

USING TITLE LIKE SOOD-OBJDES.

DATA: RECEIVERS LIKE SOOS1 OCCURS 0 WITH HEADER LINE,

TSOOD1 LIKE SOOD1,

PACKING_LIST LIKE SOXPL OCCURS 0 WITH HEADER LINE,

OBJCONT1 LIKE MAIL_CONTENT OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF AT_HEADER OCCURS 1.

INCLUDE STRUCTURE SOLI.

DATA: END OF AT_HEADER.

CLEAR: TSOOD1,

RECEIVERS.

REFRESH RECEIVERS.

MOVE: SY-LANGU TO TSOOD1-OBJLA,

'Email Notice' TO TSOOD1-OBJNAM,

'C' TO TSOOD1-OBJSNS,

TITLE TO TSOOD1-OBJDES.

* 'SCHIAVONIR' TO TSOOD1-OWNNAM.

** loop through each ID and move them to recipient table

LOOP AT ID.

TRANSLATE ID-LOW TO UPPER CASE.

IF SAPID = 'X'.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

' ' TO RECEIVERS-RECESC,

ID-LOW TO RECEIVERS-RECNAM,

'X' TO RECEIVERS-SNDEX.

ELSE.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

'U' TO RECEIVERS-RECESC,

'U-' TO RECEIVERS-RECNAM,

ID-LOW TO RECEIVERS-RECEXTNAM.

ENDIF.

APPEND RECEIVERS.

CLEAR RECEIVERS.

ENDLOOP.

** loop through each CC and move them to recipient table

LOOP AT CC.

TRANSLATE CC-LOW TO UPPER CASE.

IF SAPID = 'X'.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

' ' TO RECEIVERS-RECESC,

CC-LOW TO RECEIVERS-RECNAM,

'X' TO RECEIVERS-SNDEX,

'X' TO RECEIVERS-SNDCP.

ELSE.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

'U' TO RECEIVERS-RECESC,

'U-' TO RECEIVERS-RECNAM,

CC-LOW TO RECEIVERS-RECEXTNAM,

'X' TO RECEIVERS-SNDCP.

ENDIF.

APPEND RECEIVERS.

CLEAR RECEIVERS.

ENDLOOP.

** loop through each BCC and move them to recipient table

LOOP AT BCC.

TRANSLATE BCC-LOW TO UPPER CASE.

IF SAPID = 'X'.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

' ' TO RECEIVERS-RECESC,

BCC-LOW TO RECEIVERS-RECNAM,

'X' TO RECEIVERS-SNDEX,

'X' TO RECEIVERS-SNDBC.

ELSE.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

'U' TO RECEIVERS-RECESC,

'U-' TO RECEIVERS-RECNAM,

BCC-LOW TO RECEIVERS-RECEXTNAM,

'X' TO RECEIVERS-SNDBC.

ENDIF.

APPEND RECEIVERS.

CLEAR RECEIVERS.

ENDLOOP.

AT_HEADER = SY-DATUM.

APPEND AT_HEADER.

AT_HEADER = SY-UZEIT.

APPEND AT_HEADER.

* IF SENDER EQ SPACE.

* SENDER = SY-UNAME.

* ENDIF.

IF P_ATTACH EQ 'X'.

PACKING_LIST-HEAD_START = 1.

PACKING_LIST-HEAD_NUM = 2.

PACKING_LIST-BODY_START = 1.

PACKING_LIST-BODY_NUM = 9999.

PACKING_LIST-FILE_EXT = 'TXT'.

APPEND PACKING_LIST.

CLEAR PACKING_LIST.

APPEND LINES OF OBJCONT TO OBJCONT1.

REFRESH OBJCONT.

ENDIF.

CALL FUNCTION 'SO_OBJECT_SEND'

EXPORTING

OBJECT_HD_CHANGE = TSOOD1

OBJECT_TYPE = 'RAW'

TABLES

OBJCONT = OBJCONT

RECEIVERS = RECEIVERS

ATT_HEAD = AT_HEADER

ATT_CONT = OBJCONT1

PACKING_LIST = PACKING_LIST

EXCEPTIONS

ACTIVE_USER_NOT_EXIST = 1

COMMUNICATION_FAILURE = 2

COMPONENT_NOT_AVAILABLE = 3

FOLDER_NOT_EXIST = 4

FOLDER_NO_AUTHORIZATION = 5

FORWARDER_NOT_EXIST = 6

NOTE_NOT_EXIST = 7

OBJECT_NOT_EXIST = 8

OBJECT_NOT_SENT = 9

OBJECT_NO_AUTHORIZATION = 10

OBJECT_TYPE_NOT_EXIST = 11

OPERATION_NO_AUTHORIZATION = 12

OWNER_NOT_EXIST = 13

PARAMETER_ERROR = 14

SUBSTITUTE_NOT_ACTIVE = 15

SUBSTITUTE_NOT_DEFINED = 16

SYSTEM_FAILURE = 17

TOO_MUCH_RECEIVERS = 18

USER_NOT_EXIST = 19

X_ERROR = 20

OTHERS = 21.

ENDFORM. " SEND_EMAIL 


Reward Points if it is helpful

Thanks

Vasanth

Read only

Former Member
0 Likes
2,006

<b>Convert Spool request to PDF and send as e-mail </b>

The code below demonstrates how to retrieve a spool request and email it as a PDF document. Please note for the below program to process a spool request the program must be executed in background otherwise no spool request will be created. Once you have had a look at this there is an modified version of the program which works in both background and foreground. Also see transaction SCOT for SAPConnect administration.

*& Report  ZSPOOLTOPDF                                                 *
*&                                                                     *
*&---------------------------------------------------------------------*
*& Converts spool request into PDF document and emails it to           *
*& recipicant.                                                         *
*&                                                                     *
*& Execution                                                           *
*& ---------                                                           *
*& This program must be run as a background job in-order for the write *
*& commands to create a Spool request rather than be displayed on      *
*& screen                                                              *
*&---------------------------------------------------------------------*
REPORT  zspooltopdf.

PARAMETER: p_email1 LIKE somlreci1-receiver
                                    DEFAULT '[email protected]',
           p_sender LIKE somlreci1-receiver
                                    DEFAULT '[email protected]',
           p_delspl  AS CHECKBOX.

*DATA DECLARATION
DATA: gd_recsize TYPE i.

* Spool IDs
TYPES: BEGIN OF t_tbtcp.
        INCLUDE STRUCTURE tbtcp.
TYPES: END OF t_tbtcp.
DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
      wa_tbtcp TYPE t_tbtcp.

* Job Runtime Parameters
DATA: gd_eventid LIKE tbtcm-eventid,
      gd_eventparm LIKE tbtcm-eventparm,
      gd_external_program_active LIKE tbtcm-xpgactive,
      gd_jobcount LIKE tbtcm-jobcount,
      gd_jobname LIKE tbtcm-jobname,
      gd_stepcount LIKE tbtcm-stepcount,
      gd_error    TYPE sy-subrc,
      gd_reciever TYPE sy-subrc.


DATA:  w_recsize TYPE i.

DATA: gd_subject   LIKE sodocchgi1-obj_descr,
      it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
      it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
      gd_sender_type     LIKE soextreci1-adr_typ,
      gd_attachment_desc TYPE so_obj_nam,
      gd_attachment_name TYPE so_obj_des.

* Spool to PDF conversions
DATA: gd_spool_nr LIKE tsp01-rqident,
      gd_destination LIKE rlgrap-filename,
      gd_bytecount LIKE tst01-dsize,
      gd_buffer TYPE string.

* Binary store for PDF
DATA: BEGIN OF it_pdf_output OCCURS 0.
        INCLUDE STRUCTURE tline.
DATA: END OF it_pdf_output.

CONSTANTS: c_dev LIKE  sy-sysid VALUE 'DEV',
           c_no(1)     TYPE c   VALUE ' ',
           c_device(4) TYPE c   VALUE 'LOCL'.

************************************************************************
*START-OF-SELECTION.
START-OF-SELECTION.

* Write statement to represent report output. Spool request is created
* if write statement is executed in background. This could also be an
* ALV grid which would be converted to PDF without any extra effort
  WRITE 'Hello World'.
  new-page.
  commit work.
  new-page print off.

  IF sy-batch EQ 'X'.
    PERFORM get_job_details.
    PERFORM obtain_spool_id.

************************************
*** Alternative way could be to submit another program and store spool
*** id into memory, will be stored in sy-spono.
*submit ZSPOOLTOPDF2
*        to sap-spool
*        spool parameters   %_print
*        archive parameters %_print
*        without spool dynpro
*        and return.
************************************

* Get spool id from program called above 
*  IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.

    PERFORM convert_spool_to_pdf.
    PERFORM process_email.

    if p_delspl EQ 'X'.
      PERFORM delete_spool.
    endif.

    IF sy-sysid = c_dev.
      wait up to 5 seconds.
      SUBMIT rsconn01 WITH mode   = 'INT'
                      WITH output = 'X'
                      AND RETURN.
    ENDIF.
  ELSE.
    SKIP.
    WRITE:/ 'Program must be executed in background in-order for spool',
            'request to be created.'.
  ENDIF.


*---------------------------------------------------------------------*
*       FORM obtain_spool_id                                          *
*---------------------------------------------------------------------*
FORM obtain_spool_id.
  CHECK NOT ( gd_jobname IS INITIAL ).
  CHECK NOT ( gd_jobcount IS INITIAL ).

  SELECT * FROM  tbtcp
                 INTO TABLE it_tbtcp
                 WHERE      jobname     = gd_jobname
                 AND        jobcount    = gd_jobcount
                 AND        stepcount   = gd_stepcount
                 AND        listident   <> '0000000000'
                 ORDER BY   jobname
                            jobcount
                            stepcount.

  READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
  IF sy-subrc = 0.
    message s004(zdd) with gd_spool_nr.
    gd_spool_nr = wa_tbtcp-listident.
    MESSAGE s004(zdd) WITH gd_spool_nr.
  ELSE.
    MESSAGE s005(zdd).
  ENDIF.
ENDFORM.


*---------------------------------------------------------------------*
*       FORM get_job_details                                          *
*---------------------------------------------------------------------*
FORM get_job_details.
* Get current job details
  CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
       IMPORTING
            eventid                 = gd_eventid
            eventparm               = gd_eventparm
            external_program_active = gd_external_program_active
            jobcount                = gd_jobcount
            jobname                 = gd_jobname
            stepcount               = gd_stepcount
       EXCEPTIONS
            no_runtime_info         = 1
            OTHERS                  = 2.
ENDFORM.


*---------------------------------------------------------------------*
*       FORM convert_spool_to_pdf                                     *
*---------------------------------------------------------------------*
FORM convert_spool_to_pdf.

  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
       EXPORTING
            src_spoolid              = gd_spool_nr
            no_dialog                = c_no
            dst_device               = c_device
       IMPORTING
            pdf_bytecount            = gd_bytecount
       TABLES
            pdf                      = it_pdf_output
       EXCEPTIONS
            err_no_abap_spooljob     = 1
            err_no_spooljob          = 2
            err_no_permission        = 3
            err_conv_not_possible    = 4
            err_bad_destdevice       = 5
            user_cancelled           = 6
            err_spoolerror           = 7
            err_temseerror           = 8
            err_btcjob_open_failed   = 9
            err_btcjob_submit_failed = 10
            err_btcjob_close_failed  = 11
            OTHERS                   = 12.

  CHECK sy-subrc = 0.

* Transfer the 132-long strings to 255-long strings
  LOOP AT it_pdf_output.
    TRANSLATE it_pdf_output USING ' ~'.
    CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
  ENDLOOP.

  TRANSLATE gd_buffer USING '~ '.

  DO.
    it_mess_att = gd_buffer.
    APPEND it_mess_att.
    SHIFT gd_buffer LEFT BY 255 PLACES.
    IF gd_buffer IS INITIAL.
      EXIT.
    ENDIF.
  ENDDO.
ENDFORM.


*---------------------------------------------------------------------*
*       FORM process_email                                            *
*---------------------------------------------------------------------*
FORM process_email.
  DESCRIBE TABLE it_mess_att LINES gd_recsize.
  CHECK gd_recsize > 0.
  PERFORM send_email USING p_email1.
*  perform send_email using p_email2.
ENDFORM.


*---------------------------------------------------------------------*
*       FORM send_email                                               *
*---------------------------------------------------------------------*
*  -->  p_email                                                       *
*---------------------------------------------------------------------*
FORM send_email USING p_email.
  CHECK NOT ( p_email IS INITIAL ).

  REFRESH it_mess_bod.

* Default subject matter
  gd_subject         = 'Subject'.
  gd_attachment_desc = 'Attachname'.
*  CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
  it_mess_bod        = 'Message Body text, line 1'.
  APPEND it_mess_bod.
  it_mess_bod        = 'Message Body text, line 2...'.
  APPEND it_mess_bod.

* If no sender specified - default blank
  IF p_sender EQ space.
    gd_sender_type  = space.
  ELSE.
    gd_sender_type  = 'INT'.
  ENDIF.


* Send file by email as .xls speadsheet
  PERFORM send_file_as_email_attachment
                               tables it_mess_bod
                                      it_mess_att
                                using p_email
                                      'Example .xls documnet attachment'
                                      'PDF'
                                      gd_attachment_name
                                      gd_attachment_desc
                                      p_sender
                                      gd_sender_type
                             changing gd_error
                                      gd_reciever.
ENDFORM.


*---------------------------------------------------------------------*
*       FORM delete_spool                                             *
*---------------------------------------------------------------------*
FORM delete_spool.
  DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.

  ld_spool_nr = gd_spool_nr.

  CHECK p_delspl <> c_no.
  CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
       EXPORTING
            spoolid = ld_spool_nr.
ENDFORM.


*&---------------------------------------------------------------------*
*&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
*&---------------------------------------------------------------------*
*       Send email
*----------------------------------------------------------------------*
FORM send_file_as_email_attachment tables it_message
                                          it_attach
                                    using p_email
                                          p_mtitle
                                          p_format
                                          p_filename
                                          p_attdescription
                                          p_sender_address
                                          p_sender_addres_type
                                 changing p_error
                                          p_reciever.


  DATA: ld_error    TYPE sy-subrc,
        ld_reciever TYPE sy-subrc,
        ld_mtitle LIKE sodocchgi1-obj_descr,
        ld_email LIKE  somlreci1-receiver,
        ld_format TYPE  so_obj_tp ,
        ld_attdescription TYPE  so_obj_nam ,
        ld_attfilename TYPE  so_obj_des ,
        ld_sender_address LIKE  soextreci1-receiver,
        ld_sender_address_type LIKE  soextreci1-adr_typ,
        ld_receiver LIKE  sy-subrc.

data:   t_packing_list like sopcklsti1 occurs 0 with header line,
        t_contents like solisti1 occurs 0 with header line,
        t_receivers like somlreci1 occurs 0 with header line,
        t_attachment like solisti1 occurs 0 with header line,
        t_object_header like solisti1 occurs 0 with header line,
        w_cnt type i,
        w_sent_all(1) type c,
        w_doc_data like sodocchgi1.


  ld_email   = p_email.
  ld_mtitle = p_mtitle.
  ld_format              = p_format.
  ld_attdescription      = p_attdescription.
  ld_attfilename         = p_filename.
  ld_sender_address      = p_sender_address.
  ld_sender_address_type = p_sender_addres_type.


* Fill the document data.
  w_doc_data-doc_size = 1.

* Populate the subject/generic message attributes
  w_doc_data-obj_langu = sy-langu.
  w_doc_data-obj_name  = 'SAPRPT'.
  w_doc_data-obj_descr = ld_mtitle .
  w_doc_data-sensitivty = 'F'.

* Fill the document data and get size of attachment
  CLEAR w_doc_data.
  READ TABLE it_attach INDEX w_cnt.
  w_doc_data-doc_size =
     ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
  w_doc_data-obj_langu  = sy-langu.
  w_doc_data-obj_name   = 'SAPRPT'.
  w_doc_data-obj_descr  = ld_mtitle.
  w_doc_data-sensitivty = 'F'.
  CLEAR t_attachment.
  REFRESH t_attachment.
  t_attachment[] = it_attach[].

* Describe the body of the message
  CLEAR t_packing_list.
  REFRESH t_packing_list.
  t_packing_list-transf_bin = space.
  t_packing_list-head_start = 1.
  t_packing_list-head_num = 0.
  t_packing_list-body_start = 1.
  DESCRIBE TABLE it_message LINES t_packing_list-body_num.
  t_packing_list-doc_type = 'RAW'.
  APPEND t_packing_list.

* Create attachment notification
  t_packing_list-transf_bin = 'X'.
  t_packing_list-head_start = 1.
  t_packing_list-head_num   = 1.
  t_packing_list-body_start = 1.

  DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
  t_packing_list-doc_type   =  ld_format.
  t_packing_list-obj_descr  =  ld_attdescription.
  t_packing_list-obj_name   =  ld_attfilename.
  t_packing_list-doc_size   =  t_packing_list-body_num * 255.
  APPEND t_packing_list.

* Add the recipients email address
  CLEAR t_receivers.
  REFRESH t_receivers.
  t_receivers-receiver = ld_email.
  t_receivers-rec_type = 'U'.
  t_receivers-com_type = 'INT'.
  t_receivers-notif_del = 'X'.
  t_receivers-notif_ndel = 'X'.
  APPEND t_receivers.

  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
       EXPORTING
            document_data              = w_doc_data
            put_in_outbox              = 'X'
            sender_address             = ld_sender_address
            sender_address_type        = ld_sender_address_type
            commit_work                = 'X'
       IMPORTING
            sent_to_all                = w_sent_all
       TABLES
            packing_list               = t_packing_list
            contents_bin               = t_attachment
            contents_txt               = it_message
            receivers                  = t_receivers
       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.

* Populate zerror return code
  ld_error = sy-subrc.

* Populate zreceiver return code
  LOOP AT t_receivers.
    ld_receiver = t_receivers-retrn_code.
  ENDLOOP.
ENDFORM.

reward points if it is usefull ....

Girish

Read only

Former Member
0 Likes
2,007

<b>Send external email from within ABAP program </b>

The code below demonstrates how to send an email to an external email address([email protected])

*&---------------------------------------------------------------------*
*& Report  ZSENDEMAIL                                                  *
*&                                                                     *
*&---------------------------------------------------------------------*
*& Example of sending external email via SAPCONNECT                    *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  zsendemail                    .

PARAMETERS: psubject(40) type c default  'Hello',
            p_email(40)   type c default '[email protected]' .

data:   it_packing_list like sopcklsti1 occurs 0 with header line,
        it_contents like solisti1 occurs 0 with header line,
        it_receivers like somlreci1 occurs 0 with header line,
        it_attachment like solisti1 occurs 0 with header line,
        gd_cnt type i,
        gd_sent_all(1) type c,
        gd_doc_data like sodocchgi1,
        gd_error type sy-subrc.

data:   it_message type standard table of SOLISTI1 initial size 0
                with header line.

***********************************************************************
*START-OF-SELECTION.
START-OF-SELECTION.

Perform populate_message_table.

*Send email message, although is not sent from SAP until mail send
*program has been executed(rsconn01)
PERFORM send_email_message.

*Instructs mail send program for SAPCONNECT to send email(rsconn01)
perform initiate_mail_execute_program.


*&---------------------------------------------------------------------*
*&      Form  POPULATE_MESSAGE_TABLE
*&---------------------------------------------------------------------*
*       Adds text to email text table
*----------------------------------------------------------------------*
form populate_message_table.
  Append 'Email line 1' to it_message.
  Append 'Email line 2' to it_message.
  Append 'Email line 3' to it_message.
  Append 'Email line 4' to it_message.
endform.                    " POPULATE_MESSAGE_TABLE


*&---------------------------------------------------------------------*
*&      Form  SEND_EMAIL_MESSAGE
*&---------------------------------------------------------------------*
*       Send email message
*----------------------------------------------------------------------*
form send_email_message.
* Fill the document data.
  gd_doc_data-doc_size = 1.

* Populate the subject/generic message attributes
  gd_doc_data-obj_langu = sy-langu.
  gd_doc_data-obj_name  = 'SAPRPT'.
  gd_doc_data-obj_descr = psubject.
  gd_doc_data-sensitivty = 'F'.

* Describe the body of the message
  clear it_packing_list.
  refresh it_packing_list.
  it_packing_list-transf_bin = space.
  it_packing_list-head_start = 1.
  it_packing_list-head_num = 0.
  it_packing_list-body_start = 1.
  describe table it_message lines it_packing_list-body_num.
  it_packing_list-doc_type = 'RAW'.
  append it_packing_list.

* Add the recipients email address
  clear it_receivers.
  refresh it_receivers.
  it_receivers-receiver = p_email.
  it_receivers-rec_type = 'U'.
  it_receivers-com_type = 'INT'.
  it_receivers-notif_del = 'X'.
  it_receivers-notif_ndel = 'X'.
  append it_receivers.

* Call the FM to post the message to SAPMAIL
  call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
       exporting
            document_data              = gd_doc_data
            put_in_outbox              = 'X'
       importing
            sent_to_all                = gd_sent_all
       tables
            packing_list               = it_packing_list
            contents_txt               = it_message
            receivers                  = it_receivers
       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.

* Store function module return code
  gd_error = sy-subrc.

* Get it_receivers return code
  loop at it_receivers.
  endloop.
endform.                    " SEND_EMAIL_MESSAGE


*&---------------------------------------------------------------------*
*&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
*&---------------------------------------------------------------------*
*       Instructs mail send program for SAPCONNECT to send email.
*----------------------------------------------------------------------*
form initiate_mail_execute_program.
  wait up to 2 seconds.
  if gd_error eq 0.
      submit rsconn01 with mode = 'INT'
                    with output = 'X'
                    and return.
  endif.
endform.                    " INITIATE_MAIL_EXECUTE_PROGRAM


 

reward points if it is usefull ...

Girish

Read only

Former Member
0 Likes
2,006

<b>Send external email from within ABAP program </b>

The code below demonstrates how to send an email to an external email address([email protected]),

<b>where the data is stored within a .xls attachment.</b>

*&---------------------------------------------------------------------*
*& Report  ZEMAIL_ATTACH                                               *
*&                                                                     *
*&---------------------------------------------------------------------*
*& Example of sending external email via SAPCONNECT                    *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  ZEMAIL_ATTACH                   .
TABLES: ekko.

PARAMETERS: p_email   TYPE somlreci1-receiver
                                  DEFAULT '[email protected]'.

TYPES: BEGIN OF t_ekpo,
  ebeln TYPE ekpo-ebeln,
  ebelp TYPE ekpo-ebelp,
  aedat TYPE ekpo-aedat,
  matnr TYPE ekpo-matnr,
 END OF t_ekpo.
DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,
      wa_ekpo TYPE t_ekpo.

TYPES: BEGIN OF t_charekpo,
  ebeln(10) TYPE c,
  ebelp(5)  TYPE c,
  aedat(8)  TYPE c,
  matnr(18) TYPE c,
 END OF t_charekpo.
DATA: wa_charekpo TYPE t_charekpo.

DATA:   it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                WITH HEADER LINE.
DATA:   it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                WITH HEADER LINE.

DATA:   t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
        t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
        t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
        t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
        t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
        w_cnt TYPE i,
        w_sent_all(1) TYPE c,
        w_doc_data LIKE sodocchgi1,
        gd_error    TYPE sy-subrc,
        gd_reciever TYPE sy-subrc.


************************************************************************
*START_OF_SELECTION
START-OF-SELECTION.
*   Retrieve sample data from table ekpo
  PERFORM data_retrieval.

*   Populate table with detaisl to be entered into .xls file
  PERFORM build_xls_data_table.


************************************************************************
*END-OF-SELECTION
END-OF-SELECTION.
* Populate message body text
  perform populate_email_message_body.

* Send file by email as .xls speadsheet
  PERFORM send_file_as_email_attachment
                               tables it_message
                                      it_attach
                                using p_email
                                      'Example .xls documnet attachment'
                                      'XLS'
                                      'filename'
                                      ' '
                                      ' '
                                      ' '
                             changing gd_error
                                      gd_reciever.

*   Instructs mail send program for SAPCONNECT to send email(rsconn01)
  PERFORM initiate_mail_execute_program.


*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval.
  SELECT ebeln ebelp aedat matnr
   UP TO 10 ROWS
    FROM ekpo
    INTO TABLE it_ekpo.
ENDFORM.                    " DATA_RETRIEVAL


*&---------------------------------------------------------------------*
*&      Form  BUILD_XLS_DATA_TABLE
*&---------------------------------------------------------------------*
*       Build data table for .xls document
*----------------------------------------------------------------------*
FORM build_xls_data_table.
  CONSTANTS: con_cret TYPE x VALUE '0D',  "OK for non Unicode
             con_tab TYPE x VALUE '09'.   "OK for non Unicode

*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
*    con_tab  type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
*    con_cret type c value cl_abap_char_utilities=>CR_LF.


  CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
         INTO it_attach SEPARATED BY con_tab.
  CONCATENATE con_cret it_attach  INTO it_attach.
  APPEND  it_attach.

  LOOP AT it_ekpo INTO wa_charekpo.
    CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelp
                wa_charekpo-aedat wa_charekpo-matnr
           INTO it_attach SEPARATED BY con_tab.
    CONCATENATE con_cret it_attach  INTO it_attach.
    APPEND  it_attach.
  ENDLOOP.
ENDFORM.                    " BUILD_XLS_DATA_TABLE


*&---------------------------------------------------------------------*
*&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
*&---------------------------------------------------------------------*
*       Send email
*----------------------------------------------------------------------*
FORM send_file_as_email_attachment tables pit_message
                                          pit_attach
                                    using p_email
                                          p_mtitle
                                          p_format
                                          p_filename
                                          p_attdescription
                                          p_sender_address
                                          p_sender_addres_type
                                 changing p_error
                                          p_reciever.


  DATA: ld_error    TYPE sy-subrc,
        ld_reciever TYPE sy-subrc,
        ld_mtitle LIKE sodocchgi1-obj_descr,
        ld_email LIKE  somlreci1-receiver,
        ld_format TYPE  so_obj_tp ,
        ld_attdescription TYPE  so_obj_nam ,
        ld_attfilename TYPE  so_obj_des ,
        ld_sender_address LIKE  soextreci1-receiver,
        ld_sender_address_type LIKE  soextreci1-adr_typ,
        ld_receiver LIKE  sy-subrc.

  ld_email   = p_email.
  ld_mtitle = p_mtitle.
  ld_format              = p_format.
  ld_attdescription      = p_attdescription.
  ld_attfilename         = p_filename.
  ld_sender_address      = p_sender_address.
  ld_sender_address_type = p_sender_addres_type.


* Fill the document data.
  w_doc_data-doc_size = 1.

* Populate the subject/generic message attributes
  w_doc_data-obj_langu = sy-langu.
  w_doc_data-obj_name  = 'SAPRPT'.
  w_doc_data-obj_descr = ld_mtitle .
  w_doc_data-sensitivty = 'F'.

* Fill the document data and get size of attachment
  CLEAR w_doc_data.
  READ TABLE it_attach INDEX w_cnt.
  w_doc_data-doc_size =
     ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
  w_doc_data-obj_langu  = sy-langu.
  w_doc_data-obj_name   = 'SAPRPT'.
  w_doc_data-obj_descr  = ld_mtitle.
  w_doc_data-sensitivty = 'F'.
  CLEAR t_attachment.
  REFRESH t_attachment.
  t_attachment[] = pit_attach[].

* Describe the body of the message
  CLEAR t_packing_list.
  REFRESH t_packing_list.
  t_packing_list-transf_bin = space.
  t_packing_list-head_start = 1.
  t_packing_list-head_num = 0.
  t_packing_list-body_start = 1.
  DESCRIBE TABLE it_message LINES t_packing_list-body_num.
  t_packing_list-doc_type = 'RAW'.
  APPEND t_packing_list.

* Create attachment notification
  t_packing_list-transf_bin = 'X'.
  t_packing_list-head_start = 1.
  t_packing_list-head_num   = 1.
  t_packing_list-body_start = 1.

  DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
  t_packing_list-doc_type   =  ld_format.
  t_packing_list-obj_descr  =  ld_attdescription.
  t_packing_list-obj_name   =  ld_attfilename.
  t_packing_list-doc_size   =  t_packing_list-body_num * 255.
  APPEND t_packing_list.

* Add the recipients email address
  CLEAR t_receivers.
  REFRESH t_receivers.
  t_receivers-receiver = ld_email.
  t_receivers-rec_type = 'U'.
  t_receivers-com_type = 'INT'.
  t_receivers-notif_del = 'X'.
  t_receivers-notif_ndel = 'X'.
  APPEND t_receivers.

  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
       EXPORTING
            document_data              = w_doc_data
            put_in_outbox              = 'X'
            sender_address             = ld_sender_address
            sender_address_type        = ld_sender_address_type
            commit_work                = 'X'
       IMPORTING
            sent_to_all                = w_sent_all
       TABLES
            packing_list               = t_packing_list
            contents_bin               = t_attachment
            contents_txt               = it_message
            receivers                  = t_receivers
       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.

* Populate zerror return code
  ld_error = sy-subrc.

* Populate zreceiver return code
  LOOP AT t_receivers.
    ld_receiver = t_receivers-retrn_code.
  ENDLOOP.
ENDFORM.


*&---------------------------------------------------------------------*
*&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
*&---------------------------------------------------------------------*
*       Instructs mail send program for SAPCONNECT to send email.
*----------------------------------------------------------------------*
FORM initiate_mail_execute_program.
  WAIT UP TO 2 SECONDS.
  SUBMIT rsconn01 WITH mode = 'INT'
                WITH output = 'X'
                AND RETURN.
ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM


*&---------------------------------------------------------------------*
*&      Form  POPULATE_EMAIL_MESSAGE_BODY
*&---------------------------------------------------------------------*
*        Populate message body text
*----------------------------------------------------------------------*
form populate_email_message_body.
  REFRESH it_message.
  it_message = 'Please find attached a list test ekpo records'.
  APPEND it_message.
endform.                    " POPULATE_EMAIL_MESSAGE_BODY


reward points if it is usefull .....

Girish

Read only

0 Likes
2,006

Try this...

PARAMETERS: p_email(40).

DATA : outlook LIKE obj_record,

outmail LIKE obj_record,

v_char(3000).

DATA: v_hex type x value '0D'.

DATA: BEGIN OF itab OCCURS 0,

matnr TYPE matnr,

END OF itab.

SELECT matnr UP TO 100 ROWS FROM mara

INTO TABLE itab.

LOOP AT itab.

CONCATENATE v_char itab-matnr INTO v_char SEPARATED BY v_hex.

ENDLOOP.

CREATE OBJECT outlook 'Outlook.Application'.

CALL METHOD OF outlook 'CREATEITEM' = outmail EXPORTING #1 = 0.

SET PROPERTY OF outmail 'TO' = p_email.

SET PROPERTY OF outmail 'SUBJECT' = 'Subject'.

SET PROPERTY OF outmail 'BODY' = v_char.

CALL METHOD OF outmail 'SEND'.

FREE OBJECT outlook.