2007 May 14 8:15 AM
dear all ,
i have written the following code to send emails
&----
*& Report ZTRANSPORTER_EMAIL *
*& *
&----
*& *
*& *
&----
REPORT ZTRANSPORTER_EMAIL .
data: maildata type sodocchgi1.
data: entries like sy-tabix.
data: newid like sofolenti1-object_id.
data: sent like sonv-flag.
data: BEGIN OF mailtxt OCCURS 0,
LINE(300),
END OF MAILTXT.
data: mailrec type table of SOMLRECI1 WITH HEADER LINE .
DATA : MAILREC1 type table of SOMLRECI1.
*data: mailrec type string.
data: lt_transporter like ztransporter occurs 0 with header line.
data: begin of lt_transporter2 occurs 0,
transporter(18),
end of lt_transporter2.
DATA : MAILTXT1(10),
MAILTXT2(30),
MAILTXT3(4),
MAILTXT4(18),
MAILTXT5(10),
MAILTXT6(35),
MAILTXT7(30),
MAILTXT8(40),
MAILTXT9(10),
MAILTXT10(5),
MAILTXT11(8),
MAILTXT12(10),
mail1 type string,
mail2 type string,
mail3 type string,
mail4 type string,
mail5 type string,
mail6 type string,
mail7 type string,
mail8 type string,
mail9 type string,
mail10 type string,
mail11 type string,
mail12 type string.
DATA : MAILTXT77 TYPE TABLE OF SOLISTI1 WITH HEADER LINE.
data: begin of lt_transporter1 occurs 0,
Sr_no(10),
transporter(30),
plant(4),
material(18),
VENDOR(10),
vendor_name(35),
vendor_place(30),
material_desc(40),
sched_agreement(10),
sched_line_item(5),
delivery_date(8),
delivery_qty(10),
end of lt_transporter1.
data: lt_email like ztrans_email occurs 0 with header line.
DATA: BEGIN OF MAILTXT13 OCCURS 0 ,
LINE(300),
END OF MAILTXT13.
data: var1 type i,
var2 type i,
var3 type i,
var4 type i,
var5 type i,
var6 type i,
var7 type i,
var8 type i,
var9 type i,
var10 type i,
var11 type i,
var12 type i.
start-of-selection.
clear: maildata, mailtxt, mailrec.
refresh: mailtxt. "mailrec.
select * from ztransporter into table lt_transporter.
select distinct transporter from ztransporter into table lt_transporter2
.
loop at lt_transporter.
move-corresponding lt_transporter to lt_transporter1.
append lt_transporter1.
clear lt_transporter1.
endloop.
if not lt_transporter[] is initial.
select * from ztrans_email into table lt_email
for all entries in lt_transporter
where transporter = lt_transporter-transporter.
endif.
loop at lt_transporter2.
maildata-obj_name = 'TEST'.
maildata-obj_descr = 'Test'.
maildata-obj_langu = sy-langu.
MAIL1 = 'SR NO-'.
MAIL2 = '---TRANSPORTER--
'.
mail3 = 'plant'.
mail4 = '---material---'.
mail5 = '-vendor'.
mail6 = '--
'.
mail7 = '--
'.
mail8 = '--
'.
mail9 = 'sched_agrt'.
mail10 = 'item-'.
mail11 = 'del. date'.
mail12 = '-del. qty-'.
concatenate mail1 ',' mail2 ',' mail3 ',' mail4 ',' mail5 ',' mail6 ','
mail7 ',' mail8 ',' mail9 ',' mail10 ',' mail11 ',' mail12 into
mailtxt77-line
separated by space.
*mailtxt = ' Srno Transporter plant material vendor vendorplace
*materialdesc schedagreement LINEITEM DELIVERYDATE DELIVERYQTY'.
append mailtxt77.
clear mailtxt77.
loop at lt_transporter1 where transporter = lt_transporter2-transporter.
*MOVE LT_TRANSPORTER1+(10) TO MAILTXT(10).
MAILTXT1 = LT_TRANSPORTER1+(10).
*MAILTXT33 = ' '.
var1 = strlen( mailtxt1 ).
var1 = 10 - var1.
shift mailtxt1 right by var1 places.
MAILTXT2 = LT_TRANSPORTER1+10(30).
var2 = strlen( mailtxt2 ).
var2 = 30 - var2.
shift mailtxt2 right by var2 places.
*
*concatenate mailtxt1 mailtxt2 into mailtxt13-line respecting blanks.
MAILTXT3 = LT_TRANSPORTER1+40(4).
var3 = strlen( mailtxt3 ).
var3 = 4 - var3.
shift mailtxt3 right by var3 places.
MAILTXT4 = LT_TRANSPORTER1+44(18).
var4 = strlen( mailtxt4 ).
var4 = 18 - var4.
shift mailtxt4 right by var4 places.
MAILTXT5 = LT_TRANSPORTER1+62(10).
var5 = strlen( mailtxt5 ).
var5 = 10 - var5.
shift mailtxt5 right by var5 places.
MAILTXT6 = LT_TRANSPORTER1+72(35).
var6 = strlen( mailtxt6 ).
var6 = 35 - var6.
shift mailtxt6 right by var6 places.
MAILTXT7 = LT_TRANSPORTER1+107(30).
var7 = strlen( mailtxt7 ).
var7 = 30 - var7.
shift mailtxt7 right by var7 places.
MAILTXT8 = LT_TRANSPORTER1+137(40).
var8 = strlen( mailtxt8 ).
var8 = 40 - var8.
shift mailtxt8 right by var8 places.
MAILTXT9 = LT_TRANSPORTER1+177(10).
var9 = strlen( mailtxt9 ).
var9 = 10 - var9.
shift mailtxt9 right by var9 places.
MAILTXT10 = LT_TRANSPORTER1+187(5).
var10 = strlen( mailtxt10 ).
var10 = 5 - var10.
shift mailtxt10 right by var10 places.
MAILTXT11 = LT_TRANSPORTER1+192(8).
var11 = strlen( mailtxt11 ).
var11 = 8 - var11.
shift mailtxt11 right by var11 places.
MAILTXT12 = LT_TRANSPORTER1+200(10).
var12 = strlen( mailtxt12 ).
var12 = 10 - var12.
shift mailtxt12 right by var12 places.
*CONCATENATE LT_TRANSPORTER1(10) LT_TRANSPORTER112(30)
*LT_TRANSPORTER142(4) LT_TRANSPORTER148(18)
*LT_TRANSPORTER166(10) LT_TRANSPORTER178(35)
*LT_TRANSPORTER1115(30) LT_TRANSPORTER1147(40)
*LT_TRANSPORTER1189(10) LT_TRANSPORTER1201(5)
*LT_TRANSPORTER1208(10) LT_TRANSPORTER1220(10) INTO MAILTXT-LINE.
CONCATENATE MAILTXT1 ',' MAILTXT2 ',' MAILTXT3 ',' MAILTXT4 ','
MAILTXT5 ','
MAILTXT6 ',' MAILTXT7 ',' MAILTXT8 ',' MAILTXT9 ',' MAILTXT10 ','
MAILTXT11
',' MAILTXT12 INTO MAILTXT77-LINE SEPARATED BY SPACE.
mailtxt = lt_transporter1.
append mailtxt77.
clear mailtxt77.
endloop.
clear lt_email.
read table lt_email with key transporter = lt_transporter2-transporter.
if sy-subrc = 0.
mailrec-receiver = lt_email-main_email.
mailrec = lt_email-main_email.
mailrec-rec_type = 'U'.
mailrec-com_type = 'INT'.
mailrec-notif_del = 'X'.
mailrec-notif_ndel = 'X'.
append mailrec.
*perform email.
clear mailrec.
if not lt_email-email2 = ''.
mailrec-receiver = lt_email-email2.
mailrec-rec_type = 'U'.
mailrec-com_type = 'INT'.
mailrec-notif_del = 'X'.
mailrec-notif_ndel = 'X'.
*mailrec = lt_email-email2.
perform email.
append mailrec.
clear mailrec.
endif.
if not lt_email-email3 = ''.
mailrec-receiver = lt_email-email3.
mailrec-rec_type = 'U'.
mailrec-com_type = 'INT'.
mailrec-notif_del = 'X'.
mailrec-notif_ndel = 'X'.
append mailrec.
*mailrec = lt_email-email3.
perform email.
clear mailrec.
endif.
if not lt_email-email4 = ''.
mailrec-receiver = lt_email-email4.
mailrec-rec_type = 'U'.
mailrec-com_type = 'INT'.
mailrec-notif_del = 'X'.
mailrec-notif_ndel = 'X'.
append mailrec.
*mailrec = lt_email-email4.
perform email.
clear mailrec.
endif.
if not lt_email-email5 = ''.
mailrec-receiver = lt_email-email5.
mailrec-rec_type = 'U'.
append mailrec.
mailrec = lt_email-email5.
perform email.
clear mailrec.
endif.
endif.
call function 'SO_NEW_DOCUMENT_SEND_API1'
exporting
document_data = maildata
document_type = 'RAW'
put_in_outbox = 'X'
importing
sent_to_all = sent
new_object_id = newid
tables
object_header = mailtxt
object_content = mailtxt77
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.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
clear : lt_transporter2 , mailrec , mailtxt77 , maildata.
refresh : mailrec , mailtxt77.
endloop.
now my problem is that even though the above fn module gives sy-subrc = 0
and u can see the entry in SOST tcode ...the status here is " no entry in queue yet " . u can also see the entry in so01
but the mail is not goin..
regards,
tarang
2007 May 14 8:19 AM
Hi,
Try using commit work and checkout if it works
call function 'SO_NEW_DOCUMENT_SEND_API1'
exporting
document_data = maildata
document_type = 'RAW'
put_in_outbox = 'X'
<b>commit_work = 'X'</b>
2007 May 14 8:18 AM
Hi
check the config in SCOT tcode.
Reward points if useful
Regards
Anji
2007 May 14 8:19 AM
Hi,
Try using commit work and checkout if it works
call function 'SO_NEW_DOCUMENT_SEND_API1'
exporting
document_data = maildata
document_type = 'RAW'
put_in_outbox = 'X'
<b>commit_work = 'X'</b>
2007 May 14 8:47 AM
HI SHAH,
Even I had a same problem three days back..
Just check the<b> STATUS</b> in SOST Tcode..
If your sending mail failed there..
Please check with your Basis people and confirm whether all the setting for sending mail is okay..
then execute the function module'SO_NEW_DOCUMENT_SEND_API1'
alone by giving the required parameters and again check the <b>STATUS</b> in the SOST Tcode if no error overthere then the mail will be sent..
rewardsif useful
regards,
nazeer