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: 

cl_abap_gzip

Former Member
0 Kudos

Hi!

I would like to zip a document i retrieved from content management system into a folder, such as <b>template.zip</b>

I tried to use the class cl_abap_gzip=>compress_binary, and download to local drive. It was downloaded in the .zip file, but I was unable to open this .zip file.

Below is my code to zip and gui_download. Am i downloading to the right extension (.zip) or it should be coded in another way?

Kindly review and correct my mistake.


" retrieve document from content management system
CALL METHOD cl_crm_documents=>get_with_table
  EXPORTING
    loio                = ls_loios
    raw_mode            = 'X'
  IMPORTING
    file_access_info    = lt_file_info
    file_content_binary = lt_contents
    error               = ls_error.

READ TABLE lt_file_info INTO ls_file_info INDEX 1.
DATA: raw_in        TYPE xstring,
      gzip_out      TYPE xstring,
      input_length  TYPE i,
      raw_in_len    TYPE i,
      gzip_out_len  TYPE i,
      crc32(4)      TYPE x.

input_length = ls_file_info-file_size.

" convert to xstring
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
  EXPORTING
    input_length       = input_length
 IMPORTING
   buffer             = raw_in
  TABLES
    binary_tab         = lt_contents
 EXCEPTIONS
   failed             = 1
   OTHERS             = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

" get the length of xstring
raw_in_len = XSTRLEN( raw_in ).

" compress the file
TRY.
    CALL METHOD cl_abap_gzip=>compress_binary
      EXPORTING
        raw_in         = raw_in
        raw_in_len     = raw_in_len
        compress_level = 6
      IMPORTING
        gzip_out       = gzip_out
        gzip_out_len   = gzip_out_len.
  CATCH cx_parameter_invalid_range .
  CATCH cx_sy_buffer_overflow .
ENDTRY.

" convert the compressed xstring to binary
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  EXPORTING
    buffer        = gzip_out
  IMPORTING
    output_length = gzip_out_len
  TABLES
    binary_tab    = lt_contents.

" download to presentation server
CALL METHOD cl_gui_frontend_services=>gui_download
  EXPORTING
    bin_filesize            = gzip_out_len
    filename                = 'c:template.zip'
    filetype                = 'BIN'
  CHANGING
    data_tab                = lt_contents
  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.

Thanks & Regards,

Ginnie

1 ACCEPTED SOLUTION

Former Member
0 Kudos

I think gzip is used to compress files in gz... well at least in linux is like that.

Do you have a gzip program in your desktop? you could try to change the file name, i.e. c:\template.gz and try to uncompress with gzip...

3 REPLIES 3

Former Member
0 Kudos

I think gzip is used to compress files in gz... well at least in linux is like that.

Do you have a gzip program in your desktop? you could try to change the file name, i.e. c:\template.gz and try to uncompress with gzip...

0 Kudos

Hi Julio,

Thanks for your reply. Does it mean that this gzip only works in unix system, and not for windows system?

Is there any other classes that I can use to zip a file into extension .rar or .zip?

Kindly advise.

regards,

ginnie

0 Kudos

You can use this FM SXPG_CALL_SYSTEM and please main OS Command in SM69 to compress the file

Thanks

Seshu