Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata

Author: Kyung Woo, Nam
Submitted: 2007.03.22
Related Links:

Description

   I made this code snippet for users to provide function like this,  saving files from spooling list.  You can find your own spooling list only and then choose, save it.

Error rendering macro 'code': Invalid value specified for parameter 'lang'
*********************************************************************
* Program Name :  ZSDRPDF
* SAP Module   :  SD
* Description  :  PDF SAVE FROM SPOOLING LIST
* Input        :
* Output      :
* Initiator    :  Kyung Woo, Nam
* External Ref :
*********************************************************************
 Report  ZSDRPDF  no standard page heading
                           message-id zmsd
                           line-size 125
                           line-count 80.

tables: TSP01.
types: begin of ty_spool,
         RQIDENT like tsp01-RQIDENT, 
         RQOWNER like tsp01-RQOWNER, 
         RQTITLE like tsp01-RQTITLE, 
         chk.
types: end of ty_spool.

data: wa_spool type ty_spool.
data: itb_spool type ty_spool occurs 0.
data: flag type i.
data: ztxt(50).
data: l_path type RLGRAP-FILENAME.
*selection-screen begin of block blk with frame title text-001.
*parameter : zuser like tsp01-RQOWNER default sy-uname.
*selection-screen end of block blk.

 START-OF-SELECTION.
  PERFORM get_data.


 END-OF-SELECTION.
  PERFORM write_data.


 AT LINE-SELECTION. 

  CLEAR ztxt.
  CLEAR l_path.
  l_path = 'C:\zfile.pdf'.   CALL FUNCTION 'WS_FILENAME_GET'
       EXPORTING
            def_filename     = l_path
            def_path         = ''
            mask             = ',*.*,*.txt,*.txt.'
            mode             = 'S'
            title            = 'Choose file path to save'
       IMPORTING
            filename         = l_path
       EXCEPTIONS
            inv_winsys       = 1
            no_batch         = 2
            selection_cancel = 3
            selection_error  = 4
            OTHERS           = 5.  IF sy-subrc = 0.
  ENDIF.
  CALL FUNCTION 'Z_SD_PDF_CREATE'
       EXPORTING
            spoolno = wa_spool-rqident
            p_file  = l_path
       IMPORTING
            msgtxt  = ztxt.  IF sy-subrc <> 0 OR
     NOT ( ztxt IS INITIAL ).
  ELSE.
    MESSAGE i008(zmsd) WITH 'Fail'.
 ENDIF.
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
FORM get_data.  SELECT rqident rqowner rqtitle
          into corresponding fields of table itb_spool
          FROM  TSP01
*         WHERE rqowner  = zuser.
         where rqowner = sy-uname. 
  sort itb_spool by rqident descending.

ENDFORM.                    " get_data

*&---------------------------------------------------------------------*
*&      Form  write_data
*&---------------------------------------------------------------------*
FORM write_data.   clear flag.
  write sy-uline(125).
  write:/ '|'.
  write: (15) 'Spooling Number'.
  write: '|', (20) 'Job Owner', '|', (80) 'Job Title', '|'.
  write: sy-uline(125).
  loop at itb_spool into wa_spool.     flag = sy-tabix mod 2.
    case flag.
      when 1.
        format color col_normal on.
      when 0.
        format color off.
    endcase.    write:/ '|'.
    format hotspot on.
    write: (15) wa_spool-rqident.
    hide wa_spool-rqident.
    format hotspot off.
    write: '|', (20) wa_spool-rqowner, '|',
           (80) wa_spool-rqtitle, '|'.
    write: sy-uline(125).
  endloop.
ENDFORM.                    " write_data

--> Function module : Z_SD_PDF_CREATEFUNCTION z_sd_pdf_create.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(SPOOLNO) TYPE  TSP01-RQIDENT
*"     REFERENCE(P_FILE) TYPE  RLGRAP-FILENAME DEFAULT 'C:\file.pdf'
*"  EXPORTING
*"     REFERENCE(MSGTXT) TYPE  CHAR50
*"----------------------------------------------------------------------
*
* External Ref : RSTXPDFT4
*
  DATA download VALUE 'X'.
  DATA otf LIKE itcoo OCCURS 100 WITH HEADER LINE.
  DATA cancel.
  DATA pdf LIKE tline OCCURS 100 WITH HEADER LINE.
  DATA doctab LIKE docs OCCURS 1 WITH HEADER LINE.
  DATA: numbytes TYPE i,
        arc_idx LIKE toa_dara,
        pdfspoolid LIKE tsp01-rqident,
        jobname LIKE tbtcjob-jobname,
        jobcount LIKE tbtcjob-jobcount,
        is_otf.
  DATA: client LIKE tst01-dclient,
        name LIKE tst01-dname,
        objtype LIKE rststype-type,
        type LIKE rststype-type.
  TABLES: tsp01.  SELECT SINGLE * FROM tsp01
                 WHERE rqident = spoolno.  IF sy-subrc <> 0.
    MESSAGE e001(zmsd) WITH text-001.  " Fail
    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'.
    is_otf = 'X'.
  ELSE.
    is_otf = space.
  ENDIF.  IF is_otf = 'X'.
    CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
         EXPORTING
              src_spoolid              = spoolno
              no_dialog                = ' '
         IMPORTING
              pdf_bytecount            = numbytes
              pdf_spoolid              = pdfspoolid
              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.
    CASE sy-subrc.
      WHEN 0.
      WHEN OTHERS.
        MESSAGE e001(zmsd) WITH text-002.
        "CONVERT_OTFSPOOLJOB_2_PDF Fail
        EXIT.
    ENDCASE.
  ELSE.
    CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
         EXPORTING
              src_spoolid              = spoolno
              no_dialog                = ' '
         IMPORTING
              pdf_bytecount            = numbytes
              pdf_spoolid              = pdfspoolid
              btc_jobname              = jobname
              btc_jobcount             = jobcount
         TABLES
              pdf                      = 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.
    CASE sy-subrc.
      WHEN 0.
      WHEN OTHERS.
        MESSAGE e001(zmsd) WITH text-003.
        "CONVERT_ABAPSPOOLJOB_2_PDF Fail
        EXIT.
    ENDCASE.
  ENDIF.

*************** download PDF file ***********
  CHECK download = 'X'.
  IF NOT ( jobname IS INITIAL ).
    EXIT.
  ENDIF.

  CALL FUNCTION 'WS_DOWNLOAD'
       EXPORTING
            filename            = p_file
            filetype            = 'BIN'
            bin_filesize        = numbytes
       TABLES
            data_tab            = pdf
       EXCEPTIONS
            file_open_error     = 1
            file_write_error    = 2
            invalid_filesize    = 3
            invalid_table_width = 4
            invalid_type        = 5
            no_batch            = 6
            unknown_error       = 7
            OTHERS              = 8. 
  IF sy-subrc <> 0.
    msgtxt = text-004.     "Fail
  ENDIF.
ENDFUNCTION.