Enviar 2 archivos adjuntos por mail

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • pancho6102
    Senior Member
    • jun
    • 238

    #1

    Enviar 2 archivos adjuntos por mail

    Que tal foro tengo que enviar un archivo PDF por mail ( he hecho el codigo y ya funciona ) pero tambien debo adjuntar un archivo TXT y no se como puedo hacer esto alguien que tenga un ejemplo de como hacer este paso con 2 archivos diferentes

    uso esta funcion :

    CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
    EXPORTING
    document_data = w_doc_data
    put_in_outbox = 'X'
    sender_address = vg_email_emisor
    sender_address_type = vg_tipe_dirc
    commit_work = 'X' " No utilizar en caso de proceso de fondo, sino si
    IMPORTING
    sent_to_all = vl_sent_all
    TABLES
    packing_list = t_packing_list
    contents_bin = t_archivo_adjunto
    contents_txt = t_cuerpo_mail
    receivers = t_destinatario
    EXCEPTIONS
    too_many_receivers = 1
    document_not_sent = 2
    document_type_not_exist = 3
    operation_no_authorization = 4
    parameter_error = 5
    x_error = 6
    enqueue_error = 7
    OTHERS = 8.

    pero para 2 archivos no se como deba ir en este foro mencionan la funcion:

    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

    pero no la he logrado funcionar y no encontre un ejemplo de como deba de llamarse si 2 veces o cual sea el metodo.


    Saludos!!
    Francisco Ramirez.
    consultor SAP ABAP Netweaver
    Queretaro, Mexico.
  • mysmb2
    Senior Member
    • ene
    • 406

    #2
    yo lo he realizado pero orientado a objetos, llamando al metodo add_attachment tantas veces como archivos quieras adjuntar.


    aca declaras las variables
    Código:
    lo_email       TYPE REF TO cl_bcs,
    lo_email_body  TYPE REF TO cl_document_bcs,
    lo_receiver    TYPE REF TO if_recipient_bcs,
    creas la instancia
    Código:
      lo_email = cl_bcs=>create_persistent( ).
      lo_email_body = cl_document_bcs=>create_document( i_type = 'HTM'
                                                        i_text = lv_message
                                                        i_subject = 'asunto email' ).
      lo_email->set_document( lo_email_body ).
    seteas la dirección de correo
    Código:
      lo_receiver  = cl_cam_address_bcs=>create_internet_address( 'direccion de email' ).
      lo_email->add_recipient( i_recipient = lo_receiver
                               i_express   = 'X' ).
      lo_email->set_send_immediately( 'X' ).
    indicas el archivo adjunto y enviar
    Código:
    *     se agrega el archivo adjunto
          lo_email_body->add_attachment( EXPORTING
                                        i_attachment_type    = 'PDF'
                                        i_attachment_subject = 'nombre archivo'
                                        i_attachment_size    = lv_attachment_size
                                        i_att_content_hex    = lt_hexa ).
    
          lo_email->send( EXPORTING
                            i_with_error_screen = 'X'
                          RECEIVING
                            result = lv_send_result ).
          COMMIT WORK.
    Saludos.
    Sebastián Chiavia
    http://www.programacionabap.com.ar

    Comentario

    • pancho6102
      Senior Member
      • jun
      • 238

      #3
      Gracias mysmb2 por contestar lo estoy implementando cuando termine les cuento como me fue.

      Saludos.
      Francisco Ramirez.
      consultor SAP ABAP Netweaver
      Queretaro, Mexico.

      Comentario

      • izak
        Junior Member
        • mar
        • 3

        #4
        Muy intersante lo que dices mysmb2, una consulta, yo tengo que hacer lo mismo, pero mi archivo PDF lo tengo en una carpeta que la puedo ver mediante la AL11, como hago para indicar la carpeta, nombre de archivo y luego mandarlo por correo?

        Te agradeceria puedas ayudarme.
        Gracias de antemano!.

        Comentario

        • mysmb2
          Senior Member
          • ene
          • 406

          #5
          Hola izak,
          A tu archivo lo tenes que levantar en una tabla interna con el OPEN DATASET. la tabla interna que tiene esta información en el ejemplo es lt_hexa.

          Saludos
          Sebastián Chiavia
          http://www.programacionabap.com.ar

          Comentario

          • pancho6102
            Senior Member
            • jun
            • 238

            #6
            Originalmente publicado por mysmb2
            Hola izak,
            A tu archivo lo tenes que levantar en una tabla interna con el OPEN DATASET. la tabla interna que tiene esta información en el ejemplo es lt_hexa.

            Saludos
            exactamente igual hice algo parecido en otro proceso con la conversion algun formato de la imagen a un atabla interna y de ahi el metodo de adjuntar.

            Gracias por la aportacion mysmb2.
            Francisco Ramirez.
            consultor SAP ABAP Netweaver
            Queretaro, Mexico.

            Comentario

            • Yanett Ponce Seares
              Member
              • abr
              • 61

              #7
              Como crear HTML para enviar por correo

              Originalmente publicado por mysmb2
              yo lo he realizado pero orientado a objetos, llamando al metodo add_attachment tantas veces como archivos quieras adjuntar.


              aca declaras las variables
              Código:
              lo_email       TYPE REF TO cl_bcs,
              lo_email_body  TYPE REF TO cl_document_bcs,
              lo_receiver    TYPE REF TO if_recipient_bcs,
              creas la instancia
              Código:
                lo_email = cl_bcs=>create_persistent( ).
                lo_email_body = cl_document_bcs=>create_document( i_type = 'HTM'
                                                                  i_text = lv_message
                                                                  i_subject = 'asunto email' ).
                lo_email->set_document( lo_email_body ).
              seteas la dirección de correo
              Código:
                lo_receiver  = cl_cam_address_bcs=>create_internet_address( 'direccion de email' ).
                lo_email->add_recipient( i_recipient = lo_receiver
                                         i_express   = 'X' ).
                lo_email->set_send_immediately( 'X' ).
              indicas el archivo adjunto y enviar
              Código:
              *     se agrega el archivo adjunto
                    lo_email_body->add_attachment( EXPORTING
                                                  i_attachment_type    = 'PDF'
                                                  i_attachment_subject = 'nombre archivo'
                                                  i_attachment_size    = lv_attachment_size
                                                  i_att_content_hex    = lt_hexa ).
              
                    lo_email->send( EXPORTING
                                      i_with_error_screen = 'X'
                                    RECEIVING
                                      result = lv_send_result ).
                    COMMIT WORK.
              Saludos.
              Hola a todos, espero me puedan ayudar he buscado necesito adjuntar el detalle de una tabla interna a un HTML y enviar por correo. Gracias¡
              YPonce

              Comentario

              • djabegac
                Junior Member
                • abr
                • 7

                #8
                Error en archivo PDF (URGENTE)

                Hola a todos,
                estoy intentando mandar por correo un archivo pdf, que está en el servidor, porque se tiene que mandar en fondo. Guardo el fichero en una tabla interna tipo solix_tab y al intentar abrir el fichero desde el correo me dice aparece el siguiente mensaje: 'Error al abrir el documento. El archivo está dañado y no puede repararse'. Es bastante urgente, si alguien ha sido capaz de hacer lo que indico y me dice que es lo que hago mal.

                El código que estoy utilizando es este, por si alguien me puede echar una mano:

                DATA:
                lo_email TYPE REF TO cl_bcs,
                lo_email_body TYPE REF TO cl_document_bcs,
                lo_receiver TYPE REF TO if_recipient_bcs,
                lv_message TYPE soli_tab,
                lv_attachment_size TYPE soattchgi1-att_size,
                lt_hexa TYPE solix_tab.

                DATA: lv_send_result TYPE dtype.

                * Se traspasa el contenido del fichero PDF a la tabla interna
                OPEN DATASET sp_file FOR INPUT IN BINARY MODE.
                DO.
                READ DATASET sp_file INTO lv_conten.
                IF sy-subrc NE 0.
                EXIT.
                ENDIF.
                APPEND lv_conten TO lt_hexa.
                ENDDO.
                CLOSE DATASET sp_file.

                * Crear instancia
                lo_email = cl_bcs=>create_persistent( ).
                lo_email_body = cl_document_bcs=>create_document( i_type = 'HTM'
                i_text = lv_message
                i_subject = 'Asunto correo' ).
                lo_email->set_document( lo_email_body ).


                * Direccion de correo
                lo_receiver = cl_cam_address_bcs=>create_internet_address( mailto ).
                lo_email->add_recipient( i_recipient = lo_receiver
                i_express = 'X' ).
                lo_email->set_send_immediately( 'X' ).

                fich = sp_file.

                * Indicar el archivo adjunto y enviar
                lo_email_body->add_attachment( EXPORTING
                i_attachment_type = 'PDF'
                i_attachment_subject = 'Documento.pdf'
                i_attachment_size = lv_attachment_size
                i_att_content_hex = lt_hexa ).

                lo_email->send( EXPORTING
                i_with_error_screen = 'X'
                RECEIVING
                result = lv_send_result ).
                COMMIT WORK.

                Un saludo y muchas gracias,
                David.

                Comentario

                • MISAP
                  Junior Member
                  • jun
                  • 7

                  #9
                  Originalmente publicado por Yanett Ponce Seares
                  Hola a todos, espero me puedan ayudar he buscado necesito adjuntar el detalle de una tabla interna a un HTML y enviar por correo. Gracias¡

                  Estoy enviando archivos TXT adjuntos pero no se repetan los saltos de línea.
                  Por favor sus comentarios.

                  Gracias & Saludos!

                  Comentario

                  • MISAP
                    Junior Member
                    • jun
                    • 7

                    #10
                    Originalmente publicado por djabegac
                    Hola a todos,
                    estoy intentando mandar por correo un archivo pdf, que está en el servidor, porque se tiene que mandar en fondo. Guardo el fichero en una tabla interna tipo solix_tab y al intentar abrir el fichero desde el correo me dice aparece el siguiente mensaje: 'Error al abrir el documento. El archivo está dañado y no puede repararse'. Es bastante urgente, si alguien ha sido capaz de hacer lo que indico y me dice que es lo que hago mal.

                    El código que estoy utilizando es este, por si alguien me puede echar una mano:

                    DATA:
                    lo_email TYPE REF TO cl_bcs,
                    lo_email_body TYPE REF TO cl_document_bcs,
                    lo_receiver TYPE REF TO if_recipient_bcs,
                    lv_message TYPE soli_tab,
                    lv_attachment_size TYPE soattchgi1-att_size,
                    lt_hexa TYPE solix_tab.

                    DATA: lv_send_result TYPE dtype.

                    * Se traspasa el contenido del fichero PDF a la tabla interna
                    OPEN DATASET sp_file FOR INPUT IN BINARY MODE.
                    DO.
                    READ DATASET sp_file INTO lv_conten.
                    IF sy-subrc NE 0.
                    EXIT.
                    ENDIF.
                    APPEND lv_conten TO lt_hexa.
                    ENDDO.
                    CLOSE DATASET sp_file.

                    * Crear instancia
                    lo_email = cl_bcs=>create_persistent( ).
                    lo_email_body = cl_document_bcs=>create_document( i_type = 'HTM'
                    i_text = lv_message
                    i_subject = 'Asunto correo' ).
                    lo_email->set_document( lo_email_body ).


                    * Direccion de correo
                    lo_receiver = cl_cam_address_bcs=>create_internet_address( mailto ).
                    lo_email->add_recipient( i_recipient = lo_receiver
                    i_express = 'X' ).
                    lo_email->set_send_immediately( 'X' ).

                    fich = sp_file.

                    * Indicar el archivo adjunto y enviar
                    lo_email_body->add_attachment( EXPORTING
                    i_attachment_type = 'PDF'
                    i_attachment_subject = 'Documento.pdf'
                    i_attachment_size = lv_attachment_size
                    i_att_content_hex = lt_hexa ).

                    lo_email->send( EXPORTING
                    i_with_error_screen = 'X'
                    RECEIVING
                    result = lv_send_result ).
                    COMMIT WORK.

                    Un saludo y muchas gracias,
                    David.
                    Estoy enviando archivos TXT adjuntos pero no se repetan los saltos de línea.
                    Por favor sus comentarios.

                    Gracias & Saludos!

                    Comentario

                    Trabajando...