*&---------------------------------------------------------------------*
*& Include ZSOFTCOPY_DOWNLOAD *
*& *
*&---------------------------------------------------------------------*
*& *
*& This file is part of ZSOFTCOPY. *
*& *
*& ZSOFTCOPY is free software: you can redistribute it and/or modify *
*& it under the terms of the GNU General Public License as published *
*& by the Free Software Foundation, either version 3 of the License, *
*& or any later version. *
*& *
*& ZSOFTCOPY is distributed in the hope that it will be useful, *
*& but WITHOUT ANY WARRANTY; without even the implied warranty of *
*& MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
*& GNU General Public License for more details. *
*& *
*& You should have received a copy of the GNU General Public License *
*& along with ZDOWNLOAD. If not, see . *
*& *
*&---------------------------------------------------------------------*
*& *
*& Author: Ruediger von Creytz ruediger.creytz@globalbit.net *
*& Copyright: globalBIT, LLC http://www.globalbit.net *
*& *
*&---------------------------------------------------------------------*
*-----------------------------------------------------------------------
* form: download
*-----------------------------------------------------------------------
FORM download
USING
it_html TYPE it_string
value(i_pgmid)
value(i_object)
value(i_filename)
value(i_extension)
value(i_do_count).
DATA:
l_infoline TYPE syucomm,
l_uri TYPE string,
l_sub_uri TYPE char255,
* l_dbl_delimiter type string,
* l_cnt_downloads type string,
* l_cnt_elems type string,
l_txt TYPE string,
l_message TYPE string,
l_codepage(20) TYPE c.
PERFORM download_get_params
USING
i_pgmid
i_object
i_filename
i_extension
i_do_count
CHANGING
l_uri
l_sub_uri
l_infoline.
PERFORM download_replace_wildcards
USING
l_sub_uri
CHANGING
it_html.
* if i_do_count = abap_true.
* g_cnt_downloads = g_cnt_downloads + 1.
* endif.
*
* l_cnt_downloads = g_cnt_downloads.
* condense l_cnt_downloads.
* l_cnt_elems = g_cnt_elems.
* condense l_cnt_elems.
* perform get_message_text using 'DSVAS' '226'
* i_filename space space space
* changing l_message.
* concatenate
* l_cnt_downloads '/' l_cnt_elems '|'
* l_message into l_infoline
* separated by space.
*
* concatenate g_folder g_c_delimiter g_pack g_c_delimiter into l_uri.
* if not i_pgmid is initial and not i_object is initial.
* concatenate l_uri i_pgmid '_' i_object g_c_delimiter into l_uri.
* endif.
* concatenate l_uri i_filename into l_uri.
* if not i_extension is initial.
* concatenate l_uri '.' i_extension into l_uri.
* endif.
* concatenate g_c_delimiter g_c_delimiter into l_dbl_delimiter.
* perform replace_all
* using '/' g_c_delimiter
* changing l_uri.
* perform replace_all
* using '<' '-'
* changing l_uri.
* perform replace_all
* using '>' '-'
* changing l_uri.
* while l_uri cs l_dbl_delimiter.
* perform replace_all
* using l_dbl_delimiter g_c_delimiter
* changing l_uri.
* endwhile.
IF NOT i_extension = gc_extension_htm
AND NOT i_extension = gc_extension_xml.
l_codepage = '4110'. "UTF-8
ENDIF.
IF g_has_download_status = abap_true.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_uri
codepage = l_codepage
show_transfer_status = abap_false
TABLES
data_tab = it_html
EXCEPTIONS
OTHERS = 1.
ELSE.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_uri
codepage = l_codepage
TABLES
data_tab = it_html
EXCEPTIONS
OTHERS = 1.
ENDIF.
IF sy-subrc <> 0.
CLEAR l_message.
l_txt = sy-subrc.
CONDENSE l_txt.
CONCATENATE 'RC=' l_txt ',' INTO l_txt.
PERFORM get_message_text USING 'MEREP_00' '245'
l_txt space space space
CHANGING l_message.
CONCATENATE l_message l_uri INTO l_message SEPARATED BY space.
WRITE / l_message.
ELSE.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = l_infoline.
ENDIF.
ENDFORM. "download
*-----------------------------------------------------------------------
* form: download_binary
*-----------------------------------------------------------------------
FORM download_binary
USING
it_content TYPE it_o2content_binary
value(i_bin_filesize) TYPE i
value(i_pgmid)
value(i_object)
value(i_filename)
value(i_extension)
value(i_do_count).
DATA:
l_infoline TYPE syucomm,
l_uri TYPE string,
l_sub_uri TYPE char255,
l_txt TYPE string,
l_message TYPE string.
PERFORM download_get_params
USING
i_pgmid
i_object
i_filename
i_extension
i_do_count
CHANGING
l_uri
l_sub_uri
l_infoline.
IF g_has_download_status = abap_true.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = i_bin_filesize
filename = l_uri
filetype = 'BIN'
show_transfer_status = abap_false
TABLES
data_tab = it_content
EXCEPTIONS
OTHERS = 2.
ELSE.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = i_bin_filesize
filename = l_uri
filetype = 'BIN'
TABLES
data_tab = it_content
EXCEPTIONS
OTHERS = 2.
ENDIF.
IF sy-subrc <> 0.
CLEAR l_message.
l_txt = sy-subrc.
CONDENSE l_txt.
CONCATENATE 'RC=' l_txt ',' INTO l_txt.
PERFORM get_message_text USING 'MEREP_00' '245'
l_txt space space space
CHANGING l_message.
CONCATENATE l_message l_uri INTO l_message SEPARATED BY space.
WRITE / l_message.
ELSE.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = l_infoline.
ENDIF.
ENDFORM. "download_binary
*-----------------------------------------------------------------------
* form: download_get_params
*-----------------------------------------------------------------------
FORM download_get_params
USING
value(i_pgmid)
value(i_object)
value(i_filename)
value(i_extension)
value(i_do_count)
CHANGING
c_uri TYPE string
c_sub_uri TYPE char255
c_infoline TYPE syucomm.
DATA:
l_cnt_downloads TYPE string,
l_cnt_elems TYPE string,
l_txt TYPE string,
l_message TYPE string,
l_codepage(20) TYPE c.
CLEAR:
c_uri,
c_sub_uri,
c_infoline.
IF i_do_count = abap_true.
g_cnt_downloads = g_cnt_downloads + 1.
ENDIF.
* new text for infoline
l_cnt_downloads = g_cnt_downloads.
CONDENSE l_cnt_downloads.
l_cnt_elems = g_cnt_elems.
CONDENSE l_cnt_elems.
PERFORM get_message_text USING 'DSVAS' '226'
i_filename space space space
CHANGING l_message.
CONCATENATE
l_cnt_downloads '/' l_cnt_elems '|'
l_message INTO c_infoline
SEPARATED BY space.
* uri from top folder to file
IF NOT i_pgmid IS INITIAL AND NOT i_object IS INITIAL.
CONCATENATE c_uri i_pgmid '_' i_object gc_delimiter INTO c_uri.
ENDIF.
CONCATENATE c_uri i_filename INTO c_uri.
IF NOT i_extension IS INITIAL.
CONCATENATE c_uri '.' i_extension INTO c_uri.
ENDIF.
PERFORM download_make_plain_uri CHANGING c_uri.
c_sub_uri = c_uri.
IF c_sub_uri+0(1) = gc_delimiter.
c_sub_uri = c_sub_uri+1.
ENDIF.
c_uri = c_sub_uri.
* full uri
CONCATENATE g_folder gc_delimiter g_pack gc_delimiter c_uri
INTO c_uri.
PERFORM download_make_plain_uri CHANGING c_uri.
ENDFORM. "download_get_params
*-----------------------------------------------------------------------
* form: download_make_plain_uri
*-----------------------------------------------------------------------
FORM download_make_plain_uri
CHANGING
c_uri TYPE string.
DATA:
l_dbl_delimiter TYPE string.
CONCATENATE gc_delimiter gc_delimiter INTO l_dbl_delimiter.
PERFORM replace_all
USING '/' gc_delimiter
CHANGING c_uri.
PERFORM replace_all
USING '<' '-'
CHANGING c_uri.
PERFORM replace_all
USING '>' '-'
CHANGING c_uri.
WHILE c_uri CS l_dbl_delimiter.
PERFORM replace_all
USING l_dbl_delimiter gc_delimiter
CHANGING c_uri.
ENDWHILE.
ENDFORM. "download_replace_wildcards
*-----------------------------------------------------------------------
* form: download_replace_wildcards
*-----------------------------------------------------------------------
FORM download_replace_wildcards
USING
value(i_sub_uri) TYPE char255
CHANGING
ct_html TYPE it_string.
DATA:
l_index_htm TYPE char255,
l_cnt TYPE i,
l_len TYPE i.
CONSTANTS:
lc_replacements TYPE i VALUE 2.
FIELD-SYMBOLS:
TYPE string.
l_len = strlen( i_sub_uri ).
* make replacement for ../index.htm
CONCATENATE 'index.' gc_extension_htm
INTO l_index_htm.
DO l_len TIMES.
IF i_sub_uri+l_cnt(1) = gc_delimiter.
CONCATENATE '../' l_index_htm INTO l_index_htm.
ENDIF.
ADD 1 TO l_cnt.
ENDDO.
* replace
CLEAR l_cnt.
LOOP AT ct_html ASSIGNING .
IF CS '../index.htm'.
PERFORM replace_all
USING
'##INDEX_HTM##'
l_index_htm
CHANGING
.
ADD 1 TO l_cnt.
ENDIF.
IF l_cnt = lc_replacements.
EXIT.
ENDIF.
ENDLOOP.
ENDFORM. "download_replace_wildcards