cancel
Showing results for 
Search instead for 
Did you mean: 

Converting Print Spools to PDF

06-15-2006 10:57 PM
5734 views 8 comments Go to solution
0 Likes
SAP Managed Tags
Subscribe

Hi,

I want to convert multiple print spools to a single PDF file.

The print spools are basically SD Invoice print spools.

Also the PDF file should have an associated index (.txt) file that will have information like invoice number, Page Break, Customer Number etc.

We are currently on SAP 4.6C version.

Is it possible technically to achieve this?

0 Likes

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Likes

Hai

Go through the following COde

Source Code Listing

report zabap_2_pdf.

*-- Enhancements: only allow to be run with variant. Then called

*-- program will be transparent to users

*-- TABLES

tables:

tsp01.

*-- STRUCTURES

data:

mstr_print_parms like pri_params,

mc_valid(1) type c,

mi_bytecount type i,

mi_length type i,

mi_rqident like tsp01-rqident.

*-- INTERNAL TABLES

data:

mtab_pdf like tline occurs 0 with header line,

mc_filename like rlgrap-filename.

*-- SELECTION SCREEN

parameters:

p_repid like sy-repid, " Report to execute

p_linsz like sy-linsz default 132, " Line size

p_paart like sy-paart default 'X_65_132'. " Paper Format

start-of-selection.

concatenate 'c:\'

p_repid

'.pdf'

into mc_filename.

*-- Setup the Print Parmaters

call function 'GET_PRINT_PARAMETERS'

exporting

authority= space

copies = '1'

cover_page = space

data_set = space

department = space

destination = space

expiration = '1'

immediately = space

in_archive_parameters = space

in_parameters = space

layout = space

mode = space

new_list_id = 'X'

no_dialog= 'X'

user = sy-uname

importing

out_parameters = mstr_print_parms

valid = mc_valid

exceptions

archive_info_not_found = 1

invalid_print_params = 2

invalid_archive_params = 3

others = 4.

*-- Make sure that a printer destination has been set up

*-- If this is not done the PDF function module ABENDS

if mstr_print_parms-pdest = space.

mstr_print_parms-pdest = 'LOCL'.

endif.

*-- Explicitly set line width, and output format so that

*-- the PDF conversion comes out OK

mstr_print_parms-linsz = p_linsz.

mstr_print_parms-paart = p_paart.

submit (p_repid) to sap-spool without spool dynpro

spool parameters mstr_print_parms

via selection-screen

and return.

*-- Find out what the spool number is that was just created

perform get_spool_number using sy-repid

sy-uname

changing mi_rqident.

*-- Convert Spool to PDF

call function 'CONVERT_ABAPSPOOLJOB_2_PDF'

exporting

src_spoolid= mi_rqident

no_dialog = space

dst_device = mstr_print_parms-pdest

importing

pdf_bytecount = mi_bytecount

tables

pdf = mtab_pdf

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.

call function 'DOWNLOAD'

exporting

bin_filesize = mi_bytecount

filename = mc_filename

filetype = 'BIN'

importing

act_filename = mc_filename

tables

data_tab = mtab_pdf.

----


  • FORM get_spool_number *

----


  • Get the most recent spool created by user/report *

----


  • --> F_REPID *

  • --> F_UNAME *

  • --> F_RQIDENT *

----


form get_spool_number using f_repid

f_uname

changing f_rqident.

data:

lc_rq2name like tsp01-rq2name.

concatenate f_repid+0(8)

f_uname+0(3)

into lc_rq2name separated by '_'.

select * from tsp01 where rq2name = lc_rq2name

order by rqcretime descending.

f_rqident = tsp01-rqident.

exit.

endselect.

if sy-subrc ne 0.

clear f_rqident.

endif.

endform." get_spool_number

Thanks & regards

Sreeni

Answers (3)

Answers (3)

Former Member
0 Likes

HI

GOOD

As of Release 4.6D, PDF format (Adobe Acrobat data format) can be created via the SAP spooler by using the device type "PDF1".

As a workaround, a report (RSTXPDFT4) is made available for the missing "direct PDF printing", which can read spool requests, convert to PDF and perform a frontend download.

Read OSS Note 317851 - Printing PDF files in 4.6C/4.6B/4.5B

Note the restrictions specified in Note 323736 with the print output with PDF.

Caution when modifying device type ZPDF1, see Note 437696.

Version < 4.6D

If you are in version less than 4.6D, you can configure an output type to convert the spool automatically into a PDF format into your local harddisk but not do a "direct PDF printing".

When you print to this PDF output type, it will prompt you to enter the file name of your PDF file to be stored into your local harddisk.

First you have to add a printer using

Windows -> Start -> Settings -> Printers -> Generic / Text Only -> Port : Print to File

Next create a new device type e.g. ZPDF -> Select device type ZPDF1

Options for HostSpoolAccMethod -> Host spool access method : F : Printing on Frontend Computer

Host Printer : __DEFAULT or Generic / Text Only

Save your entries.

When you print to the device type ZPDF, choose Generic / Text Only for the Frontend Computer if it is not the default type.

A user prompt Print to File will appear to let you specify the Output File Name.

-


CONVERT_ABAPSPOOLJOB_2_PDF convert abap spool output to PDF

CONVERT_OTF Convert SAP documents (SAPScript) to other types.

Example:

CALL FUNCTION "CONVERT_OTF"

EXPORTING FORMAT = "PDF"

IMPORTING BIN_FILESIZE = FILE_LEN

TABLES OTF = OTFDATA

LINES = PDFDATA

EXCEPTIONS ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

OTHERS = 4.

CONVERT_OTFSPOOLJOB_2_PDF converts a OTF spool to PDF (i.e. Sapscript document

THANKS

MRUTYUN

Former Member
0 Likes

Hi MRUTYUN,

Thanks for the reply.

We have been able to convert single print spools (having multiple pages/invoices in it) to a single PDF file.

But how to convert MULTIPLE spools to a single PDF?

Regards

Sayan

Former Member
0 Likes

Try this:

You just need to enter the SPOOL request number from tcode SP01 and execute RSTXPDFT4 program from SE38.

Reward points if helpful

sridhar_k1
Active Contributor
0 Likes

Define a printer in SPAD with device type PDF1, any spool sent to this printer is converted to a PDF file.

You can add multiple print requests into one spool by not checking 'New spool request' and 'print immediately' in the print options screen.

When the combined spool is sent to the PDF printer, it should create a single PDF file.

YOu have to write the text file from the print program.

Regards

Sridhar

Former Member
0 Likes

Hi sridhar

when using this virtual printer with PDF1 i have issues in PDF.

there are alignment and font problems with bigger fonts.

i use only HELVE COURIER and TIMES as specified in the OSS note.

any idea???

Former Member
0 Likes

Hi Sridhar,

Thanks for your reply. This was helpful.

Are you talking of RSNAST00 as print program.

If so, how can we use this to generate a text file having information like invoice number and Page breaks (From/To) from the PDF file?

Regards

Sayan

sridhar_k1
Active Contributor
0 Likes

I was refering to the invoice print program that is used to print. When you print invoices, you can get the number of pages from spool parameter structure used in the print program, keep that in a variable and add number of pages next invoice print generated to that variable and write the info to a file on appserver using open dataset along with invoice number and any other info.

Do you really need a text file?, users can search in the PDF file for customer or invocie number ..etc..etc..

Regards

Sridhar