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

Send email through sap..

Former Member
0 Likes
751

Hi,

I want to send an email to the user if an operation fails i.e., i should send an error msg by mail..

how can I do this??

i tried using SO_DOCUMENT_SEND_API1..

But its not working as its for mail with attachment...

what is the FM to send without attachment...and what i need to pass to the FM..

any pointers are helpful...

thanks.

1 ACCEPTED SOLUTION
Read only

p291102
Active Contributor
0 Likes
711

Hi,

Following report is the sample report for sending the mail.

*

TABLES: TBTCP, ZGT001L.
*PARAMETERS TEST(5).
DATA: TJOBNAME LIKE TBTCP-JOBNAME VALUE '321 PENDING AT FPS',
      SPOOLID LIKE TSP01-RQIDENT, V_LGORT LIKE MSEG-LGORT,
      V_REPORT TYPE RSVAR-REPORT, V_VARIANT TYPE RSVAR-VARIANT.

DATA: BEGIN OF VVALUES OCCURS 0.
        INCLUDE STRUCTURE RSPARAMS.
DATA END OF VVALUES.

DATA : BEGIN OF T_RECEIVERS OCCURS 0.
        INCLUDE STRUCTURE SOMLRECI1.
DATA END OF T_RECEIVERS.

DATA: BEGIN OF T_TBTCP,
*      jobname like tbtcp-jobname,
*      jobcount like tbtcp-jobcount,
      LISTIDENT LIKE TBTCP-LISTIDENT,
      SDLDATE LIKE TBTCP-SDLDATE,
      SDLTIME LIKE TBTCP-SDLTIME,
      VARIANT LIKE TBTCP-VARIANT,
      END OF T_TBTCP,
      ITAB_SPOOL LIKE STANDARD TABLE OF T_TBTCP,
      WA_SPOOL LIKE T_TBTCP.

DATA: PLIST LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
DATA: DOCUMENT_DATA LIKE SODOCCHGI1.
DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: SO_ALI LIKE SOLI OCCURS 100 WITH HEADER LINE,
      REAL_TYPE LIKE SOODK-OBJTP,
      SP_LANG LIKE TST01-DLANG, LINE_SIZE TYPE I VALUE 255,
      V_NAME LIKE SOEXTRECI1-RECEIVER.

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.

START-OF-SELECTION.

  PERFORM GET_SPOOL_REQNUMBER USING TJOBNAME. " CHANGING SPOOLID.
  PERFORM SEND_MAIL.
*  PERFORM REMOVE_BLANK_SPOOLS.

*&---------------------------------------------------------------------*
*&      Form  GET_SPOOL_REQNUMBER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0111   text                                                *
*      <--P_UU  text                                                   *
*----------------------------------------------------------------------*
FORM GET_SPOOL_REQNUMBER USING P_0111.

  SELECT A~LISTIDENT B~STRTDATE B~STRTTIME A~VARIANT
   FROM TBTCP AS A INNER JOIN TBTCO AS B
        ON A~JOBNAME EQ B~JOBNAME AND
           A~JOBCOUNT EQ B~JOBCOUNT AND
           A~STEPCOUNT EQ B~STEPCOUNT
   INTO TABLE ITAB_SPOOL
      WHERE A~JOBNAME = P_0111 AND B~STRTDATE EQ SY-DATUM.

ENDFORM.                    " GET_SPOOL_REQNUMBER
*&---------------------------------------------------------------------*
*&      Form  send_mail
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM SEND_MAIL .
* Get the spool data.
  LOOP AT ITAB_SPOOL INTO WA_SPOOL.
    REFRESH : SO_ALI, PLIST, T_RECEIVERS.
    CLEAR : SO_ALI, PLIST, V_NAME, DOCUMENT_DATA, T_RECEIVERS, SPOOLID,
            V_REPORT, V_VARIANT, V_LGORT.
    IF WA_SPOOL-LISTIDENT <> '0'.
      MOVE WA_SPOOL-LISTIDENT TO SPOOLID.
      CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
        EXPORTING
          RQIDENT              = SPOOLID
          FIRST_LINE           = 1
          LAST_LINE            = 0
          DESIRED_TYPE         = ' '
        IMPORTING
          REAL_TYPE            = REAL_TYPE
          SP_LANG              = SP_LANG
        TABLES
          BUFFER               = SO_ALI
        EXCEPTIONS
          NO_SUCH_JOB          = 1
          JOB_CONTAINS_NO_DATA = 2
          SELECTION_EMPTY      = 3
          NO_PERMISSION        = 4
          CAN_NOT_ACCESS       = 5
          READ_ERROR           = 6
          TYPE_NO_MATCH        = 7
          OTHERS               = 8.

* Check the return code.
      IF SY-SUBRC <> 0.
        MESSAGE S208(00) WITH 'Error'.
        LEAVE LIST-PROCESSING.
      ENDIF.

DATA : DATE LIKE SY-DATUM,
       DATE1(10) TYPE C.

* Prepare the data.

CLEAR OBJTXT.
REFRESH OBJTXT.

OBJTXT = 'PLEASE CHECK THE LIST OF PENDING ACKNOWLEDGEMENT'.
APPEND OBJTXT.

CONCATENATE 'ISSUE STORAGE LOCATION :' WA_SPOOL-VARIANT INTO OBJTXT.
APPEND OBJTXT.

DATE = SY-DATUM - 1.

CONCATENATE DATE+6(2) '-' DATE+4(2) '-' DATE+0(4) INTO DATE1.

CONCATENATE 'POSTING DATE           :' DATE1 INTO OBJTXT.
APPEND OBJTXT.

OBJTXT = ''.
APPEND OBJTXT.

CLEAR PLIST.
REFRESH PLIST.

PLIST-TRANSF_BIN = SPACE.
PLIST-HEAD_START = 1.
PLIST-HEAD_NUM = 0.
PLIST-BODY_START = 1.
DESCRIBE TABLE OBJTXT LINES PLIST-BODY_NUM.

PLIST-DOC_TYPE = 'RAW'.
APPEND PLIST.

CLEAR PLIST.

*      PLIST-TRANSF_BIN = 'X'.
*      PLIST-HEAD_START = 0.
*      PLIST-HEAD_NUM = 0.
*      PLIST-BODY_START = 0.
*      PLIST-BODY_NUM = 0.
*      PLIST-DOC_TYPE = 'RAW'.
      PLIST-OBJ_DESCR = WA_SPOOL-VARIANT.
*      APPEND PLIST.

      PLIST-TRANSF_BIN = 'X'.
      PLIST-HEAD_START = 0.
      PLIST-HEAD_NUM = 0.
      PLIST-BODY_START = 1.

      DESCRIBE TABLE SO_ALI LINES PLIST-BODY_NUM.

      PLIST-DOC_TYPE = REAL_TYPE.

* Get the size.

      READ TABLE SO_ALI INDEX PLIST-BODY_NUM.
      PLIST-DOC_SIZE = ( PLIST-BODY_NUM - 1 ) * LINE_SIZE + STRLEN( SO_ALI ).
      APPEND PLIST.


*****
***get the values of the variant
      MOVE : WA_SPOOL-VARIANT TO V_VARIANT.

      SELECT * FROM TBTCP WHERE JOBNAME EQ TJOBNAME ORDER BY SDLDATE.
        MOVE TBTCP-PROGNAME TO V_REPORT.
      ENDSELECT.

      CALL FUNCTION 'RS_VARIANT_VALUES_TECH_DATA'
        EXPORTING
          REPORT                     = V_REPORT
          VARIANT                    = V_VARIANT
*         SEL_TEXT                   = ' '
*         MOVE_OR_WRITE              = 'W'
*         SORTED                     = ' '
*         EXECUTE_DIRECT             =
*       IMPORTING
*         TECHN_DATA                 =
        TABLES
          VARIANT_VALUES             = VVALUES
       EXCEPTIONS
         VARIANT_NON_EXISTENT       = 1
         VARIANT_OBSOLETE           = 2
         OTHERS                     = 3.

      LOOP AT VVALUES.
        CASE VVALUES-SELNAME.
          WHEN 'P_ILGORT'.
            MOVE VVALUES-LOW TO V_LGORT.
        ENDCASE.
      ENDLOOP.

      SELECT SINGLE MAILID FROM ZGT001L INTO ZGT001L-MAILID WHERE WERKS EQ '1000' AND LGORT EQ V_LGORT.
      IF SY-SUBRC EQ 0.
        T_RECEIVERS-RECEIVER = ZGT001L-MAILID.
        T_RECEIVERS-REC_TYPE = 'U'.
        APPEND T_RECEIVERS.

      SELECT SINGLE INVCODE FROM ZGT001L INTO ZGT001L-INVCODE WHERE WERKS EQ '1000' AND LGORT EQ V_LGORT.
      IF ZGT001L-INVCODE = 'SOU1'.
        T_RECEIVERS-RECEIVER = 'emailaddress'.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COPY = 'X'.
        APPEND T_RECEIVERS.
      ELSE.
      ENDIF.

        T_RECEIVERS-RECEIVER = 'emailaddress'.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COPY = 'X'.
        APPEND T_RECEIVERS.

        T_RECEIVERS-RECEIVER = 'emailaddress'.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COPY = 'X'.
        APPEND T_RECEIVERS.

        T_RECEIVERS-RECEIVER = 'emailaddress'.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COPY = 'X'.
        APPEND T_RECEIVERS.

      ENDIF.

*****

      IF NOT SP_LANG IS INITIAL.
        DOCUMENT_DATA-OBJ_LANGU = SP_LANG.
      ELSE.
        DOCUMENT_DATA-OBJ_LANGU = SY-LANGU.
      ENDIF.

      V_NAME = SY-UNAME.

* Subject.
CONCATENATE 'List of Pending Acknowledgement from St. Loc.:' WA_SPOOL-VARIANT
            INTO DOCUMENT_DATA-OBJ_DESCR.

*      DOCUMENT_DATA-OBJ_DESCR = 'List of Pending Acknowledgement'.


* Send the email.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
        EXPORTING
          DOCUMENT_DATA              = DOCUMENT_DATA
          SENDER_ADDRESS             = V_NAME
          SENDER_ADDRESS_TYPE        = 'B'
        TABLES
          PACKING_LIST               = PLIST
          CONTENTS_BIN               = SO_ALI
          CONTENTS_TXT               = OBJTXT
          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.

      IF SY-SUBRC <> 0.
        MESSAGE E208(00) WITH 'Error in sending email'.
      ENDIF.

      COMMIT WORK.
* Send the email immediately.
      SUBMIT RSCONN01
      WITH MODE = 'INT'
      AND RETURN.

      IF SY-SUBRC EQ 0.
        WRITE 'To get the spool no'.

        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.
        IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.

        WRITE : / 'Spool id of the job that is sent', SPOOLID,
                 GD_EVENTID,
                 GD_EVENTPARM,
                 GD_EXTERNAL_PROGRAM_ACTIVE,
                 GD_JOBCOUNT,
                 GD_JOBNAME,
                 GD_STEPCOUNT.
      ENDIF.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " send_mail


*&---------------------------------------------------------------------*
*&      Form  remove_blank_spools
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
*FORM REMOVE_BLANK_SPOOLS .
*  LOOP AT ITAB_SPOOL INTO WA_SPOOL.
*    MOVE WA_SPOOL-LISTIDENT TO SPOOLID.
*
*    CALL FUNCTION 'RSPO_ISELECT_TSP01'
*      EXPORTING
*        RFCSYSTEM        = SY-SYSID
*        RQIDENT          = SPOOLID
**   FORUPDATE        = ' '
*     IMPORTING
*       TSP01_ELEM       = W_INFO
*     EXCEPTIONS
*       ERROR            = 1
*       OTHERS           = 2.
*
*    CALL FUNCTION 'RSPO_IRETURN_RAW_DATA'
*      EXPORTING
*        RQ                 = W_INFO
*      TABLES
*       LINE_BUFFER        = W_DATA
*    PAGE_INDEX         = W_PAGES
**       LINE_BUFFER2       =
*     EXCEPTIONS
*       ERROR              = 1
*       OTHERS             = 2.
*
*    IF W_INFO-RQDOCTYPE = 'LIST'.
*
*      CALL FUNCTION 'RSPO_R_GET_TOC_SPOOLREQ'
*        EXPORTING
*          RQIDENT = SPOOLID
*        TABLES
*          TOCDESC = W_TODESC
*        EXCEPTIONS
*          ERROR   = 1
*          OTHERS  = 2.
*      CALL FUNCTION 'RSPO_SPOOLDATA_WRITE_INIT'.
**      READ TABLE W_DATA WITH KEY DATA_LINE = 'List contains no data'.
*      LOOP AT W_DATA.
*        IF W_DATA-DATA_LINE CP 'List contains no data'.
*        ENDIF.
*      ENDLOOP.
*    ENDIF.
*  ENDLOOP.
*ENDFORM.                    " remove_blank_spools

Thanks,

Sankar M

Hi,

I want to send an email to the user if an operation fails i.e., i should send an error msg by mail..

how can I do this??

i tried using SO_DOCUMENT_SEND_API1..

But its not working as its for mail with attachment...

what is the FM to send without attachment...and what i need to pass to the FM..

any pointers are helpful...

thanks.

4 REPLIES 4
Read only

p291102
Active Contributor
0 Likes
712

Hi,

Following report is the sample report for sending the mail.

*

TABLES: TBTCP, ZGT001L.
*PARAMETERS TEST(5).
DATA: TJOBNAME LIKE TBTCP-JOBNAME VALUE '321 PENDING AT FPS',
      SPOOLID LIKE TSP01-RQIDENT, V_LGORT LIKE MSEG-LGORT,
      V_REPORT TYPE RSVAR-REPORT, V_VARIANT TYPE RSVAR-VARIANT.

DATA: BEGIN OF VVALUES OCCURS 0.
        INCLUDE STRUCTURE RSPARAMS.
DATA END OF VVALUES.

DATA : BEGIN OF T_RECEIVERS OCCURS 0.
        INCLUDE STRUCTURE SOMLRECI1.
DATA END OF T_RECEIVERS.

DATA: BEGIN OF T_TBTCP,
*      jobname like tbtcp-jobname,
*      jobcount like tbtcp-jobcount,
      LISTIDENT LIKE TBTCP-LISTIDENT,
      SDLDATE LIKE TBTCP-SDLDATE,
      SDLTIME LIKE TBTCP-SDLTIME,
      VARIANT LIKE TBTCP-VARIANT,
      END OF T_TBTCP,
      ITAB_SPOOL LIKE STANDARD TABLE OF T_TBTCP,
      WA_SPOOL LIKE T_TBTCP.

DATA: PLIST LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
DATA: DOCUMENT_DATA LIKE SODOCCHGI1.
DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: SO_ALI LIKE SOLI OCCURS 100 WITH HEADER LINE,
      REAL_TYPE LIKE SOODK-OBJTP,
      SP_LANG LIKE TST01-DLANG, LINE_SIZE TYPE I VALUE 255,
      V_NAME LIKE SOEXTRECI1-RECEIVER.

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.

START-OF-SELECTION.

  PERFORM GET_SPOOL_REQNUMBER USING TJOBNAME. " CHANGING SPOOLID.
  PERFORM SEND_MAIL.
*  PERFORM REMOVE_BLANK_SPOOLS.

*&---------------------------------------------------------------------*
*&      Form  GET_SPOOL_REQNUMBER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0111   text                                                *
*      <--P_UU  text                                                   *
*----------------------------------------------------------------------*
FORM GET_SPOOL_REQNUMBER USING P_0111.

  SELECT A~LISTIDENT B~STRTDATE B~STRTTIME A~VARIANT
   FROM TBTCP AS A INNER JOIN TBTCO AS B
        ON A~JOBNAME EQ B~JOBNAME AND
           A~JOBCOUNT EQ B~JOBCOUNT AND
           A~STEPCOUNT EQ B~STEPCOUNT
   INTO TABLE ITAB_SPOOL
      WHERE A~JOBNAME = P_0111 AND B~STRTDATE EQ SY-DATUM.

ENDFORM.                    " GET_SPOOL_REQNUMBER
*&---------------------------------------------------------------------*
*&      Form  send_mail
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM SEND_MAIL .
* Get the spool data.
  LOOP AT ITAB_SPOOL INTO WA_SPOOL.
    REFRESH : SO_ALI, PLIST, T_RECEIVERS.
    CLEAR : SO_ALI, PLIST, V_NAME, DOCUMENT_DATA, T_RECEIVERS, SPOOLID,
            V_REPORT, V_VARIANT, V_LGORT.
    IF WA_SPOOL-LISTIDENT <> '0'.
      MOVE WA_SPOOL-LISTIDENT TO SPOOLID.
      CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
        EXPORTING
          RQIDENT              = SPOOLID
          FIRST_LINE           = 1
          LAST_LINE            = 0
          DESIRED_TYPE         = ' '
        IMPORTING
          REAL_TYPE            = REAL_TYPE
          SP_LANG              = SP_LANG
        TABLES
          BUFFER               = SO_ALI
        EXCEPTIONS
          NO_SUCH_JOB          = 1
          JOB_CONTAINS_NO_DATA = 2
          SELECTION_EMPTY      = 3
          NO_PERMISSION        = 4
          CAN_NOT_ACCESS       = 5
          READ_ERROR           = 6
          TYPE_NO_MATCH        = 7
          OTHERS               = 8.

* Check the return code.
      IF SY-SUBRC <> 0.
        MESSAGE S208(00) WITH 'Error'.
        LEAVE LIST-PROCESSING.
      ENDIF.

DATA : DATE LIKE SY-DATUM,
       DATE1(10) TYPE C.

* Prepare the data.

CLEAR OBJTXT.
REFRESH OBJTXT.

OBJTXT = 'PLEASE CHECK THE LIST OF PENDING ACKNOWLEDGEMENT'.
APPEND OBJTXT.

CONCATENATE 'ISSUE STORAGE LOCATION :' WA_SPOOL-VARIANT INTO OBJTXT.
APPEND OBJTXT.

DATE = SY-DATUM - 1.

CONCATENATE DATE+6(2) '-' DATE+4(2) '-' DATE+0(4) INTO DATE1.

CONCATENATE 'POSTING DATE           :' DATE1 INTO OBJTXT.
APPEND OBJTXT.

OBJTXT = ''.
APPEND OBJTXT.

CLEAR PLIST.
REFRESH PLIST.

PLIST-TRANSF_BIN = SPACE.
PLIST-HEAD_START = 1.
PLIST-HEAD_NUM = 0.
PLIST-BODY_START = 1.
DESCRIBE TABLE OBJTXT LINES PLIST-BODY_NUM.

PLIST-DOC_TYPE = 'RAW'.
APPEND PLIST.

CLEAR PLIST.

*      PLIST-TRANSF_BIN = 'X'.
*      PLIST-HEAD_START = 0.
*      PLIST-HEAD_NUM = 0.
*      PLIST-BODY_START = 0.
*      PLIST-BODY_NUM = 0.
*      PLIST-DOC_TYPE = 'RAW'.
      PLIST-OBJ_DESCR = WA_SPOOL-VARIANT.
*      APPEND PLIST.

      PLIST-TRANSF_BIN = 'X'.
      PLIST-HEAD_START = 0.
      PLIST-HEAD_NUM = 0.
      PLIST-BODY_START = 1.

      DESCRIBE TABLE SO_ALI LINES PLIST-BODY_NUM.

      PLIST-DOC_TYPE = REAL_TYPE.

* Get the size.

      READ TABLE SO_ALI INDEX PLIST-BODY_NUM.
      PLIST-DOC_SIZE = ( PLIST-BODY_NUM - 1 ) * LINE_SIZE + STRLEN( SO_ALI ).
      APPEND PLIST.


*****
***get the values of the variant
      MOVE : WA_SPOOL-VARIANT TO V_VARIANT.

      SELECT * FROM TBTCP WHERE JOBNAME EQ TJOBNAME ORDER BY SDLDATE.
        MOVE TBTCP-PROGNAME TO V_REPORT.
      ENDSELECT.

      CALL FUNCTION 'RS_VARIANT_VALUES_TECH_DATA'
        EXPORTING
          REPORT                     = V_REPORT
          VARIANT                    = V_VARIANT
*         SEL_TEXT                   = ' '
*         MOVE_OR_WRITE              = 'W'
*         SORTED                     = ' '
*         EXECUTE_DIRECT             =
*       IMPORTING
*         TECHN_DATA                 =
        TABLES
          VARIANT_VALUES             = VVALUES
       EXCEPTIONS
         VARIANT_NON_EXISTENT       = 1
         VARIANT_OBSOLETE           = 2
         OTHERS                     = 3.

      LOOP AT VVALUES.
        CASE VVALUES-SELNAME.
          WHEN 'P_ILGORT'.
            MOVE VVALUES-LOW TO V_LGORT.
        ENDCASE.
      ENDLOOP.

      SELECT SINGLE MAILID FROM ZGT001L INTO ZGT001L-MAILID WHERE WERKS EQ '1000' AND LGORT EQ V_LGORT.
      IF SY-SUBRC EQ 0.
        T_RECEIVERS-RECEIVER = ZGT001L-MAILID.
        T_RECEIVERS-REC_TYPE = 'U'.
        APPEND T_RECEIVERS.

      SELECT SINGLE INVCODE FROM ZGT001L INTO ZGT001L-INVCODE WHERE WERKS EQ '1000' AND LGORT EQ V_LGORT.
      IF ZGT001L-INVCODE = 'SOU1'.
        T_RECEIVERS-RECEIVER = 'emailaddress'.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COPY = 'X'.
        APPEND T_RECEIVERS.
      ELSE.
      ENDIF.

        T_RECEIVERS-RECEIVER = 'emailaddress'.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COPY = 'X'.
        APPEND T_RECEIVERS.

        T_RECEIVERS-RECEIVER = 'emailaddress'.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COPY = 'X'.
        APPEND T_RECEIVERS.

        T_RECEIVERS-RECEIVER = 'emailaddress'.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COPY = 'X'.
        APPEND T_RECEIVERS.

      ENDIF.

*****

      IF NOT SP_LANG IS INITIAL.
        DOCUMENT_DATA-OBJ_LANGU = SP_LANG.
      ELSE.
        DOCUMENT_DATA-OBJ_LANGU = SY-LANGU.
      ENDIF.

      V_NAME = SY-UNAME.

* Subject.
CONCATENATE 'List of Pending Acknowledgement from St. Loc.:' WA_SPOOL-VARIANT
            INTO DOCUMENT_DATA-OBJ_DESCR.

*      DOCUMENT_DATA-OBJ_DESCR = 'List of Pending Acknowledgement'.


* Send the email.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
        EXPORTING
          DOCUMENT_DATA              = DOCUMENT_DATA
          SENDER_ADDRESS             = V_NAME
          SENDER_ADDRESS_TYPE        = 'B'
        TABLES
          PACKING_LIST               = PLIST
          CONTENTS_BIN               = SO_ALI
          CONTENTS_TXT               = OBJTXT
          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.

      IF SY-SUBRC <> 0.
        MESSAGE E208(00) WITH 'Error in sending email'.
      ENDIF.

      COMMIT WORK.
* Send the email immediately.
      SUBMIT RSCONN01
      WITH MODE = 'INT'
      AND RETURN.

      IF SY-SUBRC EQ 0.
        WRITE 'To get the spool no'.

        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.
        IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.

        WRITE : / 'Spool id of the job that is sent', SPOOLID,
                 GD_EVENTID,
                 GD_EVENTPARM,
                 GD_EXTERNAL_PROGRAM_ACTIVE,
                 GD_JOBCOUNT,
                 GD_JOBNAME,
                 GD_STEPCOUNT.
      ENDIF.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " send_mail


*&---------------------------------------------------------------------*
*&      Form  remove_blank_spools
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
*FORM REMOVE_BLANK_SPOOLS .
*  LOOP AT ITAB_SPOOL INTO WA_SPOOL.
*    MOVE WA_SPOOL-LISTIDENT TO SPOOLID.
*
*    CALL FUNCTION 'RSPO_ISELECT_TSP01'
*      EXPORTING
*        RFCSYSTEM        = SY-SYSID
*        RQIDENT          = SPOOLID
**   FORUPDATE        = ' '
*     IMPORTING
*       TSP01_ELEM       = W_INFO
*     EXCEPTIONS
*       ERROR            = 1
*       OTHERS           = 2.
*
*    CALL FUNCTION 'RSPO_IRETURN_RAW_DATA'
*      EXPORTING
*        RQ                 = W_INFO
*      TABLES
*       LINE_BUFFER        = W_DATA
*    PAGE_INDEX         = W_PAGES
**       LINE_BUFFER2       =
*     EXCEPTIONS
*       ERROR              = 1
*       OTHERS             = 2.
*
*    IF W_INFO-RQDOCTYPE = 'LIST'.
*
*      CALL FUNCTION 'RSPO_R_GET_TOC_SPOOLREQ'
*        EXPORTING
*          RQIDENT = SPOOLID
*        TABLES
*          TOCDESC = W_TODESC
*        EXCEPTIONS
*          ERROR   = 1
*          OTHERS  = 2.
*      CALL FUNCTION 'RSPO_SPOOLDATA_WRITE_INIT'.
**      READ TABLE W_DATA WITH KEY DATA_LINE = 'List contains no data'.
*      LOOP AT W_DATA.
*        IF W_DATA-DATA_LINE CP 'List contains no data'.
*        ENDIF.
*      ENDLOOP.
*    ENDIF.
*  ENDLOOP.
*ENDFORM.                    " remove_blank_spools

Thanks,

Sankar M

Read only

Former Member
0 Likes
711

Please have a look at below thread.

/thread/98781 [original link is broken]

I hope it helps.

Best Regards,

Vibha

Please mark all the helpful answers

Read only

Former Member
0 Likes
711

Hi Dinesh,

Instead of referring all the links you can do one thing :

just go to se37 and give the function module name:

SO_NEW_DOCUMENT_SEND_API1

and place the cursor on the name and click on "where used list" after the execution button, and it will takes you to all programs where it has been used, with different functionalities.

i think it helps and solve your problem.

dont waste your time, work smartly.

Reward all helpful answers.

Thanks

abdul samee

Read only

Former Member
0 Likes
711

Hi,

Usethe FunctionModule 'SO_DOCUMENT_SEND_API1' to send amail with some text.

Here is a program that sends a mail with some text.

&----


*& Report ZNNR_EMAIL

*&

&----


*&

*&

&----


REPORT ZNNR_EMAIL.

PARAMETERS: psubject(40) type c default 'Hello',

p_email(40) type c default 'some mail id' .

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

You can use following FM's

call function to send email CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'

EXPORTING

document_data = docdata

document_type = 'RAW'

commit_work = 'X'

TABLES

object_header = t_objhead

object_content = t_objtxt

receivers = t_receiver

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.

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

also if you want to attach any file with the mail u can use following FM

Sending the document

IF NOT l_t_reclist[] IS INITIAL.

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'

EXPORTING

document_data = l_doc_chng

commit_work = 'X'

TABLES

packing_list = l_t_objpack

object_header = l_t_objhead

contents_bin = l_t_objbin

contents_txt = l_t_objtxt

receivers = l_t_reclist

EXCEPTIONS

too_many_receivers = 1

document_not_sent = 2

operation_no_authorization = 4

OTHERS = 99.

ENDIF.

hope this helps..

Regards,

Raj.

Edited by: Raj on May 2, 2008 8:26 AM