Enviar PDF por email

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Cristiana
    Member
    • may
    • 46

    #1

    Enviar PDF por email

    Hola Foro

    Alguien me puede decir como enviar un Pdf por email... es una orden de compra la hize en smartforms ya logre hacer la conversion a Pdf solo me falta enviarla por email.

    Gracias por su ayuda.

    Felices Fiestas....
    Lo correcto no siempre es lo mas facil, Pero siempre es lo Mejor.
    Dios te Bendiga.
    Crysty
  • kiboqac
    Member
    • mar
    • 55

    #2
    La idea es pasar el PDF a Hexa y despues usar la funcion: "SO_NEW_DOCUMENT_ATT_SEND_API1" para adjuntarlo al mail.

    Te pego un pedazo de codigo que te va a ser de mucha ayuda



    CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
    buffer = w_pdf
    TABLES
    binary_tab = wt_hex.

    DESCRIBE TABLE wt_hex LINES w_lines.
    CONCATENATE 'Adobe Form ' space wi_id '.pdf' INTO wa_head.
    APPEND wa_head TO wt_head.

    wa_pack-transf_bin = 'X'.
    wa_pack-head_start = 1.
    wa_pack-head_num = 1.
    wa_pack-body_start = 1.
    wa_pack-body_num = w_lines.
    wa_pack-doc_type = 'PDF'.
    wa_pack-obj_name = 'Adobe Form'.
    wa_pack-doc_size = w_lines * 255.
    CONCATENATE 'Adobe Form ' space wi_id '.pdf' INTO wa_pack-obj_descr.

    APPEND wa_pack TO wt_pack.

    ENDIF.

    ENDIF.

    LOOP AT gt_mails INTO w_mail.

    * A cuenta de mail externa.
    wa_rec-receiver = w_mail.
    wa_rec-rec_type = 'U'.
    APPEND wa_rec TO wt_rec.

    ENDLOOP.


    * Envío el mail.
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
    document_data = wa_data
    commit_work = 'X'
    TABLES
    packing_list = wt_pack
    object_header = wt_head
    contents_txt = wt_txt
    contents_hex = wt_hex
    receivers = wt_rec
    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.
    Kibo

    Comentario

    • conrad10ar
      Banned
      • mar
      • 296

      #3
      Hola!

      acá tienes resuelto lo que necesitas:

      Foros de SAP, Manuales y empleos SAP en la mayor comunidad SAP de habla hispana, SAP HANA, SAP Fiori, SD, MM, HR


      Saludos!

      Comentario

      • esterg
        Junior Member
        • sep
        • 20

        #4
        multiples pdfs por mail?

        hola, alguien tiene el codigo de como attachear varios pds en un mismo mail?
        muchas gracias desde ya.

        Comentario

        • marianoboni
          Member
          • abr
          • 75

          #5
          Originalmente publicado por esterg
          hola, alguien tiene el codigo de como attachear varios pds en un mismo mail?
          muchas gracias desde ya.
          Las clases que utilizo son :

          data:
          pdf_content type solix_tab,
          send_request type ref to cl_bcs,
          document type ref to cl_document_bcs,

          Hola, te paso el fragmento de codigo en el que hago esto:





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

          * -------- create and set document -------------------------------
          pdf_content = cl_document_bcs=>xstring_to_solix( pdf_xstring ).

          pdf_content2 = cl_document_bcs=>xstring_to_solix( pdf_xstring2 ).

          APPEND 'Hello world!' TO text.

          document = cl_document_bcs=>create_document(
          i_type = 'RAW'
          i_text = text
          i_length = '12'
          i_subject = text-001 ).

          * Creo el attachment
          TRY.

          document->add_attachment(
          EXPORTING
          i_attachment_type = 'PDF'
          i_attachment_subject = motivo_email
          i_att_content_hex = pdf_content ).


          document->add_attachment(
          EXPORTING
          i_attachment_type = 'PDF'
          i_attachment_subject = text-002
          i_att_content_hex = pdf_content2 ).

          CATCH cx_document_bcs INTO lx_document_bcs.
          CONCATENATE SY-MSGID '|' SY-MSGTY '|' SY-MSGNO ':' SY-MSGV1 '|' SY-MSGV2 '|' SY-MSGV3 '|' SY-MSGV4 INTO MSG_ID.
          EXPORT MSG_ID TO MEMORY ID 'MSG_ID'.
          EXIT.
          ENDTRY.

          * add document object to send request
          send_request->set_document( document ).

          * --------- add recipient (e-mail address) -----------------------
          * create recipient object
          recipient = cl_cam_address_bcs=>create_internet_address( mailto ).

          * add recipient object to send request
          send_request->add_recipient( recipient ).

          * ---------- send document ---------------------------------------
          sent_to_all = send_request->send( i_with_error_screen = 'X' ).

          commit work.

          *------------------------------------------------

          ENDTRY.

          Comentario

          • izak
            Junior Member
            • mar
            • 3

            #6
            Hola, saben como puedo pasar el contenido de un PDF para usarlo en la funcion 'SCMS_XSTRING_TO_BINARY'?

            En pocas palabras, quisiera saber como lleno el dato:

            EXPORTING
            buffer = xxxxxx

            Otra consulta, referente a lo que pusiste marianoboni,

            pdf_content = cl_document_bcs=>xstring_to_solix( pdf_xstring ).

            Puedo setear pdf_xstring con un archivo pdf directo o tengo que pasarlo a xstring, en todo caso como haría eso?

            Gracias de antemano a todos.

            Comentario

            • vamp_01
              Senior Member
              • jun
              • 109

              #7
              Originalmente publicado por marianoboni
              Las clases que utilizo son :

              data:
              pdf_content type solix_tab,
              send_request type ref to cl_bcs,
              document type ref to cl_document_bcs,

              Hola, te paso el fragmento de codigo en el que hago esto:





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

              * -------- create and set document -------------------------------
              pdf_content = cl_document_bcs=>xstring_to_solix( pdf_xstring ).

              pdf_content2 = cl_document_bcs=>xstring_to_solix( pdf_xstring2 ).

              APPEND 'Hello world!' TO text.

              document = cl_document_bcs=>create_document(
              i_type = 'RAW'
              i_text = text
              i_length = '12'
              i_subject = text-001 ).

              * Creo el attachment
              TRY.

              document->add_attachment(
              EXPORTING
              i_attachment_type = 'PDF'
              i_attachment_subject = motivo_email
              i_att_content_hex = pdf_content ).


              document->add_attachment(
              EXPORTING
              i_attachment_type = 'PDF'
              i_attachment_subject = text-002
              i_att_content_hex = pdf_content2 ).

              CATCH cx_document_bcs INTO lx_document_bcs.
              CONCATENATE SY-MSGID '|' SY-MSGTY '|' SY-MSGNO ':' SY-MSGV1 '|' SY-MSGV2 '|' SY-MSGV3 '|' SY-MSGV4 INTO MSG_ID.
              EXPORT MSG_ID TO MEMORY ID 'MSG_ID'.
              EXIT.
              ENDTRY.

              * add document object to send request
              send_request->set_document( document ).

              * --------- add recipient (e-mail address) -----------------------
              * create recipient object
              recipient = cl_cam_address_bcs=>create_internet_address( mailto ).

              * add recipient object to send request
              send_request->add_recipient( recipient ).

              * ---------- send document ---------------------------------------
              sent_to_all = send_request->send( i_with_error_screen = 'X' ).

              commit work.

              *------------------------------------------------

              ENDTRY.
              marianoboni hola me puedes ayudar tengo que hacer algo parecido, generar 3 pdf y adjuntarlos a un correo, creo que con esta explicacion me queda claro, pero quiero preguntarte como generas los pdf, a mi me aparecen con vista previa o hay que generarlos de otra manera...
              Muchas GRacias

              Comentario

              Trabajando...