04-30-2009 8:51 AM
Hi,
Im using mail sending logic for sending a mail to Creator of Billing. i have one itab which is having two Users with two different mail IDs. i need to send a mail to those user mail ids to Outlook
user Mail id
12 XXX
12 XXX
13 YYY
13 YYY
at end of User i need to send a mail..
loop at itab.
at end of user.
here sending a mail...for the first user it is sending mail perfectly..and mail request is available in SOST . once its comes to second user sending a mail getting sy-subc = 0 after SO_NEW_DOCUMENT_ATT_SEND_API1 FM..and mail request Not coming for second mail id in SOST both mails also available in Sap out box.
endat.
endloop.
Kindly Help me out..
Regards
Dileep
04-30-2009 8:53 AM
Hi,
to send mails use this:
FORM docu_send_email USING pv_otfdata TYPE tsfotf
pv_emailid TYPE any
pv_formname TYPE any.
DATA: lv_filesize TYPE i,
lv_buffer TYPE string,
lv_attachment TYPE i,
lv_testo TYPE i.
DATA: li_pdfdata TYPE STANDARD TABLE OF tline,
li_mess_att TYPE STANDARD TABLE OF solisti1,
li_mtab_pdf TYPE STANDARD TABLE OF tline,
li_objpack TYPE STANDARD TABLE OF sopcklsti1,
li_objtxt TYPE STANDARD TABLE OF solisti1,
li_objbin TYPE STANDARD TABLE OF solisti1,
li_reclist TYPE STANDARD TABLE OF somlreci1,
li_objhead TYPE soli_tab.
DATA: lwa_pdfdata TYPE tline,
lwa_objpack TYPE sopcklsti1,
lwa_mess_att TYPE solisti1,
lwa_objtxt TYPE solisti1,
lwa_objbin TYPE solisti1,
lwa_reclist TYPE somlreci1,
lwa_doc_chng TYPE sodocchgi1.
CONSTANTS: lc_u TYPE char1 VALUE 'U',
lc_0 TYPE char1 VALUE '0',
lc_1 TYPE char1 VALUE '1',
lc_pdf TYPE char3 VALUE 'PDF',
lc_raw TYPE char3 VALUE 'RAW',
lc_ordform TYPE char15 VALUE 'ZORDCONFIRM_01',
lc_attachment TYPE char10 VALUE 'ATTACHMENT'.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = lc_pdf
max_linewidth = 132
IMPORTING
bin_filesize = lv_filesize
TABLES
otf = pv_otfdata
lines = li_pdfdata
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 4
OTHERS = 5.
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT li_pdfdata INTO lwa_pdfdata.
TRANSLATE lwa_pdfdata USING ' ~'.
CONCATENATE lv_buffer lwa_pdfdata INTO lv_buffer.
CLEAR lwa_pdfdata.
ENDLOOP.
TRANSLATE lv_buffer USING '~ '.
DO.
lwa_mess_att = lv_buffer.
APPEND lwa_mess_att TO li_mess_att.
CLEAR lwa_mess_att.
SHIFT lv_buffer LEFT BY 255 PLACES.
IF lv_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Object with PDF.
REFRESH li_objbin.
li_objbin] = li_mess_att[.
DESCRIBE TABLE li_objbin LINES lv_attachment.
Object with main text of the mail.
lwa_objtxt = space.
APPEND lwa_objtxt TO li_objtxt.
CLEAR lwa_objtxt.
DESCRIBE TABLE li_objtxt LINES lv_testo.
Create the document which is to be sent
lwa_doc_chng-obj_name = text-008.
lwa_doc_chng-obj_descr = text-008.
lwa_doc_chng-sensitivty = lc_0.
lwa_doc_chng-obj_prio = lc_1.
lwa_doc_chng-doc_size = lv_testo * 225.
Pack to main body.
CLEAR lwa_objpack-transf_bin.
header
lwa_objpack-head_start = 1.
The document needs no header (head_num = 0)
lwa_objpack-head_num = 0.
body
lwa_objpack-body_start = 1.
lwa_objpack-body_num = lv_testo.
lwa_objpack-doc_type = lc_raw.
APPEND lwa_objpack TO li_objpack.
CLEAR lwa_objpack.
Create the attachment.
Fill the fields of the packing_list for the attachment:
lwa_objpack-transf_bin = gc_x .
header
lwa_objpack-head_start = 1.
lwa_objpack-head_num = 1.
body
lwa_objpack-body_start = 1.
lwa_objpack-body_num = lv_attachment.
lwa_objpack-doc_type = lc_pdf.
lwa_objpack-obj_name = lc_attachment.
lwa_objpack-obj_descr = text-008.
lwa_objpack-doc_size = lv_attachment * 255.
APPEND lwa_objpack TO li_objpack.
CLEAR lwa_objpack.
lwa_reclist-receiver = pv_emailid.
lwa_reclist-rec_type = lc_u.
lwa_reclist-notif_del = gc_x.
lwa_reclist-notif_ndel = gc_x.
APPEND lwa_reclist TO li_reclist.
IF li_reclist IS NOT INITIAL.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = lwa_doc_chng
put_in_outbox = gc_x
TABLES
packing_list = li_objpack
object_header = li_objhead
contents_bin = li_objbin
contents_txt = li_objtxt
receivers = li_reclist
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 ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM. " DOCU_SEND_EMAIL
04-30-2009 9:10 AM
HI,
This is my code it is working fine for first Customer. and able to send mail(i can view request in SOST). but for the second customer it is giving sy-subrc = 0 after using FM but not sending mail(i can't view request in SOST)...Kindly Help me out..
AT END OF CUST.
PERFORM MAIL_SEND_ALL USING WA_NAST-CUST.
ENDAT.
this is in form :
*Converting OTF data to PDF
IF NOT I_OTF1[] IS INITIAL.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
MAX_LINEWIDTH = 132
* ARCHIVE_INDEX = ' '
* COPYNUMBER = 0
* ASCII_BIDI_VIS2LOG = ' '
* PDF_DELETE_OTFTAB = ' '
IMPORTING
BIN_FILESIZE = V_LEN_IN
* BIN_FILE =
TABLES
OTF = I_OTF1
LINES = I_TLINE
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
ERR_BAD_OTF = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT I_TLINE INTO WA_ILINE.
TRANSLATE WA_ILINE USING '~'.
CONCATENATE WA_BUFFER WA_ILINE INTO WA_BUFFER.
ENDLOOP.
TRANSLATE WA_BUFFER USING '~'.
DO.
APPEND WA_BUFFER TO I_RECORD.
SHIFT WA_BUFFER LEFT BY 255 PLACES.
IF WA_BUFFER IS INITIAL.
EXIT.
ENDIF.
ENDDO.
REFRESH:
I_RECLIST,
I_OBJTXT,
I_OBJBIN,
I_OBJPACK.
CLEAR WA_OBJHEAD.
I_OBJBIN = I_RECORD.
* Create Message Body
* "1. Title and Description
WA_OBJTXT = 'u201CThis is a computer generated Invoice and Shipping Notification. Please do not reply to this e-mail In case you need any clarification, Kindly contact respective Teamu201D '.
APPEND WA_OBJTXT TO I_OBJTXT.
DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.
READ TABLE I_OBJTXT INTO WA_OBJTXT INDEX V_LINES_TXT.
WA_DOC_CHNG-OBJ_NAME = 'Auto Send mail to customers '.
* WA_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.
WA_DOC_CHNG-OBJ_DESCR = 'Invoice and Shipping details Notification -'.
CONCATENATE WA_DOC_CHNG-OBJ_DESCR TEXT INTO WA_DOC_CHNG-OBJ_DESCR.
WA_DOC_CHNG-SENSITIVTY = 'F'.
WA_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.
"1. Main Text
WA_DOC_CHNG-DOC_SIZE = ( V_LINES_TXT - 1 ) * 255 + STRLEN( WA_OBJTXT ).
CLEAR WA_OBJPACK-TRANSF_BIN.
WA_OBJPACK-HEAD_START = 1.
WA_OBJPACK-HEAD_NUM = 0.
WA_OBJPACK-BODY_START = 1.
WA_OBJPACK-BODY_NUM = V_LINES_TXT.
WA_OBJPACK-DOC_TYPE = 'RAW'.
APPEND WA_OBJPACK TO I_OBJPACK.
* (pdf-Attachment)
WA_OBJPACK-TRANSF_BIN = 'X'.
WA_OBJPACK-HEAD_START = 1.
WA_OBJPACK-HEAD_NUM = 0.
WA_OBJPACK-BODY_START = 1.
* Länge des Attachment ermitteln
DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.
READ TABLE I_OBJBIN INTO WA_OBJBIN INDEX V_LINES_BIN.
WA_OBJPACK-DOC_SIZE = V_LINES_BIN * 255 .
WA_OBJPACK-BODY_NUM = V_LINES_BIN.
WA_OBJPACK-DOC_TYPE = 'PDF'.
WA_OBJPACK-OBJ_NAME = WA_DOC_CHNG-OBJ_DESCR.
WA_OBJPACK-OBJ_DESCR = WA_DOC_CHNG-OBJ_DESCR.
APPEND WA_OBJPACK TO I_OBJPACK.
*checking mail ids of customers
LOOP AT T_ADR6 INTO WA_ADR6 WHERE KUNAG EQ CUST.
CLEAR WA_RECLIST.
WA_RECLIST-RECEIVER = WA_ADR6-SMTP_ADDR.
WA_RECLIST-REC_TYPE = 'U'.
APPEND WA_RECLIST TO I_RECLIST.
CLEAR:WA_RECLIST,WA_ADR6.
ENDLOOP.
*sendign mail
IF NOT I_RECLIST[] IS INITIAL.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = WA_DOC_CHNG
PUT_IN_OUTBOX = 'X'
TABLES
PACKING_LIST = I_OBJPACK
OBJECT_HEADER = WA_OBJHEAD
CONTENTS_BIN = I_OBJBIN
CONTENTS_TXT = I_OBJTXT
RECEIVERS = I_RECLIST
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 ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
* RETCODE = SY-SUBRC.
WAIT UP TO 2 SECONDS.
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = ''
AND RETURN.
ENDIF.
ENDIF.
REFRESH: I_RECLIST,I_OBJTXT,I_OBJBIN,I_OBJPACK,I_TLINE,I_RECORD,I_OTF.
CLEAR:WA_OBJHEAD,WA_DOC_CHNG,WA_RECLIST,WA_OBJPACK,WA_OBJTXT,V_LEN_IN.
ENDIF.
ENDFORM. " MAIL_SEND_ALL
Regards,
Dileep.c
Edited by: reddy kumar on Apr 30, 2009 1:43 PM
04-30-2009 9:25 AM
Hi AD,
Thanks for u Code..
After first Customer mail sending i used Commit Work and for second second customer also now it is sending mail and same request is view in SOST..
Regards
Dileepc