Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

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

Former Member
0 Kudos

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>

1 ACCEPTED SOLUTION

former_member223537
Active Contributor
0 Kudos

http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm

This is very will documented sample program

2 REPLIES 2

former_member223537
Active Contributor
0 Kudos

http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm

This is very will documented sample program

0 Kudos

Hi Prashant,

Thanks for your reply. Really it is very useful one.

In this, the output list is getting populated into spool and to pdf.

But my requirement sending the internal table contents to spool directly without dispalying in the output list.

I did the program like the above mentioned one already. But my requirement is not that one.

Regards

chakradhar