SE78 Grafik Dosyasını İndirme Programı
*&---------------------------------------------------------------------*
*& Report ZSE78_IMG_DOWN
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZSE78_IMG_DOWN.
.
***********************************************************************
* Variable declaration
***********************************************************************
DATA: v_graphic_size TYPE i,
v_graphic_xstr TYPE xstring,
v_graphic_conv TYPE i,
v_graphic_offs TYPE i,
v_file TYPE string.
**************************************
* Table declaration
***********************************************************************
DATA: BEGIN OF i_graphic_table OCCURS 0,
line(255) TYPE x,
END OF i_graphic_table.
***********************************************************************
* Structure declaration
***********************************************************************
DATA: st_stxbitmaps TYPE stxbitmaps.
***********************************************************************
* Selection screen
***********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_object LIKE st_stxbitmaps-tdobject DEFAULT `GRAPHICS`
MODIF ID abc ,
p_name LIKE st_stxbitmaps-tdname,
p_id LIKE st_stxbitmaps-tdid DEFAULT `BMAP`
MODIF ID abc ,
p_type LIKE st_stxbitmaps-tdbtype,
p_dir TYPE localfile.SELECTION-SCREEN END OF BLOCK b1.
***********************************************************************
* At Selection-screen output event
***********************************************************************
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = `ABC` .
screen-input = `0`.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
***********************************************************************
* At Selection-screen on value-request event
***********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dir.
DATA: l_folder TYPE string.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = `Select Folder`
initial_folder = `C:`
CHANGING
selected_folder = l_folder
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4. IF sy-subrc = 0. p_dir = l_folder. ENDIF.
***********************************************************************
* Start-of-selection event
***********************************************************************
START-OF-SELECTION. st_stxbitmaps-tdobject = p_object.
st_stxbitmaps-tdname = p_name.
st_stxbitmaps-tdid = p_id.
st_stxbitmaps-tdbtype = p_type.
* Get the bmp image from BDS in hex string format
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object = st_stxbitmaps-tdobject
p_name = st_stxbitmaps-tdname
p_id = st_stxbitmaps-tdid
p_btype = st_stxbitmaps-tdbtype
RECEIVING
p_bmp = v_graphic_xstr
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc = 0.
* Find the length of hex string
v_graphic_size = xstrlen( v_graphic_xstr ). CHECK v_graphic_size > 0. v_graphic_conv = v_graphic_size.
v_graphic_offs = 0.
* Populate internal table from this hex string
WHILE v_graphic_conv > 255.
i_graphic_table-line = v_graphic_xstr+v_graphic_offs(255).
APPEND i_graphic_table.
v_graphic_offs = v_graphic_offs + 255.
v_graphic_conv = v_graphic_conv - 255.
ENDWHILE. i_graphic_table-line = v_graphic_xstr+v_graphic_offs(v_graphic_conv).
APPEND i_graphic_table.
* Prepare file name and file path
CONCATENATE p_dir `` p_name `.BMP` INTO v_file.
* Download image
CALL FUNCTION `GUI_DOWNLOAD`
EXPORTING
bin_filesize = v_graphic_size
filename = v_file
filetype = `BIN`
TABLES
data_tab = i_graphic_table
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
OTHERS = 22.
IF sy-subrc = 0. WRITE: `File downloaded successfully`(002).
ELSE.
WRITE: `Error during file download`(003).
ENDIF.
ELSE.
CASE sy-subrc. WHEN 1.
WRITE: `Image not found`(004).
WHEN OTHERS.
WRITE: `Error in Image retrieval`(005).
ENDCASE.
ENDIF.