*&---------------------------------------------------------------------*
*& Report Z_PAP_UP_ZIP_DL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_PAP_UP_ZIP_DL.
DATA: L_ZIPPER TYPE REF TO cl_abap_zip.
DATA: FILEX type XSTRING.
DATA: FILENAME type string.
DATA: PATH type string.
DATA: zip type xstring.
DATA: FILE_N_TAB type FILETABLE.
DATA: FULL_PATH type string.
DATA: FILE_LENGTH type i.
DATA: FILE_TAB type w3mimetabtype.
DATA: WA_INT type int4.
DATA: PATH_TABLE TYPE TABLE of char1024.
"-----------------------------------------------------------------------------
" Load the file
"-----------------------------------------------------------------------------
"Which file to upload
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
CHANGING
FILE_TABLE = FILE_N_TAB
RC = WA_INT
.
"load the (first) file from the frontend the user has selected.
LOOP at FILE_N_TAB into FULL_PATH.
"get the file
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = FULL_PATH
FILETYPE = 'BIN'
IMPORTING
FILELENGTH = FILE_LENGTH
CHANGING
DATA_TAB = file_tab.
exit.
endloop.
"create xstring from table
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
INPUT_LENGTH = FILE_LENGTH
IMPORTING
BUFFER = FILEX
TABLES
BINARY_TAB = file_tab
.
"get the name of the file. we take entry after the last '\' ...windows.
SPLIT FULL_PATH AT '\' INTO TABLE PATH_TABLE.
DESCRIBE TABLE PATH_TABLE LINES WA_INT.
READ TABLE PATH_TABLE INTO FILENAME INDEX WA_INT.
"-------------------------------------------------------------------------------
" ZIP the file
"-------------------------------------------------------------------------------
"create our zipper object
CREATE OBJECT L_ZIPPER.
"add file to zip
CALL METHOD L_ZIPPER->ADD
EXPORTING
NAME = filename
CONTENT = filex
.
"save zip
CALL METHOD L_ZIPPER->SAVE
RECEIVING
ZIP = zip
.
"-------------------------------------------------------------------------------
" Save the file
"-------------------------------------------------------------------------------
"convert to table
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = zip
IMPORTING
OUTPUT_LENGTH = file_length
TABLES
BINARY_TAB = file_tab
.
"File save dialog
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
CHANGING
FILENAME = filename
PATH = path
FULLPATH = full_path
.
"Save the file
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
BIN_FILESIZE = file_length
FILENAME = full_path
FILETYPE = 'BIN'
CHANGING
DATA_TAB = file_tab
.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment