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: 

email

Former Member
0 Kudos

Hi all,

I am using SO_NEW_DOCUMENT_ATT_SEND_API1 functional module to sending an email to users.I am hardcoding 3 email address in my program.But my program is sending the attachment to only only one mail address.

My question is how to send the attachment to all at a time.

please give the code.

thanks.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Rakesh,

Are you passing all the 3 receivers to the Tables Parameter RECEIVERS?

Do coding like this

DATA: lwa_receivers TYPE somlreci1,

lit_receivers TYPE TABLE OF somlreci1.

lwa_receivers-receiver = '<1st Maild id>'.

lwa_receivers-rec_type = 'U'.

APPEND lwa_receivers TO lit_receivers.

lwa_receivers-receiver = '<2nd Maild id>'.

lwa_receivers-rec_type = 'U'.

APPEND lwa_receivers TO lit_receivers.

lwa_receivers-receiver = '<3rd Maild id>'.

lwa_receivers-rec_type = 'U'.

APPEND lwa_receivers TO lit_receivers.

Pass this internal table lit_receivers to thr TABLES PARAMETER RECEIVERS.

<b>Reward Points for helpful answers</b>

Regards,

Satish

4 REPLIES 4

Former Member
0 Kudos

Paste that code, how are you hard coding?

Regards,

Satish

Former Member
0 Kudos

HI,

You can send mail to number of users at a time using the function module

check the internal table contains all 3 mail ID's before using the function module

Regards,

Siva chalasani.

Former Member
0 Kudos

Rakesh,

Are you passing all the 3 receivers to the Tables Parameter RECEIVERS?

Do coding like this

DATA: lwa_receivers TYPE somlreci1,

lit_receivers TYPE TABLE OF somlreci1.

lwa_receivers-receiver = '<1st Maild id>'.

lwa_receivers-rec_type = 'U'.

APPEND lwa_receivers TO lit_receivers.

lwa_receivers-receiver = '<2nd Maild id>'.

lwa_receivers-rec_type = 'U'.

APPEND lwa_receivers TO lit_receivers.

lwa_receivers-receiver = '<3rd Maild id>'.

lwa_receivers-rec_type = 'U'.

APPEND lwa_receivers TO lit_receivers.

Pass this internal table lit_receivers to thr TABLES PARAMETER RECEIVERS.

<b>Reward Points for helpful answers</b>

Regards,

Satish

Former Member
0 Kudos

Hi Rakesh,

please find the Eg. code for your reference to send a mail with Excel attachment..

and just check it out where to add the userids.....

************************************************************************
* End of Selection Event : Displaying the selected data                *
***********************************************************************
END-OF-SELECTION.
    PERFORM EMAIL_EXCEL_ATTACHMENT.
 
******///form
FORM EMAIL_EXCEL_ATTACHMENT .
 
* Populate table with detaisl to be entered into .xls file
  PERFORM BUILD_XLS_DATA_TABLE.
* 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 S_EMAIL
                                      TEXT-042
                                      C_XLS
                                      'filename'
                                      ' '
                                      ' '
                                      ' '
                             CHANGING GD_ERROR
                                      GD_RECIEVER.
 
*   Instructs mail send program for SAPCONNECT to send email(rsconn01)
  PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
 
ENDFORM.                    " EMAIL_EXCEL_ATTACHMENT
 
********///form BUILD_XLS_DATA_TABLE
FORM BUILD_XLS_DATA_TABLE .
 
  DATA :    LV_NETWR(20)     TYPE C,
            LV_BOL_DATE(20)  TYPE C,
            LV_KAWRT(20)     TYPE C,
            LV_FKDAT(20)     TYPE C,
            LV_WAERK(20)     TYPE C,
            LV_KURRF(20)     TYPE C,
            LV_SHIPDATE(20)  TYPE C,
            LV_DEPTDATE(20)  TYPE C.
 
 
  CONSTANTS:
      CON_TAB  TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
      CON_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.  "#EC *
 
  DATA STR TYPE STRING.
**********/ this parameter concatenate to get headers
  CONCATENATE STR
  'SLNO'
  'OWNER'
  'SERIAL NO'
  'FROM'
  'DESTINATION'
  'INVOICE VALUE'
  'DESCRIPTION'
  'CUSTOMER NAME'
  'BL NUMBER'
  'BL DATE'
  'VESSEL NAME/AIRLINE DETAILS'
  'MODE OF TRANSIT'
  'SHIPPING MARKS'
  'DUTY SUM INSURED'
  'FLAG'
  'OPEN COVERNO'
  'INVOICE DATE'
  'INVOICE NO'
  'LC WORDING'
  'QUANTITY'
  'PACKAGING DETAILS'
  'BASIS OF VALUATION'
  'EXCLUDE WAR SRCC'
  'CURRENCY'
  'EXCHANGE RATE'
  'ADDRESS'
  'VESSEL BUILT YEAR'
  'VESSEL FLAG'
  'VOYAGE NO'
  'SHIPMENT DATE'
  'DEPARTURE DATE'
  'SURVEYOR COUNTRY'
  'SURVEYOR CITY'
  'SURVEYOR AGENT'
  'SURVEYOR ADDRESS'
  'EXPORT CONSIGNMENT'
  'CONTAINER DETAILS'
 
  CL_ABAP_CHAR_UTILITIES=>CR_LF INTO STR SEPARATED BY CON_TAB.
 
  LOOP AT IT_FINAL.
*******/ this is to pass body / row data 
    WRITE : IT_FINAL-NETWR    TO LV_NETWR,              "#EC UOM_IN_MES
            IT_FINAL-BOL_DATE TO LV_BOL_DATE,
            IT_FINAL-KAWRT    TO LV_KAWRT,              "#EC UOM_IN_MES
            IT_FINAL-FKDAT    TO LV_FKDAT,
            IT_FINAL-WAERK    TO LV_WAERK,
            IT_FINAL-KURRF    TO LV_KURRF,
            IT_FINAL-SHIPDATE TO LV_SHIPDATE,
            IT_FINAL-DEPTDATE TO LV_DEPTDATE.
 
    CONCATENATE
           STR
           IT_FINAL-SLNO
           IT_FINAL-OWNER
           IT_FINAL-SRNO
           IT_FINAL-PORT_LOAD
           IT_FINAL-PORT_DSCHR
           LV_NETWR
           IT_FINAL-DESCRIP
           IT_FINAL-CUSTNAME
           IT_FINAL-BOL_NUM
           LV_BOL_DATE
           IT_FINAL-VESSELNAME
           IT_FINAL-SHP_TYPE
           IT_FINAL-SHP_MARK
           LV_KAWRT
           IT_FINAL-FLAG
           IT_FINAL-OPEN_CONO
           LV_FKDAT
           IT_FINAL-VBELN
           IT_FINAL-LC_WORD
           IT_FINAL-QUANT
           IT_FINAL-PACKDETL
           IT_FINAL-INCO1
           IT_FINAL-EXCWSR
           LV_WAERK
           LV_KURRF
           IT_FINAL-ADDPAY
           IT_FINAL-VESSBYR
           IT_FINAL-VESSFLG
           IT_FINAL-VOY_FLY_NO
           LV_SHIPDATE
           LV_DEPTDATE
           IT_FINAL-SURCOUNT
           IT_FINAL-INCO2
           IT_FINAL-EXPORT_CON
           IT_FINAL-SURAGT
           IT_FINAL-SURADD
           IT_FINAL-CONTRNO
 
   CL_ABAP_CHAR_UTILITIES=>CR_LF INTO STR SEPARATED BY CON_TAB.
 
  ENDLOOP.
 
  CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
    EXPORTING
      TEXT      = STR
    TABLES
      FTEXT_TAB = IT_ATTACH.
 
ENDFORM.                    " BUILD_XLS_DATA_TABLE
 
******// form POPULATE_EMAIL_MESSAGE_BODY
FORM POPULATE_EMAIL_MESSAGE_BODY .
 
  REFRESH IT_MESSAGE.
  IT_MESSAGE = TEXT-043.  " Please find attached Insurance Certificate details
  APPEND IT_MESSAGE.
 
ENDFORM.                    " POPULATE_EMAIL_MESSAGE_BODY
 
 
*******'/ form SEND_FILE_AS_EMAIL_ATTACHMENT
*&---------------------------------------------------------------------*
*&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PIT_MESSAGE           text
*      -->PIT_ATTACH            text
*      -->P_EMAIL               text
*      -->P_MTITLE              text
*      -->P_FORMAT              text
*      -->P_FILENAME            text
*      -->P_ATTDESCRIPTION      text
*      -->P_SENDER_ADDRESS      text
*      -->P_SENDER_ADDRES_TYPE  text
*      -->P_ERROR               text
*      -->P_RECIEVER            text
*----------------------------------------------------------------------*
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.       "#EC *
 
  DATA: LD_ERROR    TYPE SY-SUBRC,                          "#EC *
*        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.                         "#EC *
 
*  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.
  DESCRIBE TABLE IT_ATTACH LINES W_CNT.
  READ TABLE IT_ATTACH INDEX W_CNT.
  W_DOC_DATA-DOC_SIZE =
     W_CNT * 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
*****/ here you have to pass the email address *TO party*
****/ you can hard code and append to the below s_email table...

  CLEAR T_RECEIVERS.
  REFRESH T_RECEIVERS.
  LOOP AT S_EMAIL.
    T_RECEIVERS-RECEIVER = S_EMAIL.
    T_RECEIVERS-REC_TYPE = 'U'.
    T_RECEIVERS-COM_TYPE = 'INT'.
    T_RECEIVERS-NOTIF_DEL = 'X'.
    T_RECEIVERS-NOTIF_NDEL = 'X'.
    APPEND T_RECEIVERS.
  ENDLOOP.
* copy email address
*****/ here you have to pass the email address *CC party*
****/ you can hard code and append to the below T_CC_EMAIL-EMAIL table...

  CLEAR T_RECEIVERS.
  IF NOT T_RECEIVERS[] IS INITIAL.
    LOOP AT T_CC_EMAIL.
      T_RECEIVERS-RECEIVER = T_CC_EMAIL-EMAIL.
      T_RECEIVERS-REC_TYPE = 'U'.
      T_RECEIVERS-COM_TYPE = 'INT'.
*  t_receivers-notif_del = 'X'.
*  t_receivers-notif_ndel = 'X'.
      T_RECEIVERS-COPY       = 'X'.
      APPEND T_RECEIVERS.
      CLEAR T_RECEIVERS.
    ENDLOOP.
  ENDIF.

  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.                    " SEND_FILE_AS_EMAIL_ATTACHMENT
 
*******/form
 
*&---------------------------------------------------------------------*
*&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
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




*********end of code to trigger mail in excel format....

If any other help please let me know......

I am sure this example code will help you to resolve your problem...

please analyse above code for your requirement...

I have given comments for your reference to enter multiple email addresses "TO" and "CC".....

Reward Points

Cheers,

Sagun Desai