Текущее время: Вс, июл 27 2025, 20:31

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 11:36 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Коллеги, приветствую.
Проблема в том, что почта, отправляемая через класс 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 после отправки я делаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 15:38 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Предположу, что виноват тип 'HTM'. Попробуйте выбрать тип из таблицы TSOTD. Например, RAW.

Остальной код на вид рабочий, у меня в системе как раз так почта и отправляется.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 15:49 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Заменил на RAW. Эффекта нет. Так же, повисают с сомнительным статусом.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 16:06 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Давайте еще одно отличие в коде устраним и сделаем по аналогии с программой BCS_EXAMPLE_7.
Перенесите строку
Code:
lo_bcs = cl_bcs=>create_persistent( ).
выше, до создания документа.

Если снова не поможет, можно проверить рекомендации ноты 1895298.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 16:39 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Перенес CREATE_PERSISTENT - не помогло.
Начал смотреть KBA-шку 1895298.
При выполнении поего метода, где идёт отсылка, системная переменная SY-ONCOM = 'N'.

Нашел расшифровку кодов:
SY-ONCOM = 'V' => FUNCTION ... IN UPDATE TASK
SY-ONCOM = 'P' => PERFORM ... ON COMMIT
SY-ONCOM = 'T' => процесс запущен кодом транзакции
SY-ONCOM = 'N' when called from Dynamic action and
SY-ONCOM = 'S' when called executed directly.

Нашел такой пост от индусов: http://scn.sap.com/thread/2025860

На самом деле, добавлял/удалял COMMIT WORK - эффект один.
Добавил блок от индусов после вызова метода SEND:

Code:
call function 'TH_IN_UPDATE_TASK' importing in_update_task = lv_upd_tsk.
if lv_upd_tsk = 0.
  commit work.
endif.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 16:45 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
В общем, не помогло


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 16:47 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Блок от индусов бесполезен, у Вас вызов не в процессе обновления.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта  Тема решена
СообщениеДобавлено: Вт, фев 03 2015, 16:51 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Сможете данную процедуру отправки выдернуть в отдельную программу и вызвать через SUBMIT? Рекомендуют, когда SY-ONCOM = 'N'.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 17:36 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Сейчас, попробую.
Тоже, грешу на то, что отсылка идёт из метода класса, реализующего BadI.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 17:45 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Acid_Firewood: у нас такое было. Проблема была в настройке в SOST. Проблему решал базис (к сожалению узнать как решали - не могу, делал базис заказчика на одном из проектов).
По личному опыту: я письма из BAdI отсылал. никаких проблем не было.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не уходит почта
СообщениеДобавлено: Вт, фев 03 2015, 18:19 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
И, тем не менее, предложение Джона Доу помогло.
В смысле, вынос блока отправки из метода во внешнюю прогу и вызов сабмитом.
Благодарю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB