Отправка писем в BAdI и Customer-exit-ах
Многие используют класс CL_BCS для отправки сообщений, однако он имеет определённый недостаток — выполняет commit во время отправки письма или добавления вложения, что делает невозможным его прямое использование внутри расширений. В качестве альтернативы можно либо использовать стандартные ФМ-ы по отправке писем (SO_NEW_DOCUMENT_ATT_SEND_API1 ), либо использовать другую ООП обёртку — класс CL_BCS_MESSAGE. В зависимости от параметров, отправка будет инициализирована либо через ФМ обновления, либо через асинхронный вызов (STARTING NEW TASK).
Стандартные демо программы с использованием данного класса: RSBCS_EXAMPLE_EMAIL или RSBCS_EXAMPLE_EMAIL_SIMPLE.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
try. data(msg) = new cl_bcs_message( ). msg->set_subject( 'My test email' ). msg->add_recipient( exporting iv_address = 'write.your@recipient.here' iv_visible_name = 'WRITE Yours' ). msg->set_sender( exporting iv_address = 'do@not.reply' iv_visible_name = 'Do not reply' ). msg->set_main_doc( exporting iv_contents_txt = |<html><head></head><body><br/><b>TEST MESSAGE</b><br/><br/>| && |sample from <a href='http://ABAPblog.com'>ABAPblog.com</a></body></html>| iv_doctype = 'htm' ). msg->set_send_immediately( abap_true ). msg->send( ). catch cx_bcs_send into data(ex). message ex->get_text( ) type 'E'. endtry. |
Взято здесь.