SE78 Grafik Dosyasını İndirme Programı

BMAP dosyalarının indirilmesi

*&---------------------------------------------------------------------*
*& Report  ZSE78_IMG_DOWN
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZSE78_IMG_DOWN.



               .
***********************************************************************
* Variable declaration
***********************************************************************
DATAv_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
***********************************************************************
DATABEGIN OF i_graphic_table OCCURS 0,
        line(255TYPE x,
      END OF i_graphic_table.

***********************************************************************
* Structure declaration
***********************************************************************
DATAst_stxbitmaps       TYPE stxbitmaps.
***********************************************************************
* Selection screen
***********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERSp_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.
  DATAl_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 xstrlenv_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.