cancel
Showing results for 
Search instead for 
Did you mean: 

Split 1 spool into multiple PDF's

Former Member
0 Kudos

Hi All,

Using the Std. pgm RSTXPDFT4 im able to convert my spool into a PDF document but is there anyway that i can split spool and then convert into PDF.

For ex. if my spool has 4 pages is there anyway that i can generate 2 PDF's with 2 pages each?

Thanks in Advance.

Regards..!

Accepted Solutions (0)

Answers (5)

Answers (5)

dharmenda_kumar
Explorer
0 Kudos

i have created a program using which you can create multiple pdf from a single spool number

first in the code below i have taken a spool number which has 2 pages in it.

second you must use the FM : RSPO_RETURN_SPOOLJOB  in the program to get the content of the spool .  while to perform analysis on how to build logic to split the spool otf/pdf user the FM RSPO_DISPLAY_SPOOLJOB, here by passing the spool number you will get the content in display mode and then based on the keyword you will build logic for e.g in my case i have to perform segregation based on material number so it can be used to decide how many pages are reserved by a specific material number.

another important point to kept in mind is that otf begins with "//"  and a page ends with "EP" and last page ends with  "//" along with "EP". It can be used to remove the number of lines to keep specific pages .

program layout as with proper documentation has been provided.

REPORT  zdk_spool_split.
**********************************************************************
* DATA DECLARATION.
TYPES : tbuf LIKE tline OCCURS 1.
FIELD-SYMBOLS: <buf> TYPE tbuf.
FIELD-SYMBOLS : <lit_otf> TYPE ANY TABLE.
DATA : lit_otf TYPE STANDARD TABLE OF itcoo.
DATA : objcont LIKE soli  OCCURS 0 WITH HEADER LINE.
DATA : format(5) TYPE c, dummy TYPE i.
DATA : buffer_pdf TYPE STANDARD TABLE OF tline.
DATA : p_file LIKE rlgrap-filename VALUE 'C:\temp\file1.pdf'. "#EC NOTEXT
DATA : numbytes TYPE i VALUE 255.
DATA : cancel.
DATA : otfcmd LIKE itcoo VALUE '//'.
DATA : pdfcnv_archive_index LIKE toa_dara.
DATA : bin_file TYPE xstring,
        pdf_username TYPE c.
**********************************************************************
* GET THE SPOOL NUMBER FROM THE USER.
PARAMETERS : p_sid TYPE tsp01-rqident OBLIGATORY.
**********************************************************************
* GET THE CONTENT OF THE SPOOL NUMBER
CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
   EXPORTING
     rqident              = p_sid
   TABLES
     buffer               = objcont
   EXCEPTIONS
     no_such_job          = 1
     job_contains_no_data = 2
     selection_empty      = 3
     no_permission        = 4
     can_not_access       = 5
     read_error           = 6
     type_no_match        = 7
     OTHERS               = 8.
IF sy-subrc <> 0.
   MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
**********************************************************************
* INCORPORATE YOUR LOGIC TO DELETE LINES WHICH ARE NOT REQUIRED.
* IN MY CASE I HAVE REMOVED LINES FROM 351 TO 715 TO REMOVE THE SECOND PAGE FROM MY SPOOL
* MY OBJCONT AFTER DELTED BEGINS WITH "//" AND ENDS WITH "EP" AND "//"
DELETE objcont[] FROM 351 TO 715.
* IT ONLY CONTAINS ONE PAGE OUT OF 2 PAGES FROM THE SPOOL NUMBER I HAVE PROVIDED.
**********************************************************************
* CONVERT OTF TO PDF
lit_otf = objcont[]. " GET THE OTF IN CORRECT OTF FORMAT
ASSIGN buffer_pdf TO <buf>.
format = 'PDF'. " CHOOSE THE CORRECT FORMAT IE PDF MUST FOR CONVERSION
CALL FUNCTION 'CONVERT_OTF'
   EXPORTING
     format                = format
   IMPORTING
     bin_filesize          = dummy
   TABLES
     otf                   = lit_otf
     lines                 = <buf>
   EXCEPTIONS
     err_max_linewidth     = 1
     err_format            = 2
     err_conv_not_possible = 3
     OTHERS                = 4.
IF sy-subrc IS NOT INITIAL.
   MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
**********************************************************************
* GET THE NUMBYTES OF THE PDF CONTENT OBTAINED AFTER THE CONVERSION
* CORRECT NUMBYTE IS VERY IMPORTANT OTHERWISE IT WILL NOT GENERATE
* PDF IN CORRECT FORMAT.
PERFORM convert_otf2pdf_end(rstxcpdf) TABLES <buf>
                                       USING otfcmd
                                             numbytes
                                             pdfcnv_archive_index
                                             bin_file
                                             pdf_username.
**********************************************************************
* NOW DOWNLOAD THE PDF TO VIEW IN ACTUAL PDF AT DESIRED PATH
PERFORM download_w_ext(rstxpdft) TABLES <buf>
                                  USING p_file
                                        '.pdf'
                                        'BIN'
                                        numbytes
                                        cancel.

Former Member
0 Kudos

what are u working on?

Scripts or forms?

кu03B1ятu03B9к

Former Member
0 Kudos

im working in scripts

Former Member
0 Kudos

W_OPTIONS LIKE ITCPO .

W_OPTIONS-TDGETOTF = 'X'.

use it in fm OPEN_FORM OPTIONS exporting parameters.

u'll get otf data here

call function 'CLOSE_FORM'
 TABLES
    OTFDATA                        = IT_OTFDATA

кu03B1ятu03B9к

Edited by: kartik tarla on Mar 6, 2009 9:14 PM

Former Member
0 Kudos

Script to OTF has already discussed.

OTF to PDF conversion:

# Use function module
CONVERT_OTF to convert OTF to PDF (set import parameter FORMAT to 'PDF'). The prerequisite for this is that OTF is returned as a table in the application program. 

Regards,

~Satya

Former Member
0 Kudos

convert spool to otf and this otf can be edited in any way u want then, converrt otf to pdf using FM CONVERT_OTF

Former Member
0 Kudos

may i know how we convert a spool to OTF please..

upon checking sp01 i didnt find such option ... is there anyother way?

Former Member
0 Kudos

This message was moderated.

Former Member
0 Kudos

Hi Dude,

Once the spool has been generated its not possible to create multiple spools for the pdf output.

in the print program only you can write FM open_form twice...

Hope it may helps for you

Thanks & Regards

Ramakrishna Pathi