Sunday 2 August 2020

Convert/Copy OTF spool to create new PDF spool.

                             
Code:

REPORT zr_spool_pdf LINE-SIZE 80.
*
* Read spool job contents (OTF or ABAP list) and convert
* to PDF, download PDF
TABLEStsp01.
PARAMETERS:
  spoolno 
LIKE tsp01-rqident,
  p_dele  
AS CHECKBOX.

DATA otf LIKE itcoo OCCURS 100 WITH HEADER LINE.
DATA cancel.
DATA pdf LIKE tline OCCURS 100 WITH HEADER LINE.
DATAnumbytes   TYPE i,
      arc_idx    
LIKE toa_dara,
      pdfspoolid 
LIKE tsp01-rqident,
      jobname    
LIKE tbtcjob-jobname,
      jobcount   
LIKE tbtcjob-jobcount,
      is_otf
,
      txt
(80)    TYPE c.
DATAclient  LIKE tst01-dclient,
      name    
LIKE tst01-dname,
      objtype 
LIKE rststype-type,
      
type    LIKE rststype-type,
      spoolid 
TYPE rspoid,
      pages   
TYPE i,
      pdfstr  
TYPE string,
      pdfxstr 
TYPE xstring.
START-OF-SELECTION.
  
SELECT SINGLE FROM tsp01 WHERE rqident spoolno.
  
IF sy-subrc <> 0.
    
MESSAGE 'Spool not available' TYPE 'E' .
    
EXIT.
  
ENDIF.

  
client tsp01-rqclient.
  name   
tsp01-rqo1name.
  
CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
    
EXPORTING
      authority     
'SP01'
      
client        client
      name          
name
      part          
1
    
IMPORTING
      
type          type
      objtype       
objtype
    
EXCEPTIONS
      fb_error      
1
      fb_rsts_other 
2
      no_object     
3
      no_permission 
4.
  
IF objtype(3) = 'OTF' OR objtype+1(3) = 'OTF'.  "Script OTF

    
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
      
EXPORTING
        src_spoolid              
spoolno
        no_dialog                
' '
*       DST_DEVICE               =
*       PDF_DESTINATION          =
      
IMPORTING
        pdf_bytecount            
numbytes
        pdf_spoolid              
pdfspoolid
*       OTF_PAGECOUNT            =
        btc_jobname              
jobname
        btc_jobcount             
jobcount
      
TABLES
        pdf                      
pdf
      
EXCEPTIONS
        err_no_otf_spooljob      
1
        err_no_spooljob          
2
        err_no_permission        
3
        err_conv_not_possible    
4
        err_bad_dstdevice        
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.
    
IF sy-subrc NE .
      
MESSAGE 'Spool OTF to PDF Conversion errro' TYPE 'E' .
    
ENDIF.

  
ENDIF.

* ->Convert PDF output to XSTRING
  
FIELD-SYMBOLS:<p> TYPE x" <p> type any.
  
LOOP AT pdf .

    
ASSIGN pdf TO <p> CASTING TYPE x.

    
CONCATENATE pdfxstr <p> INTO pdfxstr IN BYTE MODE.
  
ENDLOOP.

  pages 
tsp01-rqapprule .

  
CALL FUNCTION 'ADS_CREATE_PDF_SPOOLJOB'
    
EXPORTING
*     printer           = 'ZMAIL'  "tsp03d-patype should be PDF use any one
      dest              
'ZMAI'   "tsp03d-patype should be PDF use any one
      pages             
pages
      pdf_data          
pdfxstr
    
IMPORTING
      spoolid           
spoolid
    
EXCEPTIONS
      no_data           
1
      not_pdf           
2
      wrong_devtype     
3
      operation_failed  
4
      cannot_write_file 
5
      device_missing    
6
      no_such_device    
7
      
OTHERS            8.

  
WRITE'Old spool : 'spoolno .
  
WRITE'NEW spool : 'spoolid .

  
IF p_dele 'X'.
    
CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
      
EXPORTING
        spoolid      
spoolno
        allow_commit 
'X'  .
  
ENDIF.

No comments:

Post a Comment