728x90
DATA : lv_len TYPE i.
DATA : lv_xstring TYPE xstring.
DATA:g_zipper TYPE REF TO cl_abap_zip.
CONCATENATE sy-datum 'Locate a pharmacy' INTO gv_name.
IF gt_disp[] IS NOT INITIAL.
"이진이라서 길이 2배 해야됨.
gv_len = gv_len * 2.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = gv_len
IMPORTING
buffer = lv_xstring
TABLES
binary_tab = binary_content[]
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
RAISE ex_bin_conv_error.
ENDIF.
"create our zipper object
CREATE OBJECT g_zipper.
"add 1st file to zip
CALL METHOD g_zipper->add
EXPORTING
name = gv_name
content = lv_xstring.
"save zip
CALL METHOD g_zipper->save
RECEIVING
zip = zip.
PERFORM download_zip_file TABLES binary_content
USING zip lv_len.
ELSE.
MESSAGE '데이터가 없습니다' TYPE 'S'.
ENDIF.
download_zip_file
DATA:lv_filename TYPE string,
lv_path TYPE string,
pv_dest_filepath TYPE string.
** Get the binary stream for ZIP file
** Convert the XSTRING to Binary table
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = zip
IMPORTING
output_length = lv_out
TABLES
binary_tab = lt_contents[].
lv_filename = p_dname.
cl_gui_frontend_services=>gui_download(
EXPORTING
bin_filesize = lv_out
filename = lv_filename
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
).
IF sy-subrc <> 0.
ENDIF.
728x90