Difference between revisions of "SAP ABAP EMAIL"
From SapWiki
(16 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | r_subrc = zcl_hcm_class=>send_mail( i_correouser = lt_correos[] | + | ==EJEMPLO 1== |
− | + | <nowiki>r_subrc = zcl_hcm_class=>send_mail( i_correouser = lt_correos[] | |
− | + | i_text = lt_text[] | |
− | + | i_subject = l_subject | |
− | + | i_sender = 'Remuneraciones@sapwiki.cl' | |
− | + | i_copy = lt_copy | |
+ | ). | ||
− | + | METHOD send_mail. | |
− | + | *I_CORREOUSER Importing Type BCSY_SMTPA | |
− | + | *I_TEXT Importing Type BCSY_TEXT | |
− | + | *I_SUBJECT Importing Type SO_OBJ_DES | |
− | + | *I_MAILHEX Importing Type SOLIX_TAB op | |
− | + | *I_ATTACH_NAME Importing Type STRING op | |
− | + | *I_SENDER Importing Type AD_SMTPADR op | |
− | + | *I_COPY Importing Type BCSY_SMTPA op | |
− | + | *R_SUBRC Returning Type SYST_SUBRC | |
− | + | ********************************************************************** | |
− | + | DATA: send_request TYPE REF TO cl_bcs, | |
− | + | text TYPE bcsy_text, | |
− | + | binary_content TYPE solix_tab, | |
− | + | document TYPE REF TO cl_document_bcs, | |
− | + | sender TYPE REF TO cl_sapuser_bcs, | |
− | + | recipient TYPE REF TO if_recipient_bcs, | |
− | + | bcs_exception TYPE REF TO cx_bcs, | |
− | + | sent_to_all TYPE os_boolean, | |
− | + | document_data TYPE sofolenti1, | |
− | + | doc_id TYPE sofolenti1-doc_id, | |
− | + | cont_text TYPE soli_tab, | |
− | + | attachment TYPE REF TO if_document_bcs, | |
− | + | lv_attach_name TYPE sood-objdes, | |
− | + | l_sender TYPE REF TO if_sender_bcs, | |
− | + | l_message TYPE string, | |
− | + | l_correouser TYPE ad_smtpadr, | |
− | + | l_address_name TYPE ad_smtpadr. | |
− | + | DATA: ld_addr TYPE adr6-smtp_addr, | |
− | + | internet_sender TYPE REF TO if_sender_bcs. | |
− | + | DATA: gv_dummy(160). | |
− | + | ||
− | + | text[] = i_text[]. | |
− | + | ||
− | + | TRY. | |
− | + | * -------- create persistent send request ------------------------ | |
− | + | send_request = cl_bcs=>create_persistent( ). | |
− | + | ||
− | + | * -------- create and set document with attachment --------------- | |
− | + | * create document from internal table with text | |
− | + | ||
− | + | ||
− | + | document = cl_document_bcs=>create_document( | |
− | + | i_type = 'HTM' | |
− | + | i_text = i_text | |
− | + | * i_length = '12' | |
− | + | i_subject = i_subject ). | |
− | + | ||
− | + | * add attachment | |
− | + | IF i_attach_name <> space. | |
− | + | lv_attach_name = i_attach_name. | |
− | + | CALL METHOD document->add_attachment | |
− | + | EXPORTING | |
− | + | i_attachment_type = 'BIN' | |
− | + | i_attachment_subject = lv_attach_name | |
− | + | i_att_content_hex = i_mailhex. | |
− | + | ENDIF. | |
− | + | ||
− | + | * add document to send request | |
− | + | CALL METHOD send_request->set_document( document ). | |
− | + | ||
− | + | * --------- add recipient (e-mail address) ----------------------- | |
− | + | * create recipient | |
− | + | LOOP AT i_correouser INTO l_correouser. | |
− | + | l_address_name = l_correouser. | |
− | + | recipient = cl_cam_address_bcs=>create_internet_address( | |
− | + | l_address_name ). | |
− | + | ||
− | + | * add recipient with its respective attributes to send request | |
− | + | CALL METHOD send_request->add_recipient | |
− | + | EXPORTING | |
− | + | i_recipient = recipient | |
− | + | i_express = 'X'. | |
− | + | ENDLOOP. | |
− | + | ||
− | + | LOOP AT i_copy INTO l_correouser. | |
− | + | l_address_name = l_correouser. | |
− | + | recipient = cl_cam_address_bcs=>create_internet_address( | |
− | + | l_address_name ). | |
− | + | ||
− | + | * add recipient with its respective attributes to send request | |
− | + | CALL METHOD send_request->add_recipient | |
− | + | EXPORTING | |
− | + | i_recipient = recipient | |
− | + | i_express = 'X' | |
− | + | i_copy = abap_true. | |
− | + | ENDLOOP. | |
− | + | ||
− | + | ** Crear 'Enviado por:" | |
− | + | * IF p_from IS NOT INITIAL. | |
− | + | * CALL METHOD cl_cam_address_bcs=>create_internet_address | |
− | + | * EXPORTING | |
− | + | * i_address_string = p_from | |
− | + | * i_address_name = p_from_name | |
− | + | * RECEIVING | |
− | + | * result = l_sender. | |
− | + | * | |
− | + | * send_request->set_sender( l_sender ). | |
− | + | * CLEAR l_sender. | |
− | + | * ENDIF. | |
− | + | ||
− | + | * --------- set sender ------------------------------------------- | |
− | + | * note: this is necessary only if you want to set the sender | |
− | + | * different from actual user (SY-UNAME). Otherwise sender is | |
− | + | * set automatically with actual user. | |
− | + | ||
− | + | IF i_sender IS NOT INITIAL. | |
− | + | ld_addr = i_sender. "'Remuneraciones@sapwiki.cl'. | |
− | + | internet_sender = cl_cam_address_bcs=>create_internet_address( | |
− | + | i_address_string = ld_addr ). | |
− | + | ||
− | + | CALL METHOD send_request->set_sender | |
− | + | EXPORTING | |
− | + | i_sender = internet_sender. | |
− | + | ENDIF. | |
− | + | * ---------- send document --------------------------------------- | |
− | + | send_request->send_request->set_link_to_outbox( 'X' ). | |
− | + | ||
− | + | CALL METHOD send_request->send( | |
− | + | EXPORTING | |
− | + | i_with_error_screen = 'X' | |
− | + | RECEIVING | |
− | + | result = sent_to_all ). | |
− | + | IF sent_to_all = 'X'. | |
− | + | * WRITE text-003. | |
− | + | ENDIF. | |
− | + | ||
− | + | COMMIT WORK. | |
− | + | r_subrc = 0. | |
− | + | * ----------------------------------------------------------- | |
− | + | * * exception handling | |
− | + | * ----------------------------------------------------------- | |
− | + | * * replace this very rudimentary exception handling | |
− | + | * * with your own one !!! | |
− | + | * ----------------------------------------------------------- | |
− | + | CATCH cx_bcs INTO bcs_exception. | |
− | + | r_subrc = 4. | |
− | + | IF NOT bcs_exception->msgid IS INITIAL | |
− | + | AND NOT bcs_exception->msgty IS INITIAL | |
− | + | AND NOT bcs_exception->msgno IS INITIAL. | |
+ | MESSAGE ID bcs_exception->msgid | ||
+ | TYPE bcs_exception->msgty | ||
+ | NUMBER bcs_exception->msgno | ||
+ | WITH bcs_exception->msgv1 | ||
+ | bcs_exception->msgv2 | ||
+ | bcs_exception->msgv3 | ||
+ | bcs_exception->msgv4 | ||
+ | into gv_dummy. | ||
+ | EXIT. | ||
+ | |||
+ | ENDTRY. | ||
+ | ENDMETHOD.</nowiki> | ||
+ | |||
+ | ==Ejemplo 2 Enviar email con imagenes== | ||
+ | <nowiki>REPORT zenvio_mail_html. | ||
+ | DATA: lt_html TYPE soli_tab, | ||
+ | ls_html TYPE soli, | ||
+ | lt_solix_tab TYPE solix_tab, | ||
+ | ls_htmlx TYPE solix, | ||
+ | l_url TYPE so_text255, | ||
+ | l_file_length TYPE i, | ||
+ | l_string TYPE string. | ||
+ | |||
+ | DATA: lo_bcs TYPE REF TO cl_bcs, | ||
+ | lo_doc_bcs TYPE REF TO cl_document_bcs, | ||
+ | lo_mime_helper TYPE REF TO cl_gbt_multirelated_service, | ||
+ | lo_recipient TYPE REF TO if_recipient_bcs, | ||
+ | lo_address TYPE REF TO cl_cam_address_bcs. | ||
+ | |||
+ | DATA : l_xstring TYPE xstring, "image in XSTRING | ||
+ | |||
+ | DATA: l_subject TYPE so_obj_des, | ||
+ | l_username TYPE uname, | ||
+ | l_mail_address TYPE ad_smtpadr. | ||
+ | |||
+ | DATA: l_send_exception TYPE REF TO cx_root, | ||
+ | l_reason TYPE string. | ||
+ | |||
+ | * Attach image to HTML body | ||
+ | DATA: l_filename TYPE string, | ||
+ | l_content_id TYPE string. "for HTML content | ||
+ | DATA : l_obj_len TYPE so_obj_len. | ||
+ | |||
+ | CREATE OBJECT lo_mime_helper. | ||
+ | |||
+ | * crear via trn. se80 => Repository MIME, SAP=>PUBLIC | ||
+ | cl_mime_repository_api=>get_api( )->get( | ||
+ | EXPORTING i_url = '/SAP/PUBLIC/notificacion2.jpg' "image path | ||
+ | IMPORTING e_content = l_xstring | ||
+ | EXCEPTIONS parameter_missing = 1 | ||
+ | error_occured = 2 | ||
+ | not_found = 3 | ||
+ | permission_failure = 4 | ||
+ | OTHERS = 5 ). | ||
+ | |||
+ | CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' | ||
+ | EXPORTING | ||
+ | buffer = l_xstring | ||
+ | IMPORTING | ||
+ | output_length = l_file_length | ||
+ | TABLES | ||
+ | binary_tab = lt_solix_tab. | ||
+ | |||
+ | * Attach image to HTML body | ||
+ | l_filename = 'mi_imagen.jpg'. | ||
+ | l_content_id = 'mi_imagen.jpg'. | ||
+ | l_obj_len = l_file_length. | ||
+ | CALL METHOD lo_mime_helper->add_binary_part | ||
+ | EXPORTING | ||
+ | content = lt_solix_tab " Xstring in table form | ||
+ | filename = l_filename " file name to be given to image | ||
+ | extension = 'JPG' " type of file | ||
+ | description = 'Graphic in JPG format' " description | ||
+ | content_type = 'image/jpg' " content type / Mime type. If mime type not present in system then need to add through tcode : SMW0 | ||
+ | length = l_obj_len " length of image | ||
+ | content_id = l_content_id. " content id would be used in html part | ||
+ | |||
+ | ********************************************************************** | ||
+ | * crear HTML | ||
+ | ********************************************************************** | ||
+ | lt_html = value #( ( LINE = '<!DOCTYPE html>') | ||
+ | ( LINE = '<HTML>') | ||
+ | ( LINE = '<HEAD>') | ||
+ | ( LINE = '<TITLE>Mi titulo</TITLE>') | ||
+ | ( LINE = '</HEAD>') | ||
+ | ( LINE = '<BODY>') | ||
+ | ( line = '<p class=Default align=center>') | ||
+ | ( line = '<IMG alt="[image]" src="cid:mi_imagen.jpg"/>') | ||
+ | ( line = '</p>') | ||
+ | ( LINE = '<H1>Rechazo el Pago</H1>') | ||
+ | ( LINE = 'Estimado Representante de la Empresa <P>') | ||
+ | ( LINE = 'Ud. esta rechazado <P>') | ||
+ | ( LINE = '</BODY></HTML>') ). | ||
+ | BREAK-POINT. | ||
+ | |||
+ | ********************************************************************** | ||
+ | * | ||
+ | ********************************************************************** | ||
+ | TRY. | ||
+ | l_subject = 'Rechazo'(t01). | ||
+ | |||
+ | CALL METHOD lo_mime_helper->set_main_html | ||
+ | EXPORTING | ||
+ | content = lt_html " | ||
+ | filename = 'sap.htm' " file name to be given to image | ||
+ | description = 'Imagen'. " description. " content id would be used in html part | ||
+ | |||
+ | lo_doc_bcs = cl_document_bcs=>create_from_multirelated( | ||
+ | i_subject = l_subject | ||
+ | i_multirel_service = lo_mime_helper ). | ||
+ | CATCH cx_document_bcs INTO l_send_exception. | ||
+ | * error handling | ||
+ | * write: / 'Fehler in cl_document_bcs=>create_from_multirelated()'(001). | ||
+ | l_reason = l_send_exception->get_text( ). | ||
+ | WRITE: / l_reason. | ||
+ | EXIT. | ||
+ | CATCH cx_bcom_mime INTO l_send_exception. | ||
+ | * error handling | ||
+ | * write: / 'Fehler in cl_document_bcs=>create_from_multirelated()'(002). | ||
+ | l_reason = l_send_exception->get_text( ). | ||
+ | WRITE: / l_reason. | ||
+ | EXIT. | ||
+ | CATCH cx_gbt_mime INTO l_send_exception. | ||
+ | * error handling | ||
+ | * write: / 'Fehler in cl_document_bcs=>create_from_multirelated()'(003). | ||
+ | l_reason = l_send_exception->get_text( ). | ||
+ | WRITE: / l_reason. | ||
+ | EXIT. | ||
+ | ENDTRY. | ||
+ | |||
+ | * create send_request | ||
+ | TRY. | ||
+ | lo_bcs = cl_bcs=>create_persistent( ). | ||
+ | CATCH cx_send_req_bcs INTO l_send_exception. | ||
+ | * error handling | ||
+ | * write: / 'Fehler in cl_bcs=>create_persistent()'(004). | ||
+ | l_reason = l_send_exception->get_text( ). | ||
+ | WRITE: / l_reason. | ||
+ | EXIT. | ||
+ | ENDTRY. | ||
+ | TRY. | ||
+ | lo_bcs->set_document( i_document = lo_doc_bcs ). | ||
+ | CATCH cx_send_req_bcs INTO l_send_exception. | ||
+ | * error handling | ||
+ | * write: / 'Fehler in <cl_bcs>->set_document()'(005). | ||
+ | l_reason = l_send_exception->get_text( ). | ||
+ | WRITE: / l_reason. | ||
+ | EXIT. | ||
+ | ENDTRY. | ||
+ | |||
+ | l_mail_address = 'pablo.tapia@sapwiki.cl'. | ||
+ | |||
+ | TRY. | ||
+ | lo_address = cl_cam_address_bcs=>create_internet_address( l_mail_address ). | ||
+ | CATCH cx_address_bcs. | ||
+ | * "Error al crear objeto de destinatario | ||
+ | RETURN. | ||
+ | ENDTRY. | ||
+ | * | ||
+ | TRY. | ||
+ | lo_bcs->add_recipient( lo_address ). | ||
+ | CATCH cx_send_req_bcs. | ||
+ | * "Error al agregar destinatario a la lista | ||
+ | RETURN. | ||
+ | ENDTRY. | ||
+ | |||
+ | |||
+ | * --------- set sender ------------------------------------------- | ||
+ | * note: this is necessary only if you want to set the sender | ||
+ | * different from actual user (SY-UNAME). Otherwise sender is | ||
+ | * set automatically with actual user. | ||
+ | DATA: ld_addr TYPE adr6-smtp_addr, | ||
+ | lo_internet_sender TYPE REF TO if_sender_bcs. | ||
+ | |||
+ | l_mail_address = 'ejecutivo@sapwiki.cl'. | ||
+ | TRY. | ||
+ | lo_internet_sender = cl_cam_address_bcs=>create_internet_address( | ||
+ | i_address_string = l_mail_address ). | ||
+ | CATCH cx_address_bcs . | ||
+ | ENDTRY. | ||
+ | |||
+ | TRY. | ||
+ | CALL METHOD lo_bcs->set_sender | ||
+ | EXPORTING | ||
+ | i_sender = lo_internet_sender. | ||
+ | CATCH cx_send_req_bcs . | ||
+ | ENDTRY. | ||
+ | *--------------------------------------------------------------------* | ||
+ | |||
+ | TRY. | ||
+ | lo_bcs->set_send_immediately( abap_true ). | ||
+ | CATCH cx_send_req_bcs. | ||
+ | * "Error al marcar el correo como envio inmediato | ||
+ | RETURN. | ||
+ | ENDTRY. | ||
+ | * | ||
+ | TRY. | ||
+ | "Enviar con error en pantalla | ||
+ | DATA(l_result) = lo_bcs->send( abap_true ). | ||
+ | CATCH cx_send_req_bcs. | ||
+ | * "Error al setear el envío de correo | ||
+ | RETURN. | ||
+ | ENDTRY. | ||
+ | |||
+ | IF l_result EQ abap_true. | ||
+ | "Se confirma el envío, es necesario. | ||
+ | COMMIT WORK. | ||
+ | ENDIF.</nowiki> | ||
+ | |||
+ | ==Subject largo, method set_message_subject== | ||
+ | <nowiki> | ||
+ | TRY. | ||
+ | * -------- create persistent send request ------------------------ | ||
+ | send_request = cl_bcs=>create_persistent( ). | ||
+ | * -------- create and set document with attachment --------------- | ||
+ | document = cl_document_bcs=>create_document( | ||
+ | i_type = 'HTM' | ||
+ | i_text = ut_text | ||
+ | * i_length = '12' | ||
+ | i_subject = lv_subject ). | ||
+ | send_request->set_message_subject( ip_subject = uv_subject ). "Subject largo | ||
+ | </nowiki> | ||
+ | |||
+ | ==[[SAP_ABAP_HTML_EX01|Ejemplo de HTML para envío de correo con imagen y link]]== | ||
+ | ==Programa DEMO: SF_XSF_DEMO_MAIL== | ||
+ | ==SAP Note 1915614 - Dump or error message occurs while SAPoffice object (user, folder, document, attachment) should be created: SAPSQL_ARRAY_INSERT_DUPREC - DBSQL_DUPLICATE_KEY_ERROR == |
Latest revision as of 22:47, 26 July 2024
Contents
- 1 EJEMPLO 1
- 2 Ejemplo 2 Enviar email con imagenes
- 3 Subject largo, method set_message_subject
- 4 Ejemplo de HTML para envío de correo con imagen y link
- 5 Programa DEMO: SF_XSF_DEMO_MAIL
- 6 SAP Note 1915614 - Dump or error message occurs while SAPoffice object (user, folder, document, attachment) should be created: SAPSQL_ARRAY_INSERT_DUPREC - DBSQL_DUPLICATE_KEY_ERROR
EJEMPLO 1
r_subrc = zcl_hcm_class=>send_mail( i_correouser = lt_correos[] i_text = lt_text[] i_subject = l_subject i_sender = 'Remuneraciones@sapwiki.cl' i_copy = lt_copy ). METHOD send_mail. *I_CORREOUSER Importing Type BCSY_SMTPA *I_TEXT Importing Type BCSY_TEXT *I_SUBJECT Importing Type SO_OBJ_DES *I_MAILHEX Importing Type SOLIX_TAB op *I_ATTACH_NAME Importing Type STRING op *I_SENDER Importing Type AD_SMTPADR op *I_COPY Importing Type BCSY_SMTPA op *R_SUBRC Returning Type SYST_SUBRC ********************************************************************** DATA: send_request TYPE REF TO cl_bcs, text TYPE bcsy_text, binary_content TYPE solix_tab, document TYPE REF TO cl_document_bcs, sender TYPE REF TO cl_sapuser_bcs, recipient TYPE REF TO if_recipient_bcs, bcs_exception TYPE REF TO cx_bcs, sent_to_all TYPE os_boolean, document_data TYPE sofolenti1, doc_id TYPE sofolenti1-doc_id, cont_text TYPE soli_tab, attachment TYPE REF TO if_document_bcs, lv_attach_name TYPE sood-objdes, l_sender TYPE REF TO if_sender_bcs, l_message TYPE string, l_correouser TYPE ad_smtpadr, l_address_name TYPE ad_smtpadr. DATA: ld_addr TYPE adr6-smtp_addr, internet_sender TYPE REF TO if_sender_bcs. DATA: gv_dummy(160). text[] = i_text[]. TRY. * -------- create persistent send request ------------------------ send_request = cl_bcs=>create_persistent( ). * -------- create and set document with attachment --------------- * create document from internal table with text document = cl_document_bcs=>create_document( i_type = 'HTM' i_text = i_text * i_length = '12' i_subject = i_subject ). * add attachment IF i_attach_name <> space. lv_attach_name = i_attach_name. CALL METHOD document->add_attachment EXPORTING i_attachment_type = 'BIN' i_attachment_subject = lv_attach_name i_att_content_hex = i_mailhex. ENDIF. * add document to send request CALL METHOD send_request->set_document( document ). * --------- add recipient (e-mail address) ----------------------- * create recipient LOOP AT i_correouser INTO l_correouser. l_address_name = l_correouser. recipient = cl_cam_address_bcs=>create_internet_address( l_address_name ). * add recipient with its respective attributes to send request CALL METHOD send_request->add_recipient EXPORTING i_recipient = recipient i_express = 'X'. ENDLOOP. LOOP AT i_copy INTO l_correouser. l_address_name = l_correouser. recipient = cl_cam_address_bcs=>create_internet_address( l_address_name ). * add recipient with its respective attributes to send request CALL METHOD send_request->add_recipient EXPORTING i_recipient = recipient i_express = 'X' i_copy = abap_true. ENDLOOP. ** Crear 'Enviado por:" * IF p_from IS NOT INITIAL. * CALL METHOD cl_cam_address_bcs=>create_internet_address * EXPORTING * i_address_string = p_from * i_address_name = p_from_name * RECEIVING * result = l_sender. * * send_request->set_sender( l_sender ). * CLEAR l_sender. * ENDIF. * --------- set sender ------------------------------------------- * note: this is necessary only if you want to set the sender * different from actual user (SY-UNAME). Otherwise sender is * set automatically with actual user. IF i_sender IS NOT INITIAL. ld_addr = i_sender. "'Remuneraciones@sapwiki.cl'. internet_sender = cl_cam_address_bcs=>create_internet_address( i_address_string = ld_addr ). CALL METHOD send_request->set_sender EXPORTING i_sender = internet_sender. ENDIF. * ---------- send document --------------------------------------- send_request->send_request->set_link_to_outbox( 'X' ). CALL METHOD send_request->send( EXPORTING i_with_error_screen = 'X' RECEIVING result = sent_to_all ). IF sent_to_all = 'X'. * WRITE text-003. ENDIF. COMMIT WORK. r_subrc = 0. * ----------------------------------------------------------- * * exception handling * ----------------------------------------------------------- * * replace this very rudimentary exception handling * * with your own one !!! * ----------------------------------------------------------- CATCH cx_bcs INTO bcs_exception. r_subrc = 4. IF NOT bcs_exception->msgid IS INITIAL AND NOT bcs_exception->msgty IS INITIAL AND NOT bcs_exception->msgno IS INITIAL. MESSAGE ID bcs_exception->msgid TYPE bcs_exception->msgty NUMBER bcs_exception->msgno WITH bcs_exception->msgv1 bcs_exception->msgv2 bcs_exception->msgv3 bcs_exception->msgv4 into gv_dummy. EXIT. ENDTRY. ENDMETHOD.
Ejemplo 2 Enviar email con imagenes
REPORT zenvio_mail_html. DATA: lt_html TYPE soli_tab, ls_html TYPE soli, lt_solix_tab TYPE solix_tab, ls_htmlx TYPE solix, l_url TYPE so_text255, l_file_length TYPE i, l_string TYPE string. DATA: lo_bcs TYPE REF TO cl_bcs, lo_doc_bcs TYPE REF TO cl_document_bcs, lo_mime_helper TYPE REF TO cl_gbt_multirelated_service, lo_recipient TYPE REF TO if_recipient_bcs, lo_address TYPE REF TO cl_cam_address_bcs. DATA : l_xstring TYPE xstring, "image in XSTRING DATA: l_subject TYPE so_obj_des, l_username TYPE uname, l_mail_address TYPE ad_smtpadr. DATA: l_send_exception TYPE REF TO cx_root, l_reason TYPE string. * Attach image to HTML body DATA: l_filename TYPE string, l_content_id TYPE string. "for HTML content DATA : l_obj_len TYPE so_obj_len. CREATE OBJECT lo_mime_helper. * crear via trn. se80 => Repository MIME, SAP=>PUBLIC cl_mime_repository_api=>get_api( )->get( EXPORTING i_url = '/SAP/PUBLIC/notificacion2.jpg' "image path IMPORTING e_content = l_xstring EXCEPTIONS parameter_missing = 1 error_occured = 2 not_found = 3 permission_failure = 4 OTHERS = 5 ). CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = l_xstring IMPORTING output_length = l_file_length TABLES binary_tab = lt_solix_tab. * Attach image to HTML body l_filename = 'mi_imagen.jpg'. l_content_id = 'mi_imagen.jpg'. l_obj_len = l_file_length. CALL METHOD lo_mime_helper->add_binary_part EXPORTING content = lt_solix_tab " Xstring in table form filename = l_filename " file name to be given to image extension = 'JPG' " type of file description = 'Graphic in JPG format' " description content_type = 'image/jpg' " content type / Mime type. If mime type not present in system then need to add through tcode : SMW0 length = l_obj_len " length of image content_id = l_content_id. " content id would be used in html part ********************************************************************** * crear HTML ********************************************************************** lt_html = value #( ( LINE = '<!DOCTYPE html>') ( LINE = '<HTML>') ( LINE = '<HEAD>') ( LINE = '<TITLE>Mi titulo</TITLE>') ( LINE = '</HEAD>') ( LINE = '<BODY>') ( line = '<p class=Default align=center>') ( line = '<IMG alt="[image]" src="cid:mi_imagen.jpg"/>') ( line = '</p>') ( LINE = '<H1>Rechazo el Pago</H1>') ( LINE = 'Estimado Representante de la Empresa <P>') ( LINE = 'Ud. esta rechazado <P>') ( LINE = '</BODY></HTML>') ). BREAK-POINT. ********************************************************************** * ********************************************************************** TRY. l_subject = 'Rechazo'(t01). CALL METHOD lo_mime_helper->set_main_html EXPORTING content = lt_html " filename = 'sap.htm' " file name to be given to image description = 'Imagen'. " description. " content id would be used in html part lo_doc_bcs = cl_document_bcs=>create_from_multirelated( i_subject = l_subject i_multirel_service = lo_mime_helper ). CATCH cx_document_bcs INTO l_send_exception. * error handling * write: / 'Fehler in cl_document_bcs=>create_from_multirelated()'(001). l_reason = l_send_exception->get_text( ). WRITE: / l_reason. EXIT. CATCH cx_bcom_mime INTO l_send_exception. * error handling * write: / 'Fehler in cl_document_bcs=>create_from_multirelated()'(002). l_reason = l_send_exception->get_text( ). WRITE: / l_reason. EXIT. CATCH cx_gbt_mime INTO l_send_exception. * error handling * write: / 'Fehler in cl_document_bcs=>create_from_multirelated()'(003). l_reason = l_send_exception->get_text( ). WRITE: / l_reason. EXIT. ENDTRY. * create send_request TRY. lo_bcs = cl_bcs=>create_persistent( ). CATCH cx_send_req_bcs INTO l_send_exception. * error handling * write: / 'Fehler in cl_bcs=>create_persistent()'(004). l_reason = l_send_exception->get_text( ). WRITE: / l_reason. EXIT. ENDTRY. TRY. lo_bcs->set_document( i_document = lo_doc_bcs ). CATCH cx_send_req_bcs INTO l_send_exception. * error handling * write: / 'Fehler in <cl_bcs>->set_document()'(005). l_reason = l_send_exception->get_text( ). WRITE: / l_reason. EXIT. ENDTRY. l_mail_address = 'pablo.tapia@sapwiki.cl'. TRY. lo_address = cl_cam_address_bcs=>create_internet_address( l_mail_address ). CATCH cx_address_bcs. * "Error al crear objeto de destinatario RETURN. ENDTRY. * TRY. lo_bcs->add_recipient( lo_address ). CATCH cx_send_req_bcs. * "Error al agregar destinatario a la lista RETURN. ENDTRY. * --------- set sender ------------------------------------------- * note: this is necessary only if you want to set the sender * different from actual user (SY-UNAME). Otherwise sender is * set automatically with actual user. DATA: ld_addr TYPE adr6-smtp_addr, lo_internet_sender TYPE REF TO if_sender_bcs. l_mail_address = 'ejecutivo@sapwiki.cl'. TRY. lo_internet_sender = cl_cam_address_bcs=>create_internet_address( i_address_string = l_mail_address ). CATCH cx_address_bcs . ENDTRY. TRY. CALL METHOD lo_bcs->set_sender EXPORTING i_sender = lo_internet_sender. CATCH cx_send_req_bcs . ENDTRY. *--------------------------------------------------------------------* TRY. lo_bcs->set_send_immediately( abap_true ). CATCH cx_send_req_bcs. * "Error al marcar el correo como envio inmediato RETURN. ENDTRY. * TRY. "Enviar con error en pantalla DATA(l_result) = lo_bcs->send( abap_true ). CATCH cx_send_req_bcs. * "Error al setear el envío de correo RETURN. ENDTRY. IF l_result EQ abap_true. "Se confirma el envío, es necesario. COMMIT WORK. ENDIF.
Subject largo, method set_message_subject
TRY. * -------- create persistent send request ------------------------ send_request = cl_bcs=>create_persistent( ). * -------- create and set document with attachment --------------- document = cl_document_bcs=>create_document( i_type = 'HTM' i_text = ut_text * i_length = '12' i_subject = lv_subject ). send_request->set_message_subject( ip_subject = uv_subject ). "Subject largo