- CLASS zini_cl_email DEFINITION.
- PUBLIC SECTION.
- consTANTS: c_version type string vaLUE '1.00'.
- DATA: g_subrc TYPE sysubrc.
- METHODS:
- set_subject IMPORTING i_data TYPE string,
- set_body IMPORTING i_data TYPE soli_tab,
- set_to IMPORTING i_data TYPE string,
- set_from IMPORTING i_data TYPE string,
- set_atta IMPORTING i_type TYPE soodk-objtp
- i_name TYPE sood-objdes
- i_size TYPE i
- i_text TYPE soli_tab OPTIONAL
- i_hexa TYPE solix_tab OPTIONAL,
- send_email RETURNING VALUE(r_subrc) TYPE sysubrc,
- ejemplo.
- PRIVATE SECTION.
- TYPES: BEGIN OF ty_atta,
- i_type TYPE soodk-objtp,
- i_name TYPE sood-objdes,
- i_size TYPE i,
- i_text TYPE soli_tab,
- i_hexa TYPE solix_tab,
- END OF ty_atta.
- DATA: l_subject TYPE string,
- l_to TYPE stringtab,
- l_from type string,
- l_body TYPE soli_tab,
- l_atta TYPE STANDARD TABLE OF ty_atta.
- METHODS check_email RETURNING VALUE(r_subrc) TYPE sysubrc.
- ENDCLASS.
- CLASS zini_cl_email IMPLEMENTATION.
- METHOD set_subject. l_subject = i_data. ENDMETHOD.
- METHOD set_from. l_from = i_data. ENDMETHOD.
- METHOD set_body. l_body = i_data. ENDMETHOD.
- METHOD set_to.
- FIND REGEX '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'
- IN i_data
- MATCH COUNT DATA(lv_count).
- DATA(lv_ok) = xsdbool( lv_count > 0 ).
- IF lv_ok = abap_true AND i_data IS NOT INITIAL.
- APPEND i_data TO l_to.
- ENDIF.
- ENDMETHOD.
- METHOD set_atta.
- l_atta = VALUE #( BASE l_atta
- ( i_type = i_type
- i_name = i_name
- i_text = i_text
- i_size = i_size
- i_hexa = i_hexa
- )
- ).
- ENDMETHOD.
- METHOD check_email.
- IF lines( l_to ) >= 1.
- g_subrc = 1. "Error en Destinatarios
- ENDIF.
- ENDMETHOD.
- METHOD send_email.
- r_subrc = check_email( ).
- CHECK r_subrc IS INITIAL.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Creamos el Objecto
- DATA(lo_documento) = cl_document_bcs=>create_document( i_type = 'RAW'
- i_text = l_body
- i_subject = CONV #( l_subject )
- ).
- DATA(lo_envio) = cl_bcs=>create_persistent( ).
- lo_envio->set_document( lo_documento ).
- if l_from is not initial.
- data(lo_from) = cl_cam_address_bcs=>create_internet_address( conv #( l_from ) ).
- lo_envio->set_sender( lo_from ).
- endif.
- LOOP AT l_to INTO DATA(ax).
- DATA(lo_destinatario) = cl_cam_address_bcs=>create_internet_address( CONV #( ax ) ).
- lo_envio->add_recipient( lo_destinatario ).
- ENDLOOP.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Añadimos Attachments si tiene
- LOOP AT l_atta INTO DATA(bx).
- lo_documento->add_attachment(
- i_attachment_type = bx-i_type
- i_attachment_subject = bx-i_name
- i_attachment_size = CONV #( bx-i_size )
- i_att_content_hex = bx-i_hexa
- i_att_content_text = bx-i_text
- ).
- ENDLOOP.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Envio
- lo_envio->send( i_with_error_screen = abap_false ).
- COMMIT WORK.
- ENDMETHOD.
- METHOD ejemplo.
- DATA(cl_mail) = NEW zini_cl_email( ).
- cl_mail->set_subject( 'Prueba Temporal' ).
- cl_mail->set_body( VALUE soli_tab( ( line ='Buenos días' ) ( line = 'Esto es una prueba' ) ) ).
- cl_mail->set_to( 'publicidad@email.com' ).
- cl_mail->set_atta( i_type = 'RAW'
- i_name = 'Datos.csv'
- i_size = 10
- i_text = VALUE soli_tab( ( line = '1;2;3;4' ) ( line = '5;6;7;8') )
- * i_hexa = value solix_tab ( )
- ).
- cl_mail->send_email( ).
- ENDMETHOD.
- ENDCLASS.
Última modificación de la página el 03 May 2026 a las 07h15
Powered by
PmWiki