Send Email problem

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • CESARCAES01
    Member
    • nov
    • 46

    #1

    Send Email problem

    hola chicos. estoy enviando un correo con un archivo adjunto en pdf. el correo llega pero vacio.. ayuda tengo varioss dias haciendo esto y nada. el que envia el correo es un z, con la funcion SO_DOCUMENT_SEND_API1
  • Ripper87
    Member
    • dic
    • 37

    #2
    Pega el código aca para revisarlo.

    Como estas llenando la tabla parámetro contents_txt?

    Comentario

    • CESARCAES01
      Member
      • nov
      • 46

      #3
      FORM f_send_mail.
      " Local data
      DATA: ld_sender_address LIKE soextreci1-receiver. " Mail data
      DATA: ld_sender_address_type LIKE soextreci1-adr_typ. " Mail data
      DATA: ld_sent_to_all LIKE sonv-flag. " Mail data
      DATA: ld_lname TYPE string.
      DATA: ld_index TYPE string.
      DATA: ld_cont TYPE I.

      " WA's
      DATA: ls_doc_data LIKE sodocchgi1. " Mail Data
      DATA: ls_packing_list TYPE sopcklsti1. " Mail Data
      DATA: ls_receivers TYPE somlreci1. " Mail Data
      " IT'S
      DATA: lt_packing_list TYPE TABLE OF sopcklsti1. " Mail Data
      DATA: lt_contents_bin TYPE TABLE OF solisti1. " Mail Data
      DATA: lt_contents_txt TYPE TABLE OF solisti1. " Mail Data
      DATA: lt_contents_hex TYPE TABLE OF solisti1. " Mail Data
      DATA: lt_receivers TYPE TABLE OF somlreci1. " Mail Data
      " FS's
      FIELD-SYMBOLS: <lfs_line> TYPE solisti1. " Mail Data
      FIELD-SYMBOLS: <lfs_packing_list> TYPE sopcklsti1. " Mail Data
      FIELD-SYMBOLS: <lfs_receivers> TYPE somlreci1. " Mail Data
      FIELD-SYMBOLS: <lfs_report> LIKE LINE OF gt_report.

      " Contenido del mensaje LT_CONTENTS_TXT
      DO.
      " Se debe crear una constante por cada linea.
      " El nombre debe comenzar por lo indicado en GC_BEG_LINE_NAME y seguidamente un número consecutivo
      MOVE sy-index TO ld_index. CONDENSE ld_index.
      CONCATENATE gc_beg_line_name ld_index INTO ld_lname.
      ASSIGN (ld_lname) TO <lfs_line>.
      IF <lfs_line> IS ASSIGNED.
      APPEND <lfs_line> TO lt_contents_txt.
      UNASSIGN <lfs_line>.
      ELSE.
      EXIT.
      ENDIF.
      ENDDO.

      " Document data - Common part
      MOVE sy-langu TO ls_doc_data-obj_langu.
      MOVE 'SAPRPT' TO ls_doc_data-obj_name.
      MOVE gc_mail_title TO ls_doc_data-obj_descr.
      MOVE 'F' TO ls_doc_data-sensitivty.

      " Describe the message body
      MOVE space TO ls_packing_list-transf_bin.
      MOVE 1 TO ls_packing_list-head_start.
      MOVE 0 TO ls_packing_list-head_num.
      MOVE 1 TO ls_packing_list-body_start.
      MOVE 'RAW' TO ls_packing_list-doc_type.
      DESCRIBE TABLE lt_contents_txt LINES ls_packing_list-body_num.
      APPEND ls_packing_list TO lt_packing_list.

      " Attachment notif
      MOVE 'X' TO ls_packing_list-transf_bin.
      MOVE 1 TO ls_packing_list-head_start.
      MOVE 0 TO ls_packing_list-head_num.
      MOVE 1 TO ls_packing_list-body_start.
      MOVE 'PDF' TO ls_packing_list-doc_type.
      CONCATENATE gc_fileprefix sy-datum INTO ls_packing_list-obj_name.
      APPEND ls_packing_list TO lt_packing_list.

      " Send to - Common part
      MOVE 'U' TO ls_receivers-rec_type.
      MOVE 'INT' TO ls_receivers-com_type.
      MOVE 'X' TO ls_receivers-notif_del.
      MOVE 'X' TO ls_receivers-notif_ndel.
      APPEND ls_receivers TO lt_receivers.


      " Loop employees
      LOOP AT gt_report ASSIGNING <lfs_report>.

      " Document data - Employee specific part
      MOVE <lfs_report>-file_size TO ls_doc_data-doc_size.
      " Attachment notif
      READ TABLE lt_packing_list ASSIGNING <lfs_packing_list> INDEX 2.
      DESCRIBE TABLE lt_contents_bin LINES <lfs_packing_list>-body_num.
      " Pay receipt
      MOVE <lfs_report>-file_size TO <lfs_packing_list>-doc_size.
      * MOVE <lfs_report>-pay_receipt TO lt_contents_bin.
      " Send TO - Mail
      READ TABLE lt_receivers ASSIGNING <lfs_receivers> INDEX 1.
      * MOVE <lfs_report>-email TO <lfs_receivers>-receiver.
      MOVE 'cesarcaes01@gmail.com' TO <lfs_receivers>-receiver.

      "convert 132 to 255
      CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
      EXPORTING
      line_width_src = 132
      line_width_dst = 255
      TABLES
      CONTENT_IN = <lfs_report>-pay_receipt
      CONTENT_OUT = lt_contents_bin
      EXCEPTIONS
      err_line_width_src_too_long = 1
      err_line_width_dst_too_long = 2
      err_conv_failed = 3
      OTHERS = 4.


      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
      EXPORTING
      DOCUMENT_DATA = ls_doc_data
      * PUT_IN_OUTBOX = PUT_IN_OUTBOX
      * SENDER_ADDRESS = SPACE
      * SENDER_ADDRESS_TYPE = SPACE
      COMMIT_WORK = 'X'
      IMPORTING
      SENT_TO_ALL = ld_sent_to_all
      TABLES
      PACKING_LIST = lt_packing_list
      CONTENTS_BIN = lt_contents_bin
      CONTENTS_TXT = lt_contents_txt
      RECEIVERS = lt_receivers
      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.
      IF sy-subrc NE 0.
      MESSAGE 'Error al enviar mail' TYPE 'W'.

      else.
      MESSAGE 'Mensaje enviado' TYPE 'W'.
      ENDIF.

      ENDLOOP.

      ENDFORM.

      Comentario

      • CESARCAES01
        Member
        • nov
        • 46

        #4
        donde gt_report-pay_receipt es una variable de tipo tline de 132. por eso hago la conversion de 132 a 255. pero no me llega el pdf..

        Comentario

        • Angel2000
          Junior Member
          • feb
          • 1

          #5
          Estafador SAP Waldo Alejandro Rivera Toscano

          Quiero hacer de su conocimiento que Waldo Alejandro Rivera Toscano, ofrece servicio de servidores en renta los cuales despues de 4 semana desactiva y se da por perdido en su correo:sapidesmexico@gmail.com, de la misma forma ofrece material SAP en diferentes modulos los cuales son falsos.

          Comentario

          • CESARCAES01
            Member
            • nov
            • 46

            #6
            Ayuda por favor...

            Comentario

            • Ripper87
              Member
              • dic
              • 37

              #7
              Me puedes explicar esta parte?

              Código:
              " Contenido del mensaje LT_CONTENTS_TXT
              DO.
              " Se debe crear una constante por cada linea.
              " El nombre debe comenzar por lo indicado en GC_BEG_LINE_NAME y seguidamente un número consecutivo
              MOVE sy-index TO ld_index. CONDENSE ld_index.
              CONCATENATE gc_beg_line_name ld_index INTO ld_lname.
              ASSIGN (ld_lname) TO <lfs_line>.
              IF <lfs_line> IS ASSIGNED.
              APPEND <lfs_line> TO lt_contents_txt.
              UNASSIGN <lfs_line>.
              ELSE.
              EXIT.
              ENDIF.
              ENDDO.
              Como alimentas el texto?
              Quien es GC_BEG_LINE_NAME?
              Te has asegurado por el debugger que la tabla lt_contents_txt se llena correctamente?

              Comentario

              • CESARCAES01
                Member
                • nov
                • 46

                #8
                en esa parte del código estoy llenando el contenido del email, sin tocar el adjunto. es decir el cuerpo del correo. las constantes que se piden crear es un cmentario que le hago al codigo a futuro, para completar los datos de la tabla alv. el correo llega perfecto. solo el adjunto siempre llega con 1k.


                GC_BEG_LINE_NAME la estoy usando como formato para definir el nombre de las constantes a futuro.

                y si se recorre con exito la txt.

                Comentario

                • CESARCAES01
                  Member
                  • nov
                  • 46

                  #9
                  El problema creo que esta en el lt_contents_bin, parámetro en el que paso el pdf al al función que envía el correo, lo extraño es que pruebo en esa parte del código con la función DOWNLOAD, y si me descarga el recibo de pago perfecto. pero la función SO_DOCUMENT_SEND_API1 no se lleva el pdf.

                  Comentario

                  • Ripper87
                    Member
                    • dic
                    • 37

                    #10
                    Ok, disculpa de verdad habia entendido mal el problema, no se porque entendí que era el texto lo que te fallaba y no el adjunto.

                    Bueno, no soy experto, estoy tratando de ver diferencias con un codigo que yo ya he usado y se que ha funcionado bien, de las pocas diferencias que vi prueba a ver con esto:


                    Tu tienes unas líneas con este código:

                    Código:
                    READ TABLE lt_packing_list ASSIGNING <lfs_packing_list> INDEX 2.
                    DESCRIBE TABLE lt_contents_bin LINES <lfs_packing_list>-body_num.
                    Comentalas, y agrega este código luego de tu llamada a la función SX_TABLE_LINE_WIDTH_CHANGE:

                    Código:
                    CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
                    EXPORTING
                    line_width_src = 132
                    line_width_dst = 255
                    TABLES
                    CONTENT_IN = <lfs_report>-pay_receipt
                    CONTENT_OUT = lt_contents_bin
                    EXCEPTIONS
                    err_line_width_src_too_long = 1
                    err_line_width_dst_too_long = 2
                    err_conv_failed = 3
                    OTHERS = 4.
                    
                    ********* Agregas esto aca: *********
                    DATA: tot_line TYPE i.
                    FIELD-SYMBOLS: <fs_bin> TYPE solisti1.
                    
                    DESCRIBE TABLE lt_contents_bin LINES tot_line.
                    READ TABLE lt_contents_bin ASSIGNING <fs_bin> INDEX tot_line.
                    
                    READ TABLE lt_packing_list ASSIGNING <lfs_packing_list> INDEX 2.
                    
                    <lfs_packing_list>-body_num = ( tot_line - 1 ) * 255 + strlen( <fs_bin> ).
                    Esperemos que ese sea el problema.

                    Comentario

                    • CESARCAES01
                      Member
                      • nov
                      • 46

                      #11
                      hola, excelente ahora si me llega el pdf, supuestamentre tiene informacion, pero cuando lo voy a abrir me dice que esta malo.

                      Comentario

                      • CESARCAES01
                        Member
                        • nov
                        • 46

                        #12
                        hola. el correo llega ahora con data, supuestamente tiene info, pero cuando la voy a abrir dice q esta dañado.

                        Comentario

                        Trabajando...