Application Development and Automation 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: 
Read only

Spool split

Former Member
0 Likes
2,355

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,623

Use this function module RSPO_RETURN_ABAP_SPOOLJOB ....

As per requirement split it into multiple different internal tables.

7 REPLIES 7
Read only

manthanraja
Active Participant
Read only

StMou
Active Participant
0 Likes
1,623

Hi,

is it a smartforms or a sapscript ?

In call function (for smartforms). see on option close_form.

Rgds

Read only

Former Member
0 Likes
1,624

Use this function module RSPO_RETURN_ABAP_SPOOLJOB ....

As per requirement split it into multiple different internal tables.

Read only

0 Likes
1,623

Thanks for your reply.

Do i need to pass the spool no to this function module?

Thanks,

Gourisankar.

Read only

0 Likes
1,623

yes...

you need pass the spool no ..

Read only

0 Likes
1,623

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

Read only

dharmenda_kumar
Explorer
0 Likes
1,623

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.