DATA: lr_abap_zip   TYPE REF TO cl_abap_zip.
DATA: lt_data_tab   TYPE TABLE OF x255,
      lv_bin_size   TYPE i,
      lv_bufferx    TYPE xstring,
      lv_buffer_zip TYPE xstring.
 
" Input File
PARAMETERS: p_ifile TYPE string  DEFAULT 'C:\temp\file.pdf'.
" Output File
PARAMETERS: p_ofile TYPE string  DEFAULT 'C:\temp\file.zip'.
 
 
START-OF-SELECTION.
 
  " Upload file
  CLEAR: lt_data_tab[],lv_bin_size.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename   = p_ifile
      filetype   = 'BIN'
    IMPORTING
      filelength = lv_bin_size
    TABLES
      data_tab   = lt_data_tab.
 
  " Convert Binary to XString
  CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
    EXPORTING
      input_length = lv_bin_size
    IMPORTING
      buffer       = lv_bufferx
    TABLES
      binary_tab   = lt_data_tab.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
 
  " Create an instance of cl_abap_zip
  CREATE OBJECT lr_abap_zip.
 
  " Add Binary File to
  CALL METHOD lr_abap_zip->add
    EXPORTING
      name    = p_ifile
      content = lv_bufferx.
 
  " Get ZIP File in Binary mode
  CALL METHOD lr_abap_zip->save
    RECEIVING
      zip = lv_buffer_zip.
 
  CLEAR: lt_data_tab[],lv_bin_size.
 
  " Convert XSTRING to String
  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer        = lv_buffer_zip
    IMPORTING
      output_length = lv_bin_size
    TABLES
      binary_tab    = lt_data_tab.
 
  " Download ZIP file on Presentation server
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      bin_filesize = lv_bin_size
      filename     = p_ofile
      filetype     = 'BIN'
    TABLES
      data_tab     = lt_data_tab.
 
Serkan AKKAVAK
Bilgisayar Mühendisi
serkurumsal@yandex.com