Code: Alles auswählen.
* Prüfen ob es die übergebene Spoolnummer überhaupt gibt
SELECT SINGLE * FROM tsp01 INTO ls_tsp01 WHERE rqident = id_spoolid.
IF ( sy-subrc <> 0 ).
cf_error = 'X'.
EXIT.
ENDIF.
* TemSe-Objekte speichern sequentielle Daten. Ein TemSe-Objekt kann aus
* mehreren Teilen bestehen. Dieser FB ermittelt die wichtigsten Attribute
* eines TemSe-Objekts. Falls das Objekt aus mehreren Teilen besteht, werden
* die Attribute entsprechend zusammengefaßt.
CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
EXPORTING
client = ls_tsp01-rqclient
name = ls_tsp01-rqo1name
part = 1
IMPORTING
objtype = ld_objtype
EXCEPTIONS
fb_error = 1
fb_rsts_other = 2
no_object = 3
no_permission = 4
OTHERS = 5.
IF ( sy-subrc <> 0 ).
cf_error = 'X'.
EXIT.
ENDIF.
IF ld_objtype(3) = 'OTF'.
lf_is_otf = 'X'.
ELSE.
lf_is_otf = ' '.
ENDIF.
IF ( lf_is_otf = 'X' ).
* Konvertiere OTF-Spoolauftrag nach PDF
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = id_spoolid
no_dialog = 'X'
* pdf_destination = 'T'
IMPORTING
pdf_bytecount = ld_numbytes
pdf_spoolid = ld_pdfspoolid
btc_jobname = ld_jobname
btc_jobcount = ld_jobcount
TABLES
pdf = lt_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 <> 0 ).
cf_error = 'X'.
EXIT.
ENDIF.
ELSE.
* Konvertiere ABAP-Liste-Spoolauftrag nach PDF
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = id_spoolid
no_dialog = ' '
IMPORTING
pdf_bytecount = ld_numbytes
pdf_spoolid = ld_pdfspoolid
btc_jobname = ld_jobname
btc_jobcount = ld_jobcount
TABLES
pdf = lt_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.
IF ( sy-subrc <> 0 ).
cf_error = 'X'.
EXIT.
ENDIF.
ENDIF.
WHILE ( lf_file_ok = '' ).
* Die in der Tabelle lt_pdf enthaltenen Binärdaten werden nun in eine
* Datei geschrieben. Da alle übergebenen Tickets in die gleiche Datei
* geschrieben werden, kann der im Speicher gehaltente Protokolleintrag
* gelesen werden
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = ld_numbytes
filename = cd_filename
filetype = 'BIN'
* append = SPACE
* write_field_separator = SPACE
* header = '00'
* trunc_trailing_blanks = SPACE
* write_lf = 'X'
* col_select = SPACE
* col_select_mask = SPACE
* dat_mode = SPACE
confirm_overwrite = 'X'
* no_auth_check = SPACE
* codepage = SPACE
* ignore_cerr = ABAP_TRUE
* replacement = '#'
* write_bom = SPACE
* trunc_trailing_blanks_eol = 'X'
* wk1_n_format = SPACE
* wk1_n_size = SPACE
* wk1_t_format = SPACE
* wk1_t_size = SPACE
* IMPORTING
* filelength =
CHANGING
data_tab = lt_pdf
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24.
Code: Alles auswählen.
FIELD-SYMBOLS <ls_otf> TYPE itcoo.
DATA ld_text TYPE string.
DATA lt_text TYPE TABLE OF string.
LOOP AT ls_job_output_info-otfdata ASSIGNING <ls_otf>.
CONCATENATE <ls_otf>-tdprintcom <ls_otf>-tdprintpar INTO ld_text.
APPEND ld_text TO lt_text.
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = 'C:\TEST.PDF'
filetype = 'BIN'
confirm_overwrite = 'X'
CHANGING
data_tab = lt_text
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24.
IF ( sy-subrc = 0 ).
ENDIF.