Коллеги, приветствую.
Проблема в том, что почта, отправляемая через класс cl_bcs - не уходит.
В SOST её видно, но в статусе 'Ещё нет записей в очереди ожидания'(Сообщение SO672). Когда делаешь ручную повторную отправку - уходит.
Внимание, вопрос: что я делаю не так и как мне исправить отправку?
Код:
Code:
data
: lo_document type ref to cl_document_bcs
, lo_bcs type ref to cl_bcs
, lo_recipient type ref to if_recipient_bcs
, lo_recipient_copy type ref to if_recipient_bcs
, lo_sender type ref to if_sender_bcs
, lo_ex_bcs type ref to cx_bcs
, lv_subrc type os_boolean
.
data
: ls_mail type pa0105-usrid_long
, lv_text type string
, lv_message type string
, lv_sub type so_obj_des
, lv_str type string
, lt_mail type ztmailtable
.
lt_mail[] = im_t_mail[].
lv_str = im_title.
lv_sub = lv_str.
*
clear lo_document.
*
try.
lo_document = cl_document_bcs=>create_document(
i_type = 'HTM'
i_subject = lv_sub
i_text = im_t_msg
i_language = sy-langu ).
catch cx_document_bcs.
endtry.
*
try.
lo_bcs = cl_bcs=>create_persistent( ).
catch cx_send_req_bcs.
endtry.
*
try.
lo_bcs->set_document( lo_document ).
catch cx_send_req_bcs.
endtry.
*
* try.
* lo_bcs->set_message_subject(
* ip_subject = lv_str
* ).
* catch cx_send_req_bcs.
* endtry.
*
* Add 'recipient'
read table lt_mail into ls_mail index 1.
if sy-subrc eq 0.
delete lt_mail index 1.
endif.
try.
lo_recipient = cl_cam_address_bcs=>create_internet_address(
i_address_string = ls_mail
).
catch cx_address_bcs.
endtry.
*
try.
call method lo_bcs->add_recipient
exporting
i_recipient = lo_recipient
i_express = 'X'.
catch cx_send_req_bcs.
endtry.
*
* Add 'copy'
loop at lt_mail into ls_mail.
clear lo_recipient_copy.
try.
lo_recipient_copy = cl_cam_address_bcs=>create_internet_address(
ls_mail
).
catch cx_address_bcs.
endtry.
try.
call method lo_bcs->add_recipient
exporting
i_recipient = lo_recipient_copy
i_express = 'X'
i_copy = 'X'.
catch cx_send_req_bcs.
endtry.
endloop.
*
* Add 'sender'
* try.
* lo_sender = cl_cam_address_bcs=>create_internet_address(
* i_address_name = im_sndnm
* i_address_string = im_sndml ).
* catch cx_address_bcs.
* endtry.
try.
lo_sender = cl_sapuser_bcs=>create( sy-uname ).
catch cx_address_bcs.
endtry.
*
try.
call method lo_bcs->set_sender
exporting i_sender = lo_sender.
catch cx_send_req_bcs.
endtry.
*
try.
lo_bcs->set_send_immediately( 'X' ).
catch cx_send_req_bcs.
endtry.
*
* Send Mail
try.
lv_subrc = lo_bcs->send( ).
* commit work.
catch cx_bcs into lo_ex_bcs.
lv_message = lo_ex_bcs->get_text( ).
endtry.
*
ch_subrc = sy-subrc.
ch_msg = lv_message.
Ещё, натыкался на такой пост на SCN:
http://wiki.scn.sap.com/wiki/display/SI/COMMIT_WORK+-+SO672+-+Still+no+entry+in+queueНо, COMMIT после отправки я делаю.