获取路径
1. 文件夹路径 — H:\2019\测试数据
1.1 类方法
弹出框文件夹路径获取,也可新建文件夹
CALL METHOD cl_gui_frontend_services=>directory_browse
PARAMETERS p_file TYPE string DEFAULT 'PATH'. "路径
**----------------------------------------------**
** P4 搜索帮助:
** 弹出显示---选择文件夹路径,也可新建文件夹
**----------------------------------------------**
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
DATA LC_PATH TYPE STRING.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'File Directory'
initial_folder = 'H:\'
CHANGING
selected_folder = lc_path
* EXCEPTIONS
* CNTL_ERROR = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
* OTHERS = 4
.
p_file = lc_path.
最终得到的是 文件夹 的路径:
2. 文件路径 ------ H:\2019\测试数据\
2.1 类方法
PARAMETERS p_file TYPE string DEFAULT 'PATH'. "路径
DATA : l_filename TYPE string VALUE 'EXCEL'. "文件名
DATA : l_file TYPE string VALUE 'EXCEL模板测试'. "方法中返回的完整路径+文件名
**----------------------------------------------**
** P4 搜索帮助:
** 弹出显示---选择文件夹路径,也可新建文件夹
**----------------------------------------------**
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
"获取存储的:文件的路径 + 文件名
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = '选择保存地址'
default_extension = 'xlsx' "默认截取了前三位字符/???
default_file_name = 'HUA_EXCEL模板测试'
* with_encoding =
* file_filter =
* initial_directory =
* prompt_on_overwrite = 'X'
CHANGING
filename = l_filename "返回-文件名
path = p_file "返回-路径
fullpath = l_file "返回-路径+文件名
* user_action =
* file_encoding =
* exceptions
* cntl_error = 1
* error_no_gui = 2
* not_supported_by_gui = 3
* invalid_default_file_name = 4
* others = 5
.
** 此处的空格成为了换行符???
DATA messages TYPE string.
CONCATENATE 'filename:' l_filename ' path:' p_file ' FULLfile:' l_file INTO messages.
MESSAGE messages TYPE 'I'.
IF sy-subrc <> 0 OR p_file IS INITIAL.
MESSAGE '用户取消或保存选择出错!' TYPE 'S'.
RETURN.
ENDIF.
注意:此处的消息消息显示中的自动换行
2.2 FUNCTION 文件路径获取
2.2.1 GUI_FILE_SAVE_DIALOG
GUI_FILE_SAVE_DIALOG
**************************************************************************************
** 路径保存:
DATA V_FILENAME TYPE STRING.
** 弹出框显示---路径获取 + 文件名称 + 文件格式说明(扩展名)
CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'
EXPORTING
* WINDOW_TITLE =
DEFAULT_EXTENSION = 'xls' "下载的EXCEL只能是 *.xls格式的,不能是 *.xlsx / ?????????
* DEFAULT_FILE_NAME =
* WITH_ENCODING =
* FILE_FILTER =
* INITIAL_DIRECTORY =
* DEFAULT_ENCODING =
IMPORTING
FILENAME = P_03 "得到:文件名称 + 文件格式说明(扩展名)
* PATH = "得到:路径
* FULLPATH = V_FILENAME "得到:路径 + 文件名称 + 文件格式说明(扩展名)
* USER_ACTION =
* FILE_ENCODING =
.
FIELDNAMES 带有各个列的列名的可选表:
FILETYPE = ‘DBF’:列名被输入到DBF文件的结构定义中。
FILETYPE = ‘DAT’:在表的开头插入一个带有列名的额外行。
EXCEL的下载:
**************************************************************************************
** 内表的结构:
DATA: BEGIN OF ITAB OCCURS 0,
F1 TYPE CHAR256, "字段1
F2 TYPE CHAR256, "字段2
END OF ITAB.
**************************************************************************************
** FIELDNAMES:带有各个列的列名的可选表---为表格添加字段描述:
DATA: BEGIN OF T_FIELDNAMES OCCURS 0,
NAME TYPE CHAR20, "字段描述
END OF T_FIELDNAMES.
T_FIELDNAMES-NAME = '序列号'. "第一列字段描述
APPEND T_FIELDNAMES.
T_FIELDNAMES-NAME = '序列号'. "第二列字段描述
APPEND T_FIELDNAMES.
** 下载EXCEL模板:
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = V_FILENAME "文件的下载路径+文件名+文件格式(扩展名)
FILETYPE = 'DAT'
CODEPAGE = '8404'
TABLES
DATA_TAB = ITAB "内表结构
FIELDNAMES = T_FIELDNAMES. "内表字段描述
2.2.2 WS_FILENAME_GET
WS_FILENAME_GET
PARAMETERS P_01 TYPE STTING.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_01.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
* DEF_FILENAME = ' '
DEF_PATH = 'C: \ '
MASK = ' *.XLS '
MODE = '0'
TITLE = 'OPEN FILE'
IMPORTING
FILENAME = P_01
* RC =
* EXCEPTIONS
* INV_WINSYS = 1
* NO_BATCH = 2
* SELECTION_CANCEL = 3
* SELECTION_ERROR = 4
* OTHERS = 5
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.