Application Development 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: 

Download internal table as ZIP file

SuhaSaha
Advisor
Advisor
0 Kudos

Hello Gurus,

I understand to ZIP / UNZIP files we use the class CL_ABAP_ZIP. I browsed through SDN forums & came across many posts relating how to unzip/zip files. Unfortunately for me all these involved uploading files & then zipping them.

Can we not directly create a ZIP file from an internal table & download it? If yes, please guide me with this requirement.

BR,

Suhas

3 REPLIES 3

SuhaSaha
Advisor
Advisor
0 Kudos

Hello Gurus,

I tried a small bit of code & the ZIP file is being downloaded. But i cannot open it. I was going through a post & found that SAP dowsnt support WINZIP.

Is this true? How can we view the contents of the file then ?

BR,

Suhas

Subhankar
Active Contributor
0 Kudos

Hi ...

Please the sample code...

REPORT ztest_subha_zip.

PARAMETERS : p_path TYPE string OBLIGATORY DEFAULT 'C:\'.

TYPES:

BEGIN OF x_splice_entry,

name TYPE string,

offset TYPE i,

length TYPE i,

compressed TYPE i,

END OF x_splice_entry ,

BEGIN OF x_mara,

matnr TYPE matnr,

END OF x_mara,

BEGIN OF x_t_data,

data TYPE REF TO data,

xmlfile TYPE string,

END OF x_t_data.

  • Internal table declaration

DATA: i_data TYPE STANDARD TABLE OF x_t_data,

i_mara TYPE STANDARD TABLE OF x_mara.

  • Work area declaration

DATA: wa_data TYPE x_t_data.

  • Variable declaration

DATA : stripped_name TYPE string,

file_path TYPE string,

retfiletable TYPE filetable,

retrc TYPE sysubrc,

retuseraction TYPE i.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.

CALL METHOD cl_gui_frontend_services=>file_save_dialog

EXPORTING

window_title = 'Downloaded ZIP File'

file_filter = '*.zip'

default_extension = 'zip'

CHANGING

filename = stripped_name

path = file_path

fullpath = p_path

EXCEPTIONS

cntl_error = 1

error_no_gui = 2

not_supported_by_gui = 3

OTHERS = 4.

START-OF-SELECTION.

*Download to XML File

PERFORM create_zip_and_xml_files.

  • Create zip file

PERFORM sub_create_zip_file.

&----


*& Form create_zip_and_xml_files

&----


FORM create_zip_and_xml_files .

DATA :

l_wa_mara TYPE x_mara,

lt_outtab TYPE REF TO data,

lt_tvkot_outtab TYPE REF TO data,

lwa_file TYPE x_t_data.

SELECT * FROM mara INTO CORRESPONDING FIELDS OF

TABLE i_mara UP TO 10 ROWS.

IF LINES( i_mara ) GT 0.

*Get the internal table into data area

GET REFERENCE OF i_mara INTO lt_outtab.

ENDIF.

*Add to data table

lwa_file-data = lt_outtab.

lwa_file-xmlfile = 'MARA.TXT'.

APPEND lwa_file TO i_data.

ENDFORM. " create_zip_and_xml_files

&----


*& Form SUB_CREATE_ZIP_FILE

&----


  • text

----


FORM sub_create_zip_file .

DATA :

data_line TYPE REF TO data,

ixml TYPE xstring,

xml TYPE string,

izip TYPE REF TO cl_abap_zip,

zip_file TYPE xstring,

binary_tab TYPE STANDARD TABLE OF x255,

lwa_data TYPE x_t_data,

lt_splice_entries TYPE TABLE OF x_splice_entry,

lwa_splice_entries TYPE x_splice_entry,

l_filename TYPE string,

input_length TYPE i,

lv_index TYPE sytabix,

lwa_file TYPE x_t_data.

FIELD-SYMBOLS :

<gt_data> TYPE table,

<wa> TYPE ANY.

CREATE OBJECT izip.

*Download to XML File(s)

LOOP AT i_data INTO lwa_data.

CLEAR : data_line,zip_file,binary_tab[],ixml,xml.

UNASSIGN : <gt_data>,<wa>.

ASSIGN lwa_data-data->* TO <gt_data>.

CREATE DATA data_line LIKE LINE OF <gt_data>.

ASSIGN data_line->* TO <wa>.

*Create the XML Transformation

CALL TRANSFORMATION id

SOURCE <wa> = <gt_data>

RESULT XML ixml.

izip->add( name = lwa_data-xmlfile

content = ixml ).

ENDLOOP.

*Create a new zip file

zip_file = izip->save( ).

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'

EXPORTING

buffer = zip_file

TABLES

binary_tab = binary_tab.

cl_gui_frontend_services=>gui_download(

EXPORTING

filename = p_path

filetype = 'BIN'

CHANGING

data_tab = binary_tab ). "i_tab2 ).

IF sy-subrc NE 0.

RAISE file_not_created.

ENDIF.

ENDFORM. " SUB_CREATE_ZIP_FILE

0 Kudos

Hello Subhankar,

The ZIP file is being created but the file has crap contentcontents. I am trying to view the ZIP using WINZIP.

BR,

Suhas