Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SE24 - Построитель объектов => Тема начата: Uukrul от Декабрь 21, 2014, 10:47:48 pm

Название: CL_GUI_FRONTEND_SERVICES - Работа с данным локальной рабочей станции
Отправлено: Uukrul от Декабрь 21, 2014, 10:47:48 pm
CL_GUI_FRONTEND_SERVICES - Работа с данным локальной рабочей станции, данный класс включает в себя множество методов, по мере наличия примеров буду выкладывать все тут. Используются методы класса, так что создавать экземпляр объекта не требуется.

Название: Re: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG - Диалог открытия файла
Отправлено: Uukrul от Декабрь 21, 2014, 10:51:49 pm
CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG - Диалог открытия файла, в принципе это замена одноименного функционального модуля, но с хитрым заполнением маски файла. Пример программы с формированием маски файла ниже. Метод позволяет выбирать как один файл так и несколько. Для этого есть соответствующий параметр. По ходу текста, комментарии описывают особенности примера.
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*& 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.