Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

URGENT ----- Problem in converting spool to pdf .

Error - File cannot be opened because of no pages ......

Hi experts,

I am passing internal table contents to spool --> then spool to pdf -


> then mail sending.

Everything is fine but only error is in the receiving mail the above error is coming.

given the code...

<b>I think the error is in converting into pdf function module</b>

<b>Help me to solve this problem as it is very urgent</b>

include data_declare. " pasted down

select * from kna1 into table itab up to 50 rows.

CALL FUNCTION 'RSPO_OPEN_SPOOLREQUEST'

EXPORTING

dest = 'LP01'

immediate_print = 'X'

IMPORTING

handle = handle

SPOOLID = spoolid.

loop at itab.

concatenate itab-kunnr itab-name1 itab-land1 into text separated by

space.

CALL FUNCTION 'RSPO_WRITE_SPOOLREQUEST'

EXPORTING

handle = handle

text = text.

endloop.

CALL FUNCTION 'RSPO_CLOSE_SPOOLREQUEST'

EXPORTING

handle = handle.

                                              • Convert Spool to PDF **********************************

<b>CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'

EXPORTING

src_spoolid = spoolid "gd_spool_nr

no_dialog = c_no

dst_device = c_device

IMPORTING

pdf_bytecount = gd_bytecount

TABLES

pdf = it_pdf_output

EXCEPTIONS

err_no_abap_spooljob = 1

err_no_spooljob = 2

err_no_permission = 3

err_conv_not_possible = 4

err_bad_destdevice = 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.

CHECK sy-subrc = 0.

  • Transfer the 132-long strings to 255-long strings

LOOP AT it_pdf_output.

TRANSLATE it_pdf_output USING ' ~'.

CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.

ENDLOOP.

TRANSLATE gd_buffer USING '~ '.

DO.

it_mess_att = gd_buffer.

APPEND it_mess_att.

SHIFT gd_buffer LEFT BY 255 PLACES.

IF gd_buffer IS INITIAL.

EXIT.

ENDIF.

ENDDO.</b>

***********************************************************************************

                                            • Processing Mail Sending ************************************

DATA: p_email LIKE somlreci1-receiver,

p_sender LIKE somlreci1-receiver,

sub(40).

DESCRIBE TABLE it_mess_att LINES gd_recsize.

CHECK gd_recsize > 0.

REFRESH it_mess_bod.

  • Default subject matter

gd_subject = 'Subject'.

gd_attachment_desc = text-002.

it_mess_bod = text-001.

APPEND it_mess_bod.

IF p_sender EQ space.

gd_sender_type = space.

ELSE.

gd_sender_type = 'INT'.

ENDIF.

MOVE 'Orders Rejeced on' TO sub.

WRITE: sy-datum DD/MM/YYYY TO sub+27(10).

  • Send file by email as .xls speadsheet

PERFORM send_file_as_email_attachment

TABLES it_mess_bod

it_mess_att

USING

  • p_email

sub "text-009

'PDF'

gd_attachment_name

gd_attachment_desc

  • p_sender

  • gd_sender_type

CHANGING gd_error

gd_reciever.

ENDFORM. " process_email

&----


*& Form send_file_as_email_attachment

&----


  • text

----


  • -->P_IT_MESS_BOD text

  • -->P_IT_MESS_ATT text

  • -->P_TEXT_009 text

  • -->P_1058 text

  • -->P_GD_ATTACHMENT_NAME text

  • -->P_GD_ATTACHMENT_DESC text

  • <--P_GD_ERROR text

  • <--P_GD_RECIEVER text

----


FORM send_file_as_email_attachment TABLES it_message

it_attach

USING

  • p_email

p_mtitle

p_format

p_filename

p_attdescription

  • p_sender_address

  • p_sender_addres_type

CHANGING p_error

p_reciever.

DATA: ld_error TYPE sy-subrc,

ld_reciever TYPE sy-subrc,

ld_mtitle LIKE sodocchgi1-obj_descr,

ld_email LIKE somlreci1-receiver,

ld_format TYPE so_obj_tp ,

ld_attdescription TYPE so_obj_nam ,

ld_attfilename TYPE so_obj_des ,

ld_sender_address LIKE soextreci1-receiver,

ld_sender_address_type LIKE soextreci1-adr_typ,

ld_receiver LIKE sy-subrc.

DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,

t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,

t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,

w_cnt TYPE i,

w_sent_all(1) TYPE c,

w_doc_data LIKE sodocchgi1.

  • ld_email = p_email.

ld_mtitle = p_mtitle.

ld_format = p_format.

ld_attdescription = p_attdescription.

ld_attfilename = p_filename.

  • ld_sender_address = p_sender_address.

  • ld_sender_address_type = p_sender_addres_type.

  • Fill the document data.

w_doc_data-doc_size = 1.

  • Populate the subject/generic message attributes

w_doc_data-obj_langu = sy-langu.

w_doc_data-obj_name = 'SAPRPT'.

w_doc_data-obj_descr = ld_mtitle .

w_doc_data-sensitivty = 'F'.

  • Fill the document data and get size of attachment

CLEAR w_doc_data.

READ TABLE it_attach INDEX w_cnt.

w_doc_data-doc_size =

( w_cnt - 1 ) * 255 + STRLEN( it_attach ).

w_doc_data-obj_langu = sy-langu.

w_doc_data-obj_name = 'SAPRPT'.

w_doc_data-obj_descr = ld_mtitle.

w_doc_data-sensitivty = 'F'.

CLEAR t_attachment.

REFRESH t_attachment.

t_attachment[] = it_attach[].

  • Describe the body of the message

CLEAR t_packing_list.

REFRESH t_packing_list.

t_packing_list-transf_bin = space.

t_packing_list-head_start = 1.

t_packing_list-head_num = 0.

t_packing_list-body_start = 1.

DESCRIBE TABLE it_message LINES t_packing_list-body_num.

t_packing_list-doc_type = 'RAW'.

APPEND t_packing_list.

  • Create attachment notification

t_packing_list-transf_bin = 'X'.

t_packing_list-head_start = 1.

t_packing_list-head_num = 1.

t_packing_list-body_start = 1.

DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.

t_packing_list-doc_type = ld_format.

t_packing_list-obj_descr = ld_attdescription.

t_packing_list-obj_name = ld_attfilename.

t_packing_list-doc_size = t_packing_list-body_num * 255.

APPEND t_packing_list.

  • Add the recipients email address

CLEAR t_receivers.

REFRESH t_receivers.

t_receivers-rec_type = 'U'.

t_receivers-com_type = 'INT'.

t_receivers-notif_del = 'X'.

t_receivers-notif_ndel = 'X'.

CLEAR gt_mail.

SELECT SINGLE * FROM zmail INTO gt_mail

WHERE grpnr = '1'.

IF NOT gt_mail-mail1 IS INITIAL.

t_receivers-receiver = gt_mail-mail1.

APPEND t_receivers.

ENDIF.

IF NOT gt_mail-mail2 IS INITIAL.

t_receivers-receiver = gt_mail-mail2.

APPEND t_receivers.

ENDIF.

IF NOT gt_mail-mail3 IS INITIAL.

t_receivers-receiver = gt_mail-mail3.

APPEND t_receivers.

ENDIF.

IF NOT gt_mail-mail4 IS INITIAL.

t_receivers-receiver = gt_mail-mail4.

APPEND t_receivers.

ENDIF.

  • LOOP AT gt_mail.

*

  • t_receivers-receiver = gt_mail-mailid..

  • APPEND t_receivers.

*

  • ENDLOOP.

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'

EXPORTING

document_data = w_doc_data

put_in_outbox = 'X'

sender_address = ld_sender_address

sender_address_type = ld_sender_address_type

commit_work = 'X'

IMPORTING

sent_to_all = w_sent_all

TABLES

packing_list = t_packing_list

contents_bin = t_attachment

contents_txt = it_message

receivers = t_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.

  • Populate zerror return code

ld_error = sy-subrc.

  • Populate zreceiver return code

LOOP AT t_receivers.

ld_receiver = t_receivers-retrn_code.

ENDLOOP.

ENDFORM. " send_file_as_email_attachment

**********************************************************************************

                                                • Data Declaration ************************************

DATA : handle LIKE sy-tabix.

data itab like kna1 occurs 0 with header line.

data: text(50) type c.

data: spoolid type TSP01-RQIDENT.

DATA : gt_listobject LIKE abaplist OCCURS 10 .

DATA : gt_objcont LIKE soli OCCURS 10 WITH HEADER LINE.

DATA : gt_objcont1 LIKE soli OCCURS 10 WITH HEADER LINE.

DATA : gt_objhead LIKE soli OCCURS 10 WITH HEADER LINE.

DATA : gt_att_head LIKE soli OCCURS 10 WITH HEADER LINE.

DATA : gt_receivers LIKE soos1 OCCURS 10 WITH HEADER LINE.

DATA : gt_packing_list LIKE soxpl OCCURS 10 WITH HEADER LINE.

DATA : gt_so_ali LIKE soli OCCURS 100 WITH HEADER LINE.

DATA : gt_so_ali1 LIKE soli OCCURS 100 WITH HEADER LINE.

DATA : gt_document_data LIKE sood1.

DATA: lineno TYPE i , length TYPE i , size TYPE i.

DATA: gt_message LIKE soli OCCURS 10 WITH HEADER LINE,

gt_message1 LIKE soli OCCURS 10 WITH HEADER LINE.

DATA: gt_scheme LIKE ztrc_scheme OCCURS 0 WITH HEADER LINE,

  • gt_mail LIKE zmail_prov OCCURS 0 WITH HEADER LINE.

gt_mail LIKE zmail." occurs 0 with header line.

DATA: gd_recsize TYPE i.

  • Spool IDs

TYPES: BEGIN OF t_tbtcp.

INCLUDE STRUCTURE tbtcp.

TYPES: END OF t_tbtcp.

DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,

wa_tbtcp TYPE t_tbtcp.

  • Job Runtime Parameters

DATA: gd_eventid LIKE tbtcm-eventid,

gd_eventparm LIKE tbtcm-eventparm,

gd_external_program_active LIKE tbtcm-xpgactive,

gd_jobcount LIKE tbtcm-jobcount,

gd_jobname LIKE tbtcm-jobname,

gd_stepcount LIKE tbtcm-stepcount,

gd_error TYPE sy-subrc,

gd_reciever TYPE sy-subrc.

DATA: w_recsize TYPE i.

DATA: gd_subject LIKE sodocchgi1-obj_descr,

it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,

it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,

gd_sender_type LIKE soextreci1-adr_typ,

gd_attachment_desc TYPE so_obj_nam,

gd_attachment_name TYPE so_obj_des.

  • Spool to PDF conversions

DATA: gd_spool_nr LIKE tsp01-rqident,

gd_destination LIKE rlgrap-filename,

gd_bytecount LIKE tst01-dsize,

gd_buffer TYPE string.

  • Binary store for PDF

DATA: BEGIN OF it_pdf_output OCCURS 0.

INCLUDE STRUCTURE tline.

DATA: END OF it_pdf_output.

CONSTANTS: c_dev LIKE sy-sysid VALUE 'DEV',

c_no(1) TYPE c VALUE ' ',

c_device(4) TYPE c VALUE 'LOCL'.

DATA: check TYPE c,

days TYPE i.

**************************************************************************************

<b></b><b></b><b></b>

Tags:
Former Member

Helpful Answer

by
Not what you were looking for? View more on this topic or Ask a question