Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => SE24 - Построитель объектов => Тема розпочата: Uukrul від Грудень 21, 2014, 10:47:48 ПП
CL_GUI_FRONTEND_SERVICES - Работа с данным локальной рабочей станции, данный класс включает в себя множество методов, по мере наличия примеров буду выкладывать все тут. Используются методы класса, так что создавать экземпляр объекта не требуется.
CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG - Диалог открытия файла, в принципе это замена одноименного функционального модуля, но с хитрым заполнением маски файла. Пример программы с формированием маски файла ниже. Метод позволяет выбирать как один файл так и несколько. Для этого есть соответствующий параметр. По ходу текста, комментарии описывают особенности примера.
*&---------------------------------------------------------------------*
*& Report ZEBS_TEST_LOCAL_PROGRAMM
*&
*&---------------------------------------------------------------------*
*& Пример выбра файла в стандартном диалоге с возможностью задания маски
*& файлов в окне диалога.
*&---------------------------------------------------------------------*
REPORT zebs_test_local_programm.
TYPES: BEGIN OF s_file,
file TYPE char1024,
END OF s_file.
DATA: l_rc TYPE i,
lt_file TYPE STANDARD TABLE OF s_file,
ls_file TYPE s_file.
DATA: l_file_filter TYPE string.
* Правило формироания маски файла, если нужны файлы одного типа,
l_file_filter = 'Файли Microsoft Excel (*.XLS;*.XLSX;*.XLSM)|*.XLS;*.XLSX;*.XLSM|'.
* Если нужны файлы двух типов тогда заполняем следующим образом
CONCATENATE l_file_filter 'Файлы Microsoft Word (*.DOC;*.XDOC)|*.DOC;*.XDOC;|'
'Файлы тектовые (*.TXT)|*.TXT|'
INTO l_file_filter.
* В окне диалога при выборе одного из вариантов будут отражатся только файлы
* выбранного типа, в данном примере будут видны 3 типа варианта выбора.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Заголовок окна'
"default_extension = '*.xls'
"DEFAULT_FILENAME =
file_filter = l_file_filter
"WITH_ENCODING =
"INITIAL_DIRECTORY = Начальный каталог
"MULTISELECTION = Если поставить Х то можно выбрать несклько файлов.
CHANGING
file_table = lt_file
rc = l_rc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
DATA: l_full_path LIKE rlgrap-filename,
l_file_name LIKE rlgrap-filename,
l_file_path LIKE rlgrap-filename.
LOOP AT lt_file INTO ls_file.
l_full_path = ls_file-file.
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
full_name = l_full_path
IMPORTING
stripped_name = l_file_name
file_path = l_file_path
EXCEPTIONS
x_error = 1
OTHERS = 2.
WRITE: / 'Путь к файлу:', l_file_path,
/ 'Имя файла:', l_file_name NO-GAP.
ENDLOOP.