‎2010 Feb 26 9:17 AM
Hi Guys,
While i am running the F.62 transaction, it is generation the single spool with all the documents; my requirement is i need to split the spool document wise.
I am using the Z correspondence type.
Could you please suggest, is any ways to split the spool.
Thanks,
Gourisankar.
‎2010 Feb 26 11:49 AM
Use this function module RSPO_RETURN_ABAP_SPOOLJOB ....
As per requirement split it into multiple different internal tables.
‎2010 Feb 26 10:20 AM
Refer this link .. http://help.sap.com/saphelp_45b/helpdata/en/d9/4a9a9051ea11d189570000e829fbbd/frameset.htm
might help
MAnthan
‎2010 Feb 26 11:20 AM
Hi,
is it a smartforms or a sapscript ?
In call function (for smartforms). see on option close_form.
Rgds
‎2010 Feb 26 11:49 AM
Use this function module RSPO_RETURN_ABAP_SPOOLJOB ....
As per requirement split it into multiple different internal tables.
‎2010 Feb 26 12:24 PM
Thanks for your reply.
Do i need to pass the spool no to this function module?
Thanks,
Gourisankar.
‎2010 Feb 26 12:45 PM
‎2010 Feb 26 12:53 PM
you need to write the spool text you get from RSPO_RETURN_ABAP_SPOOLJOB on the list screen.
rspo_return_abap_spooljob returns ascii text only and rspo_return_abap_spooljob_rw returns spooljob including formatting characters. Writing a raw format of a spoolist to the list screen
‎2014 Sep 03 12:14 PM
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.