REPORT z_barry_zip_file.
DATA: IZIP TYPE REF TO CL_ABAP_ZIP,
CONT TYPE XSTRING ,
XZIP_FILE TYPE XSTRING,
BINARY_TAB TYPE STANDARD TABLE OF X255 ,
BIN_LEN TYPE I .
APPEND 'ABAP¿ª·¢' TO ITAB.
ENDDO.
EXPORTING
MIMETYPE = 'text/html;charset=gb2312'
IMPORTING
BUFFER = CONT
TABLES
TEXT_TAB = ITAB
EXCEPTIONS
FAILED = 1
OTHERS = 2.
EXPORTING
NAME = 'ITAB.TXT'
CONTENT = CONT.
RECEIVING
ZIP = XZIP_FILE.
EXPORTING
BUFFER = XZIP_FILE
IMPORTING
OUTPUT_LENGTH = BIN_LEN
TABLES
BINARY_TAB = BINARY_TAB.
EXPORTING
BIN_FILESIZE = BIN_LEN
FILENAME = 'C:\sf.zip'
FILETYPE = 'BIN'
TABLES
DATA_TAB = BINARY_TAB.
TYPES: BEGIN OF t_file,
name TYPE string,
date TYPE d,
time TYPE t,
size TYPE i,
END OF t_file .
TYPES: t_files TYPE TABLE OF t_file .
DATA: cl_zip TYPE REF TO cl_abap_zip,
xstr TYPE xstring,
binary_tab TYPE STANDARD TABLE OF x255 ,
bin_len TYPE i ,
ls_file TYPE t_file ,
it_files TYPE t_files .
DATA: itab TYPE STANDARD TABLE OF sdokcntasc .
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'C:\upload.zip'
filetype = 'BIN'
IMPORTING
filelength = bin_len
TABLES
data_tab = binary_tab.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = bin_len
IMPORTING
buffer = xstr
TABLES
binary_tab = binary_tab
EXCEPTIONS
failed = 1
OTHERS = 2.
CREATE OBJECT cl_zip.
CALL METHOD cl_zip->load
EXPORTING
zip = xstr.
LOOP AT cl_zip->files INTO ls_file .
WRITE: / ls_file-name,
ls_file-date,
ls_file-time,
ls_file-size .
CALL METHOD cl_zip->get
EXPORTING
name = ls_file-name
IMPORTING
content = xstr.
ENDLOOP.