You are on page 1of 2

entrada: IN_EMAIL_DEST TYPE ZTT_CLIENT_MAIL Tipo Tabela - Cliente X Mail

IN_MAIL_ALT TYPE AD_SMTPADR Endereço de e-mail

saída: value( RET_RETORNO ) TYPE STRING

method ENVIA_EMAIL.

DATA: go_send_request TYPE REF TO cl_bcs,


go_document TYPE REF TO cl_document_bcs,
lo_sender TYPE REF TO cl_sapuser_bcs,
lo_senderint TYPE REF TO cl_cam_address_bcs,
lo_recipient TYPE REF TO if_recipient_bcs,
lo_bcs_exception TYPE REF TO cx_bcs,
gv_sub TYPE string,
lv_sent_to_all TYPE os_boolean.

DATA : it_contents TYPE STANDARD TABLE OF solisti1.

"Monta corpo do e-mail


CALL METHOD monta_corpo_html
IMPORTING
it_conteudo = it_contents.

TRY.
* -------- create persistent send request ------------------------
go_send_request = cl_bcs=>create_persistent( ).

go_document = cl_document_bcs=>create_document(
i_type = 'HTM'
i_text = it_contents
i_subject = '' ).

"For email subject more than 50 Char


gv_sub = 'Email Carta Cliente'.

CALL METHOD go_send_request->set_message_subject


EXPORTING
ip_subject = gv_sub.

"attachmentment
CALL METHOD anexos_email
EXPORTING
im_bin_pdf = at_bin_pdf
im_name_file_pdf = at_bin_pdf_name
CHANGING
im_go_document = go_document.

* add document to send request


CALL METHOD go_send_request->set_document( go_document ).

* add recipient with its respective attributes to send request


LOOP AT in_email_dest ASSIGNING FIELD-SYMBOL(<fs_mail>).

lo_recipient = cl_cam_address_bcs=>create_internet_address( <fs_mail>-


smtp_addr ).

CALL METHOD go_send_request->add_recipient


EXPORTING
i_recipient = lo_recipient
i_express = 'X'.

ENDLOOP.

IF in_mail_alt IS NOT INITIAL.

lo_recipient =
cl_cam_address_bcs=>create_internet_address( in_mail_alt ).

CALL METHOD go_send_request->add_recipient


EXPORTING
i_recipient = lo_recipient
i_express = 'X'.

ENDIF.

*--> Set Remetente


DATA: l_sender TYPE REF TO if_sender_bcs.
DATA: l_remitente TYPE adr6-smtp_addr.

l_remitente = 'boletos@whirlpool.com'.

l_sender = go_send_request->sender( ).

l_sender ?=
cl_cam_address_bcs=>create_internet_address( l_remitente ).

CALL METHOD go_send_request->set_sender( l_sender ).

* ---------- send document ---------------------------------------


CALL METHOD go_send_request->set_send_immediately
EXPORTING
i_send_immediately = 'X'.

CALL METHOD go_send_request->send(


EXPORTING
i_with_error_screen = 'X'
RECEIVING
result = lv_sent_to_all ).

IF lv_sent_to_all = 'X'.
ret_retorno = text-002.
ELSEIF lv_sent_to_all IS INITIAL.
ret_retorno = text-003.
ENDIF.

COMMIT WORK.

CATCH cx_bcs INTO lo_bcs_exception.

ENDTRY.

endmethod.

You might also like