ABAP Uploading PDF
parameters:
p_file type string lower case.
data:
gs_store_file type z1127582_upload,"z1127582_upload is a table to store PDF file and other relevant data
gt_content type standard table of tdline,
len type i,
xstr_content type xstring.
DATA:
w_filename TYPE string, " File name
w_length TYPE i,
lt_file_table TYPE filetable,
lv_filelength TYPE i,
lv_rc TYPE i,
lv_filename TYPE string,
w_pdf_data TYPE xstring,
lt_rawtab TYPE TABLE OF char255,
w_pdf_file TYPE string,
* Create PDF Object using destination 'ADS' (<-- this is how it is
* defined in SM59)
lo_pdfobj TYPE REF TO if_fp_pdf_object VALUE IS INITIAL,
xslt_message TYPE string,
exc TYPE REF TO cx_root,
fs_per_info TYPE ZWD_PER_INFO.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM f4_help_for_file.
start-of-selection.
"Upload the file to Internal Table
call function 'GUI_UPLOAD'
exporting
filename = p_file
filetype = 'BIN'
importing
filelength = len
tables
data_tab = gt_content
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
others = 17.
if sy-subrc <> 0.
message 'Unable to upload file' type 'E'.
endif.
"Convert binary ITAB to xstring
call function 'SCMS_BINARY_TO_XSTRING'
exporting
input_length = len
* FIRST_LINE = 0
* LAST_LINE = 0
importing
buffer = xstr_content
tables
binary_tab = gt_content
exceptions
failed = 1
others = 2
.
if sy-subrc <> 0.
message 'Unable to convert binary to xstring' type 'E'.
endif.
clear gs_store_file.
gs_store_file-filename = p_file.
gs_store_file-file_content = xstr_content.
"Insert file into table
insert z1127582_upload from gs_store_file.
if sy-subrc is initial.
message 'Successfully uploaded' type 'S'.
else.
message 'Failed to upload' type 'E'.
endif.
INCLUDE z1127582_test2_f4_help_for_f01.
FORM f4_help_for_file .
CALL METHOD cl_gui_frontend_services=>file_open_dialog
CHANGING
file_table = lt_file_table
rc = lv_rc
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* READ TABLE lt_file_table
* INTO lv_filename
* INDEX 1.
READ TABLE lt_file_table
INTO p_file
INDEX 1.
IF sy-subrc EQ 0.
lv_filename = p_file.
ENDIF.
cl_gui_frontend_services=>gui_upload(
EXPORTING
filename = lv_filename
filetype = 'BIN' "Binary
IMPORTING
filelength = lv_filelength
CHANGING
data_tab = lt_rawtab
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
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19 ).