10-26-2007 10:49 AM
Hi all,
I want to send an email to the SAP User in the SAP Inbox with attachment. I have my data in the internal table and I have to send that data as Text file attachment to the SAP Inbox of the specified SAP User ID.
Thanks.
10-26-2007 11:30 AM
10-26-2007 11:30 AM
10-26-2007 11:32 AM
hi,
check this Example:
----
INCLUDE Z_SENDMAIL *
----
************************************************************************
*
TITLE : Common Include for send mail with Excel Attachment *
AUTHOR : Naresh Kumar Amaragani *
DATE : 12/05/06 *
APPLICATION : GENERIC *
PROGRAM Type: Report *
*
DESCRIPTION : Common Include for Sending mail option *
... *
... *
Input/Output Details *************************
Inputs : Nil *
Outputs : Nil *
BDC Group Details **************************
BDC GROUP: None *
***********************************************************************
----
T A B L E S
----
TABLES: SOMLRECI1.
----
V A R I A B L E S
----
DATA: TAB_LINES LIKE SY-TABIX,
V_MAIL_TITLE(100) TYPE C,
V_MESSAGE(200) TYPE C,
V_MAIL_TYP TYPE C.
----
C O N S T A N T S
----
CONSTANTS : C_HEX TYPE X VALUE '09',
K_0D TYPE X VALUE '0D',
K_0A TYPE X VALUE '0A',
C_B TYPE C VALUE 'B',
C_U TYPE C VALUE 'U',
C_EN(2) TYPE C VALUE 'EN',
C_RAW(3) TYPE C VALUE 'RAW',
C_XLS(3) TYPE C VALUE 'XLS',
C_INT(3) TYPE C VALUE 'INT'.
----
I N T E R N A L T A B L E S & S T R U C T U R E S
----
*-- Holds all user ids entered on the selection screen
DATA: BEGIN OF IT_USER_ID OCCURS 0,
USER TYPE USR02-BNAME,
END OF IT_USER_ID.
*-- Holds all mail addresses entered on the selection screen
DATA: BEGIN OF IT_MAIL_ADDR OCCURS 0,
MAILID TYPE SOMLRECI1-RECEIVER,
END OF IT_MAIL_ADDR.
*-- Holds Tab delimeted data
DATA:BEGIN OF IT_BODY OCCURS 0,
LINE(1000) TYPE C,
END OF IT_BODY.
DATA:BEGIN OF IT_HEADING OCCURS 0,
LINE(1000) TYPE C,
END OF IT_HEADING.
*-- Internal tables for send mail functionality
DATA: OBJBIN TYPE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJTXT TYPE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJPACK TYPE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
RECLIST TYPE SOMLRECI1 OCCURS 0 WITH HEADER LINE.
*-- Structure for send mail functionality
DATA: DOC_CHNG LIKE SODOCCHGI1.
----
I N T E R N A L T A B L E S & S T R U C T U R E S
----
*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-013.
PARAMETERS: P_SAPIN RADIOBUTTON GROUP R1 DEFAULT 'X', "SAP Office
P_EMAIL RADIOBUTTON GROUP R1. "Email
*
SELECT-OPTIONS:
s_mailid FOR SOMLRECI1-RECEIVER OBLIGATORY NO INTERVALS
default sy-uname.
*SELECTION-SCREEN END OF BLOCK b2.
&----
*& Form send_mail_with_attch
&----
text
----
FORM SEND_MAIL_WITH_ATTCH TABLES P_IT_HEADING STRUCTURE IT_HEADING
P_IT_BODY STRUCTURE IT_BODY
P_IT_MAIL_ID STRUCTURE IT_MAIL_ADDR
USING P_MAIL_TITLE
P_MESSAGE
P_MAIL_TYP.
Creation of the document to be sent
DOC_CHNG-OBJ_NAME = P_MAIL_TITLE.
DOC_CHNG-OBJ_DESCR = P_MAIL_TITLE.
Creation of body
PERFORM CREATE_BODY USING P_MAIL_TITLE.
Body of email.
OBJTXT-LINE = P_MESSAGE.
APPEND OBJTXT.
Defining the attachment
PERFORM DEFINE_ATTACHMENT TABLES P_IT_BODY
USING P_MAIL_TITLE.
Recipitent details
PERFORM POPULATE_RECEIVER_INFO TABLES P_IT_MAIL_ID
USING P_MAIL_TYP.
Populate data
PERFORM MOVE_DATA TABLES P_IT_HEADING
P_IT_BODY.
Document size
clear tab_lines.
DESCRIBE TABLE objbin LINES tab_lines.
READ TABLE objbin INDEX tab_lines.
doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).
Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_CHNG
PUT_IN_OUTBOX = 'X'
TABLES
PACKING_LIST = OBJPACK
CONTENTS_BIN = OBJBIN
CONTENTS_TXT = OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
OPERATION_NO_AUTHORIZATION = 4
OTHERS = 99.
CHECK SY-SUBRC = 0.
SUBMIT RSCONN01 WITH MODE = C_INT AND RETURN.
ENDFORM. " send_mail_with_attch
&----
*& Form create_body
&----
FORM CREATE_BODY USING P_TITLE.
create body
CLEAR OBJPACK-TRANSF_BIN.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 1.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = 1.
OBJPACK-DOC_TYPE = C_RAW.
objpack-obj_name = 'ORDERS'.
OBJPACK-DOC_SIZE = 1 * 400.
OBJPACK-OBJ_LANGU = C_EN.
APPEND OBJPACK.
CLEAR OBJPACK.
ENDFORM. " create_body
&----
*& Form define_attachment
&----
text
----
FORM DEFINE_ATTACHMENT TABLES T_BODY
USING P_TITLE.
No of lines
DESCRIBE TABLE T_BODY LINES TAB_LINES.
TAB_LINES = TAB_LINES + 1.
Defining the attachment
OBJPACK-TRANSF_BIN = 'X'.
OBJPACK-HEAD_START = 0.
OBJPACK-HEAD_NUM = 0.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = C_XLS.
objpack-obj_name = 'SALES'.
OBJPACK-DOC_SIZE = TAB_LINES * 255.
OBJPACK-OBJ_LANGU = C_EN.
APPEND OBJPACK.
CLEAR OBJPACK.
ENDFORM. " define_attachment
&----
*& Form move_data
&----
text
----
FORM MOVE_DATA TABLES T_HEADING STRUCTURE IT_HEADING
T_BODY STRUCTURE IT_BODY.
Move heading
LOOP AT T_HEADING.
OBJBIN-LINE = T_HEADING-LINE.
APPEND OBJBIN.
CLEAR OBJBIN.
ENDLOOP.
Move detail info
LOOP AT T_BODY.
OBJBIN-LINE = T_BODY-LINE.
APPEND OBJBIN.
CLEAR OBJBIN.
ENDLOOP.
ENDFORM. " move_data
&----
*& Form populate_receiver_info
&----
text
----
FORM POPULATE_RECEIVER_INFO TABLES T_MAIL_ID STRUCTURE IT_MAIL_ADDR
USING P_TYP LIKE V_MAIL_TYP.
LOOP AT T_MAIL_ID.
RECLIST-RECEIVER = T_MAIL_ID-MAILID.
RECLIST-REC_TYPE = P_TYP.
APPEND RECLIST.
ENDLOOP.
ENDFORM. " populate_receiver_info
10-26-2007 11:34 AM
Check this code:
DATA: maildata TYPE sodocchgi1.
DATA: BEGIN OF mailpack OCCURS 0.
INCLUDE STRUCTURE sopcklsti1.
DATA: END OF mailpack.
DATA: BEGIN OF mailhead OCCURS 0.
INCLUDE STRUCTURE solisti1.
DATA: END OF mailhead.
DATA: BEGIN OF mailbin OCCURS 0.
INCLUDE STRUCTURE solisti1.
DATA: END OF mailbin.
DATA: BEGIN OF mailtext OCCURS 0.
INCLUDE STRUCTURE solisti1.
DATA: END OF mailtext.
DATA: BEGIN OF mailrec OCCURS 0.
INCLUDE STRUCTURE somlreci1.
DATA: END OF mailrec.
CLEAR: i_bultos_error_conta.
* Rellenamos el campo fecha.
LOOP AT i_bultos_error_conta.
READ TABLE i_bultos WITH KEY cod_bulto = i_bultos_error_conta-cod_bulto.
i_bultos_error_conta-fecha = i_bultos-fecha.
MODIFY i_bultos_error_conta.
CONCATENATE i_bultos_error_conta-cod_bulto i_bultos_error_conta-fecha INTO mailbin-line.
mailbin+253(2) = cl_abap_char_utilities=>cr_lf.
APPEND mailbin. CLEAR mailbin.
ENDLOOP.
* datos de "cabecera del correo
READ TABLE mailbin INDEX maildata-doc_size.
maildata-doc_size = ( maildata-doc_size - 1 ) * 255 + STRLEN( mailbin ). "255
maildata-obj_langu = sy-langu.
maildata-obj_name = 'CORREO'.
CONCATENATE 'SHIPPING_OUT: BULTOS CON ERROR EN LA CONTABILIZACION' hub
INTO maildata-obj_descr SEPARATED BY space..
CLEAR mailpack.
REFRESH mailpack.
* TEXTO DEL CORREO
CONCATENATE 'Códigos de bulto con error en la contabilización de'
'la entrega para el HUB' hub 'ejecutado el' sy-datum '.'
INTO mailtext-line SEPARATED BY space.
* mailtext-line = 'Fichero con el log de la ejecucion del SHIPPING_OUT'.
APPEND mailtext.
* DESCRIPCIÓN DEL TEXTO DEL MENSAJE
mailpack-transf_bin = ' '.
mailpack-head_start = 1.
mailpack-head_num = 0.
mailpack-body_start = 1.
DESCRIBE TABLE mailtext LINES mailpack-body_num.
mailpack-doc_type = 'RAW'.
APPEND mailpack.
* CREACIÓN DE ARCHIVOS ADJUNTOS
mailpack-transf_bin = 'X'.
mailpack-head_start = 1.
mailpack-head_num = 0.
mailpack-body_start = 1.
DESCRIBE TABLE mailbin LINES mailpack-body_num.
mailpack-doc_type = 'txt'.
mailpack-obj_descr = 'BULTOS_ERROR_CONTABILIZACION'.
mailpack-obj_name = 'Texto'.
mailpack-doc_size = mailpack-body_num * 255.
APPEND mailpack.
* DESTINATARIOS
mailrec-receiver = mail-reciber.
mailrec-rec_type = 'U'.
APPEND mailrec.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = maildata
put_in_outbox = 'X'
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
packing_list = mailpack
* OBJECT_HEADER = MAILHEAD
contents_bin = mailbin
contents_txt = mailtext
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
receivers = mailrec
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.
Regards.
10-26-2007 11:55 AM
hi
good
check this link which ll give you idea about the sending mail with excel attachment.
http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm
reward point if helpful.
thanks
mrutyun^
10-29-2007 8:51 AM