*&---------------------------------------------------------------------*
*& 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
*& 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