on 08-02-2007 2:37 PM
Hi, I've made a function module that takes a Purcharse Orden from spool, converts to PDF file and then send the form via mail. Everything work fine but the corporative logo in the form can't be seen... When I try to open the attachment, Acrobat Reader launchs a popup with the message "Insufficient data for an image" and then ONLY the logo is not displayed.
Here's the MF code. I'll give points to useful answers. Thank you.
FUNCTION Z_WF_SENDMAIL_PO_PDF.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(PO_ORDER) LIKE EKKO-EBELN
*" VALUE(DELETE_SPOOL) LIKE SYST-FTYPE OPTIONAL
*" VALUE(FILENAME) LIKE P05T_RESPONSE-FILENAME OPTIONAL
*" VALUE(RECEPTOR) LIKE SWHACTOR STRUCTURE SWHACTOR
*" EXCEPTIONS
*" SENDING_FAILURE
*" CONVERSION_ERROR
*" NO_SPOOL
*" UPLOAD_ERROR
*"----------------------------------------------------------------------
DATA: T_TSP01 TYPE TSP01 OCCURS 0 WITH HEADER LINE,
PDF TYPE TLINE OCCURS 0 WITH HEADER LINE.
DATA: NUMBYTES TYPE I,
PDFSPOOLID TYPE TSP01-RQIDENT,
JOBNAME TYPE TBTCJOB-JOBNAME,
JOBCOUNT TYPE TBTCJOB-JOBCOUNT,
SPOOLS TYPE I.
DATA: gd_cnt TYPE i,
gd_sent_all(1) TYPE c,
gd_doc_data LIKE sodocchgi1,
gd_error TYPE sy-subrc.
DATA: it_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE.
DATA: lt_objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE,
lt_objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
lt_objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
lt_objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
lt_reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE,
l_document_data TYPE sodocchgi1.
DATA: l_att_lines TYPE i,
gd_buffer type string.
DATA: BEGIN OF lt_mails occurs 0,
bname like usr21-bname,
smtp_addr like adr6-smtp_addr,
END OF lt_mails.
************************************************************************
REFRESH : pdf, it_packing_list.
CLEAR : pdf, it_packing_list.
SELECT RQIDENT
INTO T_TSP01-RQIDENT
FROM TSP01
WHERE RQOWNER EQ receptor-objid
AND RQCLIENT EQ SY-MANDT.
APPEND T_TSP01.
ENDSELECT.
IF SY-SUBRC NE 0.
RAISE NO_SPOOL.
ELSE.
SORT T_TSP01 DESCENDING.
READ TABLE T_TSP01 INDEX 1.
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = T_TSP01-RQIDENT
NO_DIALOG = ''
IMPORTING
PDF_BYTECOUNT = NUMBYTES
* PDF_SPOOLID = PDFSPOOLID
* BTC_JOBNAME = JOBNAME
* BTC_JOBCOUNT = JOBCOUNT
TABLES
PDF = PDF
EXCEPTIONS
ERR_NO_OTF_SPOOLJOB = 1
ERR_NO_SPOOLJOB = 2
ERR_NO_PERMISSION = 3
ERR_CONV_NOT_POSSIBLE = 4
ERR_BAD_DSTDEVICE = 5
USER_CANCELLED = 6
ERR_SPOOLERROR = 7
ERR_TEMSEERROR = 8
ERR_BTCJOB_OPEN_FAILED = 9
ERR_BTCJOB_SUBMIT_FAILED = 10
ERR_BTCJOB_CLOSE_FAILED = 11
OTHERS = 12.
IF SY-SUBRC NE 0.
RAISE CONVERSION_ERROR.
ELSE.
IF NOT FILENAME IS INITIAL.
open dataset filename for output in binary mode.
if sy-subrc ne 0 .
RAISE UPLOAD_ERROR.
endif.
loop at pdf.
transfer pdf to filename.
if sy-subrc ne 0 .
RAISE UPLOAD_ERROR.
endif.
ENDLOOP.
ENDIF.
IF NOT DELETE_SPOOL IS INITIAL.
DELETE FROM TSP01 WHERE RQIDENT EQ T_TSP01-RQIDENT.
ENDIF.
********************************************************
CHECK NOT ( receptor IS INITIAL ).
CLEAR: lt_reclist, lt_reclist[],
lt_objhead, lt_objhead[],
lt_objtxt, lt_objtxt[],
lt_objbin, lt_objbin[],
lt_objpack, lt_objpack[].
CLEAR l_document_data.
* Chequea si fue bajada la orden de spool
CHECK NOT ( pdf[] IS INITIAL ).
* Transferir los strings de 132 caracters a strings de 255 caracteres.
loop at pdf.
translate pdf using ' ~'.
concatenate gd_buffer pdf into gd_buffer.
endloop.
translate gd_buffer using '~ '.
do.
lt_objbin = gd_buffer.
append lt_objbin.
shift gd_buffer left by 255 places.
if gd_buffer is initial.
exit.
endif.
enddo.
* Cuerpo del mail
CONCATENATE 'Se adjunta Pedido de Compra' PO_ORDER INTO lt_objtxt SEPARATED BY SPACE.
APPEND lt_objtxt.
DESCRIBE TABLE lt_objtxt LINES l_att_lines.
READ TABLE lt_objtxt INDEX l_att_lines.
* Titulo del mail
l_document_data-obj_descr = 'Envio de Pedido de Compra'.
l_document_data-obj_name = 'Pedido'.
l_document_data-sensitivty = 'F'.
l_document_data-expiry_dat = sy-datum + 10.
l_document_data-doc_size = ( l_att_lines - 1 ) * 255 + strlen( lt_objtxt ).
l_document_data-obj_langu = sy-langu.
lt_objhead = 'ORDERS'.
APPEND lt_objhead.
* Configuración del cuerpo del mail
CLEAR lt_objpack.
REFRESH lt_objpack.
lt_objpack-transf_bin = space.
lt_objpack-head_start = 1.
lt_objpack-head_num = 0.
lt_objpack-body_start = 1.
* lt_objpack-body_num = 1.
lt_objpack-body_num = l_att_lines.
lt_objpack-doc_type = 'RAW'.
* lt_objpack-doc_size = STRLEN( lt_objtxt ).
APPEND lt_objpack.
* Configuración del archivo adjunto del mail
DESCRIBE TABLE lt_objbin LINES l_att_lines.
READ TABLE lt_objbin INDEX l_att_lines.
clear lt_objpack.
lt_objpack-transf_bin = 'X'.
lt_objpack-head_start = 1.
lt_objpack-head_num = 1.
lt_objpack-body_start = 1.
lt_objpack-body_num = l_att_lines.
lt_objpack-doc_type = 'PDF'.
lt_objpack-obj_name = 'Pedido'.
lt_objpack-obj_descr = 'Pedido de Compra'.
* lt_objpack-doc_size = ( 255 * ( l_att_lines - 1 ) ) + STRLEN( lt_objbin-line ).
lt_objpack-doc_size = 255 * l_att_lines.
append lt_objpack.
* Lista de receptores
SELECT u~bname a~smtp_addr
FROM usr21 as u
INNER JOIN adr6 as a
ON u~persnumber = a~persnumber
INTO TABLE lt_mails
WHERE bname = receptor-objid.
LOOP AT lt_mails.
clear lt_reclist.
refresh lt_reclist.
lt_reclist-receiver = lt_mails-smtp_addr.
lt_reclist-rec_type = 'U'.
lt_reclist-com_type = 'INT'.
APPEND lt_reclist.
ENDLOOP.
* Envio del mail
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = l_document_data
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = lt_objpack
object_header = lt_objhead
contents_bin = lt_objbin
contents_txt = lt_objtxt
receivers = lt_reclist
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.
RAISE SENDING_FAILURE.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
I guess this could be one of the reasons, check you have authorizations on image.
Regards,
SaiRam
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
90 | |
10 | |
10 | |
10 | |
7 | |
7 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.