2008 May 02 7:01 AM
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.
2008 May 02 7:09 AM
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_spoolsThanks,
Sankar M
2008 May 02 7:09 AM
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_spoolsThanks,
Sankar M
2008 May 02 7:17 AM
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
2008 May 02 7:22 AM
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
2008 May 02 7:25 AM
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