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

PDF Print

Former Member
0 Likes
1,452

I am using following code to load the PDF file.

CALL FUNCTION 'GET_PRINT_PARAMETERS'

IMPORTING

OUT_PARAMETERS = PRINT_PARAMETERS

VALID = VALID_FLAG

EXCEPTIONS

INVALID_PRINT_PARAMS = 2

OTHERS = 4.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = G_PATH

FILETYPE = 'BIN'

TABLES

DATA_TAB = IT_LINES

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16.

NEW-PAGE PRINT ON PARAMETERS PRINT_PARAMETERS NO DIALOG.

LOOP AT IT_LINES INTO WA_LINES.

WRITE WA_LINES.

ENDLOOP.

NEW-PAGE PRINT OFF.

I need to print the uploaded PDF .Can sometell me how to do that.

The code is printing the unformatted PDF data.

I want to convert it to understandable format and Print it.

1 ACCEPTED SOLUTION
Read only

venkat_o
Active Contributor
0 Likes
1,105

Hi Shashi Devi, Have a look at the sample code which sends the output to the spool and based on spool no, convert the spool to PDF and download the pdf to desktop.


REPORT  zvenkat_download_as_pdf.
*--------------------------------------------------------*
"  Data retrieval related declarations
*--------------------------------------------------------*
"Variables
DATA:
      g_spool_no TYPE tsp01-rqident.
"Types
TYPES:
     BEGIN OF t_emp_dat,
       pernr     TYPE pa0001-pernr,
       persg     TYPE pa0001-persg,
       persk     TYPE pa0001-persk,
       plans     TYPE pa0001-plans,
       stell     TYPE pa0001-stell,
     END OF t_emp_dat,
     t_pdf       TYPE  tline.

"Work area
DATA:
     w_emp_data  TYPE t_emp_dat,
     w_pdf       TYPE  t_pdf.
"Internal tables
DATA:
     i_emp_data  TYPE STANDARD TABLE OF t_emp_dat,
     i_pdf       TYPE STANDARD TABLE OF t_pdf.

*--------------------------------------------------------*
"Top-of-page.
*--------------------------------------------------------*
TOP-OF-PAGE.
  PERFORM top_of_page.

*--------------------------------------------------------*
  "Start-of-selection.
*--------------------------------------------------------*
START-OF-SELECTION.


  PERFORM get_data.
  IF i_emp_data[] IS INITIAL.
    PERFORM test_data.
  ENDIF.
  PERFORM do_print_n_get_spoolno.

*--------------------------------------------------------*
  "End-of-selection.
*--------------------------------------------------------*
END-OF-SELECTION.
  "Convert ABAP Spool job to PDF
  PERFORM convert_spool_2_pdf TABLES i_pdf.
  "Download PDF using GUI_DOWNLOAD
  PERFORM download_pdf.

*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
FORM top_of_page.
  DATA: inc_colnum TYPE i.
  ULINE.
  inc_colnum = sy-linsz - 60.
  WRITE: / 'Report: ', sy-repid(18).
  WRITE AT 30(inc_colnum) sy-title CENTERED.
  inc_colnum = sy-linsz - 20.
  WRITE: AT inc_colnum 'Page: ', (11) sy-pagno RIGHT-JUSTIFIED.
  WRITE: / 'Client: ', sy-mandt.
  inc_colnum = sy-linsz - 20.
  WRITE: AT inc_colnum 'Date: ', sy-datum.
  WRITE: / 'User  : ', sy-uname.
  inc_colnum = sy-linsz - 60.
  WRITE AT 30(inc_colnum) 'Company Confidential' CENTERED.
  inc_colnum = sy-linsz - 20.
  WRITE: AT inc_colnum 'Time: ', (10) sy-uzeit RIGHT-JUSTIFIED.
  ULINE .
  SKIP.
  ULINE AT /(127).
  WRITE:/ sy-vline,'pernr' COLOR COL_HEADING,13
          sy-vline,'persg' COLOR COL_HEADING,20
          sy-vline,'persk' COLOR COL_HEADING,26
          sy-vline,'plans' COLOR COL_HEADING,35
          sy-vline,'stell' COLOR COL_HEADING,46
          sy-vline.
  ULINE AT /(46).
ENDFORM.                    "top_of_page
*&--------------------------------------------------------*
"Form  get_data from PA0001
*&--------------------------------------------------------*
FORM get_data.

  SELECT pernr
         persg
         persk
         plans
         stell
   FROM pa0001
   INTO CORRESPONDING FIELDS OF TABLE i_emp_data
   UP TO 4 ROWS.

ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
"Form  do_print_n_get_spoolno
*&---------------------------------------------------------------------*
FORM do_print_n_get_spoolno.

  "Display Output
  LOOP AT i_emp_data INTO w_emp_data .
    AT FIRST.
      PERFORM get_print_parameters.
    ENDAT.
    WRITE:/ sy-vline,w_emp_data-pernr,13
            sy-vline,w_emp_data-persg,20
            sy-vline,w_emp_data-persk,26
            sy-vline,w_emp_data-plans,35
            sy-vline,w_emp_data-stell,46
            sy-vline.
    ULINE AT /(46).
    AT LAST.
      g_spool_no  = sy-spono.
      NEW-PAGE PRINT OFF.
      CALL FUNCTION 'ABAP4_COMMIT_WORK'.
    ENDAT.
  ENDLOOP.

ENDFORM.                    "do_print_n_get_spoolno
*&---------------------------------------------------------------------*
*&      Form  get_print_parameters
*&---------------------------------------------------------------------*
FORM get_print_parameters .
  "Variables
  DATA:
     l_lay    TYPE pri_params-paart,
     l_lines  TYPE pri_params-linct,
     l_cols   TYPE pri_params-linsz,
     l_val    TYPE c.
*Types
  TYPES:
     t_pripar TYPE pri_params,
     t_arcpar TYPE arc_params.
  "Work areas
  DATA:
     lw_pripar TYPE t_pripar,
     lw_arcpar TYPE t_arcpar.

  l_lay   = 'X_65_132'.
  l_lines = 65.
  l_cols  = 132.
  "Read, determine, change spool print parameters and archive parameters
  CALL FUNCTION 'GET_PRINT_PARAMETERS'
    EXPORTING
      in_archive_parameters  = lw_arcpar
      in_parameters          = lw_pripar
      layout                 = l_lay
      line_count             = l_lines
      line_size              = l_cols
      no_dialog              = 'X'
    IMPORTING
      out_archive_parameters = lw_arcpar
      out_parameters         = lw_pripar
      valid                  = l_val
    EXCEPTIONS
      archive_info_not_found = 1
      invalid_print_params   = 2
      invalid_archive_params = 3
      OTHERS                 = 4.
  IF l_val <> space AND sy-subrc = 0.
    lw_pripar-prrel = space.
    lw_pripar-primm = space.
    NEW-PAGE PRINT ON
      NEW-SECTION
      PARAMETERS lw_pripar
      ARCHIVE PARAMETERS lw_arcpar
      NO DIALOG.
  ENDIF.
ENDFORM.                    " get_print_parameters
*&---------------------------------------------------------------------*
*&      Form  convert_spool_2_pdf
*&---------------------------------------------------------------------*
FORM convert_spool_2_pdf TABLES i_pdf .
  "Variables
  DATA:
      l_no_of_bytes TYPE i,
      l_pdf_spoolid LIKE tsp01-rqident,
      l_jobname     LIKE tbtcjob-jobname,
      l_jobcount    LIKE tbtcjob-jobcount.

  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
    EXPORTING
      src_spoolid              = g_spool_no
      no_dialog                = ' '
    IMPORTING
      pdf_bytecount            = l_no_of_bytes
      pdf_spoolid              = l_pdf_spoolid
      btc_jobname              = l_jobname
      btc_jobcount             = l_jobcount
    TABLES
      pdf                      = i_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
      OTHERS                   = 12.

  CASE sy-subrc.
    WHEN 0.
    WHEN 1.
      MESSAGE s000(0k) WITH 'No ABAP Spool Job'.
      EXIT.
    WHEN 2.
      MESSAGE s000(0k) WITH 'Spool Number does not exist'.
      EXIT.
    WHEN 3.
      MESSAGE s000(0k) WITH 'No permission for spool'.
      EXIT.
    WHEN OTHERS.
      MESSAGE s000(0k)
         WITH 'Error in Function CONVERT_ABAPSPOOLJOB_2_PDF'.
      EXIT.
  ENDCASE.


ENDFORM.                    " convert_spool_2_pdf
*&---------------------------------------------------------------------*
*&      Form  test_data
*&---------------------------------------------------------------------*
FORM test_data .
  DO 10 TIMES.
    w_emp_data-pernr = sy-index.
    w_emp_data-persg = '2'.
    w_emp_data-persk = '93'.
    w_emp_data-plans = '99999999'.
    w_emp_data-stell = '31414144'.
    APPEND w_emp_data TO i_emp_data.
    CLEAR  w_emp_data.
  ENDDO.

ENDFORM.                    " test_data
*&---------------------------------------------------------------------*
*&      Form  download_pdf
*&---------------------------------------------------------------------*
FORM download_pdf .

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename = 'C:\Test123.PDF'
      filetype = 'BIN'
    TABLES
      data_tab = i_pdf.
  IF  sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " download_pdf
Regards, Venkat.O

Hi Shashi Devi, Have a look at the sample code which sends the output to the spool and based on spool no, convert the spool to PDF and download the pdf to desktop.


REPORT  zvenkat_download_as_pdf.
*--------------------------------------------------------*
"  Data retrieval related declarations
*--------------------------------------------------------*
"Variables
DATA:
      g_spool_no TYPE tsp01-rqident.
"Types
TYPES:
     BEGIN OF t_emp_dat,
       pernr     TYPE pa0001-pernr,
       persg     TYPE pa0001-persg,
       persk     TYPE pa0001-persk,
       plans     TYPE pa0001-plans,
       stell     TYPE pa0001-stell,
     END OF t_emp_dat,
     t_pdf       TYPE  tline.

"Work area
DATA:
     w_emp_data  TYPE t_emp_dat,
     w_pdf       TYPE  t_pdf.
"Internal tables
DATA:
     i_emp_data  TYPE STANDARD TABLE OF t_emp_dat,
     i_pdf       TYPE STANDARD TABLE OF t_pdf.

*--------------------------------------------------------*
"Top-of-page.
*--------------------------------------------------------*
TOP-OF-PAGE.
  PERFORM top_of_page.

*--------------------------------------------------------*
  "Start-of-selection.
*--------------------------------------------------------*
START-OF-SELECTION.


  PERFORM get_data.
  IF i_emp_data[] IS INITIAL.
    PERFORM test_data.
  ENDIF.
  PERFORM do_print_n_get_spoolno.

*--------------------------------------------------------*
  "End-of-selection.
*--------------------------------------------------------*
END-OF-SELECTION.
  "Convert ABAP Spool job to PDF
  PERFORM convert_spool_2_pdf TABLES i_pdf.
  "Download PDF using GUI_DOWNLOAD
  PERFORM download_pdf.

*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
FORM top_of_page.
  DATA: inc_colnum TYPE i.
  ULINE.
  inc_colnum = sy-linsz - 60.
  WRITE: / 'Report: ', sy-repid(18).
  WRITE AT 30(inc_colnum) sy-title CENTERED.
  inc_colnum = sy-linsz - 20.
  WRITE: AT inc_colnum 'Page: ', (11) sy-pagno RIGHT-JUSTIFIED.
  WRITE: / 'Client: ', sy-mandt.
  inc_colnum = sy-linsz - 20.
  WRITE: AT inc_colnum 'Date: ', sy-datum.
  WRITE: / 'User  : ', sy-uname.
  inc_colnum = sy-linsz - 60.
  WRITE AT 30(inc_colnum) 'Company Confidential' CENTERED.
  inc_colnum = sy-linsz - 20.
  WRITE: AT inc_colnum 'Time: ', (10) sy-uzeit RIGHT-JUSTIFIED.
  ULINE .
  SKIP.
  ULINE AT /(127).
  WRITE:/ sy-vline,'pernr' COLOR COL_HEADING,13
          sy-vline,'persg' COLOR COL_HEADING,20
          sy-vline,'persk' COLOR COL_HEADING,26
          sy-vline,'plans' COLOR COL_HEADING,35
          sy-vline,'stell' COLOR COL_HEADING,46
          sy-vline.
  ULINE AT /(46).
ENDFORM.                    "top_of_page
*&--------------------------------------------------------*
"Form  get_data from PA0001
*&--------------------------------------------------------*
FORM get_data.

  SELECT pernr
         persg
         persk
         plans
         stell
   FROM pa0001
   INTO CORRESPONDING FIELDS OF TABLE i_emp_data
   UP TO 4 ROWS.

ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
"Form  do_print_n_get_spoolno
*&---------------------------------------------------------------------*
FORM do_print_n_get_spoolno.

  "Display Output
  LOOP AT i_emp_data INTO w_emp_data .
    AT FIRST.
      PERFORM get_print_parameters.
    ENDAT.
    WRITE:/ sy-vline,w_emp_data-pernr,13
            sy-vline,w_emp_data-persg,20
            sy-vline,w_emp_data-persk,26
            sy-vline,w_emp_data-plans,35
            sy-vline,w_emp_data-stell,46
            sy-vline.
    ULINE AT /(46).
    AT LAST.
      g_spool_no  = sy-spono.
      NEW-PAGE PRINT OFF.
      CALL FUNCTION 'ABAP4_COMMIT_WORK'.
    ENDAT.
  ENDLOOP.

ENDFORM.                    "do_print_n_get_spoolno
*&---------------------------------------------------------------------*
*&      Form  get_print_parameters
*&---------------------------------------------------------------------*
FORM get_print_parameters .
  "Variables
  DATA:
     l_lay    TYPE pri_params-paart,
     l_lines  TYPE pri_params-linct,
     l_cols   TYPE pri_params-linsz,
     l_val    TYPE c.
*Types
  TYPES:
     t_pripar TYPE pri_params,
     t_arcpar TYPE arc_params.
  "Work areas
  DATA:
     lw_pripar TYPE t_pripar,
     lw_arcpar TYPE t_arcpar.

  l_lay   = 'X_65_132'.
  l_lines = 65.
  l_cols  = 132.
  "Read, determine, change spool print parameters and archive parameters
  CALL FUNCTION 'GET_PRINT_PARAMETERS'
    EXPORTING
      in_archive_parameters  = lw_arcpar
      in_parameters          = lw_pripar
      layout                 = l_lay
      line_count             = l_lines
      line_size              = l_cols
      no_dialog              = 'X'
    IMPORTING
      out_archive_parameters = lw_arcpar
      out_parameters         = lw_pripar
      valid                  = l_val
    EXCEPTIONS
      archive_info_not_found = 1
      invalid_print_params   = 2
      invalid_archive_params = 3
      OTHERS                 = 4.
  IF l_val <> space AND sy-subrc = 0.
    lw_pripar-prrel = space.
    lw_pripar-primm = space.
    NEW-PAGE PRINT ON
      NEW-SECTION
      PARAMETERS lw_pripar
      ARCHIVE PARAMETERS lw_arcpar
      NO DIALOG.
  ENDIF.
ENDFORM.                    " get_print_parameters
*&---------------------------------------------------------------------*
*&      Form  convert_spool_2_pdf
*&---------------------------------------------------------------------*
FORM convert_spool_2_pdf TABLES i_pdf .
  "Variables
  DATA:
      l_no_of_bytes TYPE i,
      l_pdf_spoolid LIKE tsp01-rqident,
      l_jobname     LIKE tbtcjob-jobname,
      l_jobcount    LIKE tbtcjob-jobcount.

  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
    EXPORTING
      src_spoolid              = g_spool_no
      no_dialog                = ' '
    IMPORTING
      pdf_bytecount            = l_no_of_bytes
      pdf_spoolid              = l_pdf_spoolid
      btc_jobname              = l_jobname
      btc_jobcount             = l_jobcount
    TABLES
      pdf                      = i_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
      OTHERS                   = 12.

  CASE sy-subrc.
    WHEN 0.
    WHEN 1.
      MESSAGE s000(0k) WITH 'No ABAP Spool Job'.
      EXIT.
    WHEN 2.
      MESSAGE s000(0k) WITH 'Spool Number does not exist'.
      EXIT.
    WHEN 3.
      MESSAGE s000(0k) WITH 'No permission for spool'.
      EXIT.
    WHEN OTHERS.
      MESSAGE s000(0k)
         WITH 'Error in Function CONVERT_ABAPSPOOLJOB_2_PDF'.
      EXIT.
  ENDCASE.


ENDFORM.                    " convert_spool_2_pdf
*&---------------------------------------------------------------------*
*&      Form  test_data
*&---------------------------------------------------------------------*
FORM test_data .
  DO 10 TIMES.
    w_emp_data-pernr = sy-index.
    w_emp_data-persg = '2'.
    w_emp_data-persk = '93'.
    w_emp_data-plans = '99999999'.
    w_emp_data-stell = '31414144'.
    APPEND w_emp_data TO i_emp_data.
    CLEAR  w_emp_data.
  ENDDO.

ENDFORM.                    " test_data
*&---------------------------------------------------------------------*
*&      Form  download_pdf
*&---------------------------------------------------------------------*
FORM download_pdf .

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename = 'C:\Test123.PDF'
      filetype = 'BIN'
    TABLES
      data_tab = i_pdf.
  IF  sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " download_pdf
Regards, Venkat.O

5 REPLIES 5
Read only

Former Member
0 Likes
1,105

Write the it_lines to spool.

Using the spool content, convert them to PDF format data.

Now use your code to print in PDF format.

NEW-PAGE PRINT ON PARAMETERS PRINT_PARAMETERS NO DIALOG.

loop at pdf_data(internal table).

....

endloop.

NEW-PAGE PRINT OFF.

Read only

0 Likes
1,105

How do we convert Srinivas?

I dont know how to do that....could you help me with that please?

Read only

0 Likes
1,105

CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'

EXPORTING

rqident = <spool_no>

  • FIRST_LINE = 1

  • LAST_LINE =

  • DESIRED_TYPE =

IMPORTING

REAL_TYPE =

SP_LANG =

tables

buffer = <table>

  • BUFFER_PDF =

  • 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.

Use the <table> data for printing....

Hope this would be useful.

Read only

0 Likes
1,105

Can I get some sample code please?

If you have something with you.....

Read only

venkat_o
Active Contributor
0 Likes
1,106

Hi Shashi Devi, Have a look at the sample code which sends the output to the spool and based on spool no, convert the spool to PDF and download the pdf to desktop.


REPORT  zvenkat_download_as_pdf.
*--------------------------------------------------------*
"  Data retrieval related declarations
*--------------------------------------------------------*
"Variables
DATA:
      g_spool_no TYPE tsp01-rqident.
"Types
TYPES:
     BEGIN OF t_emp_dat,
       pernr     TYPE pa0001-pernr,
       persg     TYPE pa0001-persg,
       persk     TYPE pa0001-persk,
       plans     TYPE pa0001-plans,
       stell     TYPE pa0001-stell,
     END OF t_emp_dat,
     t_pdf       TYPE  tline.

"Work area
DATA:
     w_emp_data  TYPE t_emp_dat,
     w_pdf       TYPE  t_pdf.
"Internal tables
DATA:
     i_emp_data  TYPE STANDARD TABLE OF t_emp_dat,
     i_pdf       TYPE STANDARD TABLE OF t_pdf.

*--------------------------------------------------------*
"Top-of-page.
*--------------------------------------------------------*
TOP-OF-PAGE.
  PERFORM top_of_page.

*--------------------------------------------------------*
  "Start-of-selection.
*--------------------------------------------------------*
START-OF-SELECTION.


  PERFORM get_data.
  IF i_emp_data[] IS INITIAL.
    PERFORM test_data.
  ENDIF.
  PERFORM do_print_n_get_spoolno.

*--------------------------------------------------------*
  "End-of-selection.
*--------------------------------------------------------*
END-OF-SELECTION.
  "Convert ABAP Spool job to PDF
  PERFORM convert_spool_2_pdf TABLES i_pdf.
  "Download PDF using GUI_DOWNLOAD
  PERFORM download_pdf.

*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
FORM top_of_page.
  DATA: inc_colnum TYPE i.
  ULINE.
  inc_colnum = sy-linsz - 60.
  WRITE: / 'Report: ', sy-repid(18).
  WRITE AT 30(inc_colnum) sy-title CENTERED.
  inc_colnum = sy-linsz - 20.
  WRITE: AT inc_colnum 'Page: ', (11) sy-pagno RIGHT-JUSTIFIED.
  WRITE: / 'Client: ', sy-mandt.
  inc_colnum = sy-linsz - 20.
  WRITE: AT inc_colnum 'Date: ', sy-datum.
  WRITE: / 'User  : ', sy-uname.
  inc_colnum = sy-linsz - 60.
  WRITE AT 30(inc_colnum) 'Company Confidential' CENTERED.
  inc_colnum = sy-linsz - 20.
  WRITE: AT inc_colnum 'Time: ', (10) sy-uzeit RIGHT-JUSTIFIED.
  ULINE .
  SKIP.
  ULINE AT /(127).
  WRITE:/ sy-vline,'pernr' COLOR COL_HEADING,13
          sy-vline,'persg' COLOR COL_HEADING,20
          sy-vline,'persk' COLOR COL_HEADING,26
          sy-vline,'plans' COLOR COL_HEADING,35
          sy-vline,'stell' COLOR COL_HEADING,46
          sy-vline.
  ULINE AT /(46).
ENDFORM.                    "top_of_page
*&--------------------------------------------------------*
"Form  get_data from PA0001
*&--------------------------------------------------------*
FORM get_data.

  SELECT pernr
         persg
         persk
         plans
         stell
   FROM pa0001
   INTO CORRESPONDING FIELDS OF TABLE i_emp_data
   UP TO 4 ROWS.

ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
"Form  do_print_n_get_spoolno
*&---------------------------------------------------------------------*
FORM do_print_n_get_spoolno.

  "Display Output
  LOOP AT i_emp_data INTO w_emp_data .
    AT FIRST.
      PERFORM get_print_parameters.
    ENDAT.
    WRITE:/ sy-vline,w_emp_data-pernr,13
            sy-vline,w_emp_data-persg,20
            sy-vline,w_emp_data-persk,26
            sy-vline,w_emp_data-plans,35
            sy-vline,w_emp_data-stell,46
            sy-vline.
    ULINE AT /(46).
    AT LAST.
      g_spool_no  = sy-spono.
      NEW-PAGE PRINT OFF.
      CALL FUNCTION 'ABAP4_COMMIT_WORK'.
    ENDAT.
  ENDLOOP.

ENDFORM.                    "do_print_n_get_spoolno
*&---------------------------------------------------------------------*
*&      Form  get_print_parameters
*&---------------------------------------------------------------------*
FORM get_print_parameters .
  "Variables
  DATA:
     l_lay    TYPE pri_params-paart,
     l_lines  TYPE pri_params-linct,
     l_cols   TYPE pri_params-linsz,
     l_val    TYPE c.
*Types
  TYPES:
     t_pripar TYPE pri_params,
     t_arcpar TYPE arc_params.
  "Work areas
  DATA:
     lw_pripar TYPE t_pripar,
     lw_arcpar TYPE t_arcpar.

  l_lay   = 'X_65_132'.
  l_lines = 65.
  l_cols  = 132.
  "Read, determine, change spool print parameters and archive parameters
  CALL FUNCTION 'GET_PRINT_PARAMETERS'
    EXPORTING
      in_archive_parameters  = lw_arcpar
      in_parameters          = lw_pripar
      layout                 = l_lay
      line_count             = l_lines
      line_size              = l_cols
      no_dialog              = 'X'
    IMPORTING
      out_archive_parameters = lw_arcpar
      out_parameters         = lw_pripar
      valid                  = l_val
    EXCEPTIONS
      archive_info_not_found = 1
      invalid_print_params   = 2
      invalid_archive_params = 3
      OTHERS                 = 4.
  IF l_val <> space AND sy-subrc = 0.
    lw_pripar-prrel = space.
    lw_pripar-primm = space.
    NEW-PAGE PRINT ON
      NEW-SECTION
      PARAMETERS lw_pripar
      ARCHIVE PARAMETERS lw_arcpar
      NO DIALOG.
  ENDIF.
ENDFORM.                    " get_print_parameters
*&---------------------------------------------------------------------*
*&      Form  convert_spool_2_pdf
*&---------------------------------------------------------------------*
FORM convert_spool_2_pdf TABLES i_pdf .
  "Variables
  DATA:
      l_no_of_bytes TYPE i,
      l_pdf_spoolid LIKE tsp01-rqident,
      l_jobname     LIKE tbtcjob-jobname,
      l_jobcount    LIKE tbtcjob-jobcount.

  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
    EXPORTING
      src_spoolid              = g_spool_no
      no_dialog                = ' '
    IMPORTING
      pdf_bytecount            = l_no_of_bytes
      pdf_spoolid              = l_pdf_spoolid
      btc_jobname              = l_jobname
      btc_jobcount             = l_jobcount
    TABLES
      pdf                      = i_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
      OTHERS                   = 12.

  CASE sy-subrc.
    WHEN 0.
    WHEN 1.
      MESSAGE s000(0k) WITH 'No ABAP Spool Job'.
      EXIT.
    WHEN 2.
      MESSAGE s000(0k) WITH 'Spool Number does not exist'.
      EXIT.
    WHEN 3.
      MESSAGE s000(0k) WITH 'No permission for spool'.
      EXIT.
    WHEN OTHERS.
      MESSAGE s000(0k)
         WITH 'Error in Function CONVERT_ABAPSPOOLJOB_2_PDF'.
      EXIT.
  ENDCASE.


ENDFORM.                    " convert_spool_2_pdf
*&---------------------------------------------------------------------*
*&      Form  test_data
*&---------------------------------------------------------------------*
FORM test_data .
  DO 10 TIMES.
    w_emp_data-pernr = sy-index.
    w_emp_data-persg = '2'.
    w_emp_data-persk = '93'.
    w_emp_data-plans = '99999999'.
    w_emp_data-stell = '31414144'.
    APPEND w_emp_data TO i_emp_data.
    CLEAR  w_emp_data.
  ENDDO.

ENDFORM.                    " test_data
*&---------------------------------------------------------------------*
*&      Form  download_pdf
*&---------------------------------------------------------------------*
FORM download_pdf .

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename = 'C:\Test123.PDF'
      filetype = 'BIN'
    TABLES
      data_tab = i_pdf.
  IF  sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " download_pdf
Regards, Venkat.O