ZBCC0004-upload/download file reuse routine-SE38(I類型)

*&---------------------------------------------------------------------*
*&  INCLUDE           ZBCC0004 - upload/download file reuse routine
*&---------------------------------------------------------------------*






*&---------------------------------------------------------------------*
*&      Form  GET_FILE_NAME
*&---------------------------------------------------------------------*
*    get upload file name
*----------------------------------------------------------------------*
FORM get_file_name  USING    f_file. "upload file path and name

*DATA WINDOW_TITLE      TYPE STRING.
*DATA DEFAULT_EXTENSION TYPE STRING.
*DATA DEFAULT_FILENAME  TYPE STRING.
*DATA FILE_FILTER       TYPE STRING.
*DATA WITH_ENCODING     TYPE ABAP_BOOL.
*DATA INITIAL_DIRECTORY TYPE STRING.
*DATA MULTISELECTION    TYPE ABAP_BOOL.
  DATA lt_file        TYPE filetable.
  DATA: lw_file TYPE LINE OF filetable.
  DATA l_rc                TYPE i.
  DATA l_user_action       TYPE i.
*DATA FILE_ENCODING     TYPE ABAP_ENCODING.
**********************************
  cl_gui_frontend_services=>file_open_dialog(
     EXPORTING
       window_title            = 'Select a File to Upload'
*    default_extension       = default_extension
*    default_filename        = default_filename
*    file_filter             = file_filter
*    with_encoding           = with_encoding
*    initial_directory       = initial_directory
*    multiselection          = multiselection
    CHANGING
      file_table              = lt_file
      rc                      = l_rc
     user_action             = l_user_action
*    file_encoding           = file_encoding
  EXCEPTIONS
    file_open_dialog_failed = 1
    cntl_error              = 2
    error_no_gui            = 3
    not_supported_by_gui    = 4
    OTHERS                  = 5
         ).
  IF sy-subrc <> 0.
* Implement suitable error handling here
    MESSAGE 'Open file dialog error!' TYPE 'S'.
  ELSE.

    CHECK l_user_action IS INITIAL.

    READ TABLE lt_file INTO lw_file
      INDEX 1.
    IF sy-subrc = 0.
      f_file = lw_file-filename.
    ENDIF.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  UPLOAD_FILE_TAB_TEXT
*&---------------------------------------------------------------------*
*     upload TAB見分割之 text 檔案
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM upload_file_tab_text TABLES ft_upload
                          USING f_file.

  DATA l_filename            TYPE string.
*DATA FILETYPE            TYPE CHAR10.
*DATA HAS_FIELD_SEPARATOR TYPE CHAR01.
*DATA HEADER_LENGTH       TYPE I.
*DATA READ_BY_LINE        TYPE CHAR01.
*DATA DAT_MODE            TYPE CHAR01.
*DATA CODEPAGE            TYPE ABAP_ENCODING.
*DATA IGNORE_CERR         TYPE ABAP_BOOL.
*DATA REPLACEMENT         TYPE ABAP_REPL.
*DATA VIRUS_SCAN_PROFILE  TYPE VSCAN_PROFILE.
*DATA FILELENGTH          TYPE I.
*DATA HEADER              TYPE XSTRING.
*DATA DATA_TAB            TYPE STANDARD TABLE.
*DATA ISSCANPERFORMED     TYPE CHAR01.

  l_filename = f_file.
  REFRESH: ft_upload.

  cl_gui_frontend_services=>gui_upload(
    EXPORTING
      filename                = l_filename
      filetype                = 'ASC'
      has_field_separator     = 'X'
*     header_length           =
*    read_by_line            = 'X'
*    dat_mode                = SPACE
*    codepage                = SPACE
*    ignore_cerr             = ABAP_TRUE
*    replacement             = '#'
*    virus_scan_profile      = virus_scan_profile
*  IMPORTING
*    filelength              = filelength
*    header                  = header
    CHANGING
      data_tab                = ft_upload[]
*    isscanperformed         = SPACE
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      not_supported_by_gui    = 17
      error_no_gui            = 18
      OTHERS                  = 19
         ).
  IF sy-subrc <> 0.
* Implement suitable error handling here
    MESSAGE 'Upload file error!' TYPE 'S'
       DISPLAY LIKE 'E'.
*    STOP.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_FILE_NAME_C
*&---------------------------------------------------------------------*
*       get download file name
*----------------------------------------------------------------------*
FORM get_file_name_c  USING    f_file.

*DATA WINDOW_TITLE        TYPE STRING.
*DATA DEFAULT_EXTENSION   TYPE STRING.
*DATA DEFAULT_FILE_NAME   TYPE STRING.
*DATA WITH_ENCODING       TYPE ABAP_BOOL.
*DATA FILE_FILTER         TYPE STRING.
*DATA INITIAL_DIRECTORY   TYPE STRING.
*DATA PROMPT_ON_OVERWRITE TYPE ABAP_BOOL.
  DATA l_filename            TYPE string.
  DATA l_path                TYPE string.
  DATA l_fullpath            TYPE string.
  DATA l_user_action         TYPE i.
*DATA FILE_ENCODING       TYPE ABAP_ENCODING.

  cl_gui_frontend_services=>file_save_dialog(
    EXPORTING
       window_title              = 'Select a File to Download'
*    default_extension         = default_extension
*    default_file_name         = default_file_name
*    with_encoding             = with_encoding
*    file_filter               = file_filter
*    initial_directory         = initial_directory
*    prompt_on_overwrite       = 'X'
    CHANGING
      filename                  = l_filename
      path                      = l_path
      fullpath                  = l_fullpath
      user_action               = l_user_action
*    file_encoding             = file_encoding
    EXCEPTIONS
      cntl_error                = 1
      error_no_gui              = 2
      not_supported_by_gui      = 3
      invalid_default_file_name = 4
      OTHERS                    = 5
         ).
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ELSE.
    CHECK l_user_action IS INITIAL.

    f_file = l_fullpath.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD_FILE_TAB_TEXT
*&---------------------------------------------------------------------*
*       download TAB鍵分割之 text 檔案
*----------------------------------------------------------------------*
FORM download_file_tab_text  TABLES   ft_data
                             USING    f_file.



*DATA BIN_FILESIZE              TYPE I.
  DATA l_filename                  TYPE string.
*DATA FILETYPE                  TYPE CHAR10.
*DATA APPEND                    TYPE CHAR01.
*DATA WRITE_FIELD_SEPARATOR     TYPE CHAR01.
*DATA HEADER                    TYPE XSTRING.
*DATA TRUNC_TRAILING_BLANKS     TYPE CHAR01.
*DATA WRITE_LF                  TYPE CHAR01.
*DATA COL_SELECT                TYPE CHAR01.
*DATA COL_SELECT_MASK           TYPE CHAR255.
*DATA DAT_MODE                  TYPE CHAR01.
*DATA CONFIRM_OVERWRITE         TYPE CHAR01.
*DATA NO_AUTH_CHECK             TYPE CHAR01.
*DATA CODEPAGE                  TYPE ABAP_ENCODING.
*DATA IGNORE_CERR               TYPE ABAP_BOOL.
*DATA REPLACEMENT               TYPE ABAP_REPL.
*DATA WRITE_BOM                 TYPE ABAP_BOOL.
*DATA TRUNC_TRAILING_BLANKS_EOL TYPE CHAR01.
*DATA WK1_N_FORMAT              TYPE C.
*DATA WK1_N_SIZE                TYPE C.
*DATA WK1_T_FORMAT              TYPE C.
*DATA WK1_T_SIZE                TYPE C.
*DATA SHOW_TRANSFER_STATUS      TYPE CHAR01.
*DATA FIELDNAMES                TYPE STANDARD TABLE.
*DATA WRITE_LF_AFTER_LAST_LINE  TYPE ABAP_BOOL.
*DATA VIRUS_SCAN_PROFILE        TYPE VSCAN_PROFILE.
*DATA FILELENGTH                TYPE I.
*DATA DATA_TAB                  TYPE STANDARD TABLE.

  l_filename = f_file.

  cl_gui_frontend_services=>gui_download(
    EXPORTING
*    bin_filesize              = bin_filesize
      filename                  = l_filename
      filetype                  = 'ASC'
*    append                    = SPACE
       write_field_separator     = 'X'
*    header                    = '00'
*    trunc_trailing_blanks     = SPACE
*    write_lf                  = 'X'
*    col_select                = SPACE
*    col_select_mask           = SPACE
*    dat_mode                  = SPACE
*    confirm_overwrite         = SPACE
*    no_auth_check             = SPACE
*    codepage                  = SPACE
*    ignore_cerr               = ABAP_TRUE
*    replacement               = '#'
*    write_bom                 = SPACE
*    trunc_trailing_blanks_eol = 'X'
*    wk1_n_format              = SPACE
*    wk1_n_size                = SPACE
*    wk1_t_format              = SPACE
*    wk1_t_size                = SPACE
*    show_transfer_status      = 'X'
*    fieldnames                = fieldnames
*    write_lf_after_last_line  = 'X'
*    virus_scan_profile        = '/SCET/GUI_DOWNLOAD'
*  IMPORTING
*    filelength                = filelength
    CHANGING
      data_tab                  = ft_data[]
    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.
* Implement suitable error handling here
    MESSAGE 'Download file error!' TYPE 'S'
       DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  UPLOD_EXCEL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM uplod_excel  TABLES  ft_data
                  USING   f_from_row
                          f_from_col
                          f_to_col
                          f_file.

  DATA lt_data      TYPE STANDARD TABLE OF alsmex_tabline
        WITH HEADER LINE.
  FIELD-SYMBOLS: <lfs>.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = f_file
      i_begin_col             = f_from_col
      i_begin_row             = f_from_row
      i_end_col               = f_to_col
      i_end_row               = 9999
    TABLES
      intern                  = lt_data
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.

  IF sy-subrc <> 0.
* Implement suitable error handling here
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  SORT lt_data BY row col.

  CLEAR: ft_data.

  LOOP AT lt_data.

    ASSIGN COMPONENT lt_data-col OF STRUCTURE ft_data TO <lfs>.
    IF sy-subrc = 0.
      <lfs> = lt_data-value.
    ENDIF.

    AT END OF row.
      APPEND ft_data.
      CLEAR: ft_data.
    ENDAT."AT END OF row
  ENDLOOP."LOOP AT lt_data


ENDFORM.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值