Ver Mensaje Individual
  #8  
Viejo 18/11/14, 11:26:15
djabegac djabegac is offline
Junior Member
 
Fecha de Ingreso: abr 2008
Mensajes: 7
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.
Responder Con Cita