Текущее время: Пн, июл 28 2025, 00:19

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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