GUI_DOWNLOAD

*&---------------------------------------------------------------------*
*& Report  ZTEST_BQ8
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*


REPORT  ztest_bq8.


TYPE-POOLS ole2.


DATA:
  gc_excel   TYPE ole2_object,
  gc_book    TYPE ole2_object.


DATA:
  gt_zafvv      TYPE TABLE OF zafvv WITH HEADER LINE.


SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-h02.
PARAMETERS p_path TYPE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b2.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
* 取得路径和文件名
  PERFORM path_get.


AT SELECTION-SCREEN ON p_path.
* 路径检查
  PERFORM path_check.


START-OF-SELECTION.


* 输出物料工时信息
  SELECT *
    FROM zafvv
    INTO TABLE gt_zafvv.


*-------------------------------------------------------
* 填充数据
*-------------------------------------------------------


  PERFORM frm_data_set.


*&---------------------------------------------------------------------*
*&      Form  FRM_DATA_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_data_set .


  TYPES:
    BEGIN OF lst_tab,
      str(1000) TYPE c,
    END OF lst_tab.


  DATA:
    lt_table TYPE TABLE OF lst_tab WITH HEADER LINE,
    lc_tab   TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.


  CONCATENATE '客户端'
              '序列号'
              '操作/活动编号'
              '订单优先级'
              '最早计划开始:执行(日期)'
              '最早计划开始:执行(时间)'
              '最迟计划 完成 :等待时间 (日期)'
              '最迟计划 完成:等待时间'
              '工艺车'
              '最早计划开始:执行(日期)'
              '最早计划开始:执行(时间)'
              '最迟计划 完成 :等待时间 (日期)'
              '最迟计划 完成:等待时间'
              '开工无效'
              '调整标记'
              '完工无效'
              '注释文本, 长度 40 位'
              '开工调整'
              '完工调整'
              '交车完成日期大于客户要求交车日期的调整标记'
         INTO lt_table-str
    SEPARATED BY lc_tab.
  APPEND lt_table.


  PERFORM frm_download TABLES lt_table.


  DELETE gt_zafvv FROM 100001.
  PERFORM frm_download TABLES gt_zafvv.


  CREATE OBJECT gc_excel 'Excel.Application'.
  SET PROPERTY OF gc_excel 'Visible' = 1.
  CALL METHOD OF gc_excel 'Workbooks' = gc_book.
* Open
  CALL METHOD OF gc_book 'Open' = gc_book
    EXPORTING #1 = 'C:\abc.xls'.


ENDFORM.                    " FRM_DATA_SET


*&---------------------------------------------------------------------*
*&      Form  FRM_DOWNLOAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_DOWNLOAD  text
*----------------------------------------------------------------------*
FORM frm_download  TABLES   pt_download TYPE STANDARD TABLE.


  DATA:
    lv_filename TYPE string.


  lv_filename = p_path.


  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename                = lv_filename
      append                  = 'X'
      filetype                = 'DAT'
    TABLES
      data_tab                = pt_download
    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.


ENDFORM.                    " FRM_DOWNLOAD


*&---------------------------------------------------------------------*
*&      Form  PATH_GET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form PATH_GET .


  DATA:
    l_filename  TYPE string,
    l_path      TYPE string,
    l_fullpath  TYPE string.


  CALL METHOD cl_gui_frontend_services=>file_save_dialog
      EXPORTING
        window_title      = '另存为'
        DEFAULT_EXTENSION = 'xls'
        file_filter       = '*.xls'
        initial_directory = ''
      CHANGING
        filename          = l_filename
        path              = l_path
        fullpath          = l_fullpath.


  p_path = l_fullpath.


  CALL METHOD CL_GUI_CFW=>FLUSH.


endform.                    " PATH_GET


*&---------------------------------------------------------------------*
*&      Form  PATH_CHECK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form PATH_CHECK .


  DATA:
    l_path    TYPE string,
    l_string1 TYPE string,
    l_string2 TYPE string,
    l_result  TYPE abap_bool.


  l_string1 = p_path.


  DO.
    CLEAR:
      l_string2.
    SEARCH l_string1 FOR '\'.
    IF sy-subrc = 0.
      SPLIT l_string1 AT '\' INTO l_string2 l_string1.
      IF l_path IS INITIAL.
        l_path = l_string2.
      ELSE.
        CONCATENATE l_path
                    l_string2
               INTO l_path
          SEPARATED BY '\'.
      ENDIF.
    ELSE.
      EXIT.
    ENDIF.
  ENDDO.


  IF l_path IS INITIAL.
    MESSAGE '请输入正确的路径格式' TYPE 'E'.
  ENDIF.


  CALL METHOD cl_gui_frontend_services=>directory_exist
    EXPORTING
      directory = l_path          "路径
    RECEIVING
      result    = l_result.        "处理结果


  IF sy-subrc <> 0 OR l_result IS INITIAL.
    MESSAGE '路径不存在' TYPE 'E'.
  ENDIF.


  CALL METHOD CL_GUI_CFW=>FLUSH.


endform.                    " PATH_CHECK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值