Текущее время: Вт, июл 22 2025, 22:03

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 08:28 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 23 2012, 09:29
Сообщения: 10
...имел кто дело с подобным методом класса?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 08:41 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 14 2010, 13:26
Сообщения: 70
Откуда: Санкт-Петербург
Пол: Мужской
FILE_OPEN_DIALOG отображает диалог выбора файлов.
WINDOW_TITLE - заголовок диалога,
DEFAULT_EXTENSION- расширение для файлов,
DEFAULT_FILENAME - имя файлов по умолчанию,
FILE_FILTER - фильтр для выбора файлов,
WITH_ENCODING - возможность выбора кодировки,
INITIAL_DIRECTORY - директория в которой открывается диалог,
MULTISELECTION - если 'Х' позволяет выбирать несколько файлов,
FILE_TABLE - список выбранных файлов.
USER_ACTION может принимать либо ACTION_OK либо ACTION_CANCEL в зависимости на какую кнопку диалога нажал пользователь. FILE_ENCODING - принимает значение кодировки файла.
Пример использования метода:

Code:
CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
      window_title      = 'File'
      default_extension = '*.txt'
      file_filter       = 'Text file (*.txt)|*.txt|File with delimiter ";" (*.csv)|*.csv|Excel (*.xls)|*.xls|All (*.*)|*.*'
    CHANGING
      file_table        = _it_file_table      "initial_directory = 'C:'
      rc                = _rc.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 08:55 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 23 2012, 09:29
Сообщения: 10
Вроде все так и написано, а ошибка вылазит "WRONG PARAMETER: FILE_NAME".
Код ниже

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file_up1.

DATA:
lt_file_table TYPE filetable,
lv_filename TYPE string,
lv_rc TYPE i,
l_ret TYPE i.
lv_filename = file_up1.

* insert B0001099000 into /BIC/B0001099000.

CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Пожалуйста, выберите место '
default_filename = '*.txt'
file_filter = 'Text file (*.txt)|*.txt|File with delimiter ";" (*.csv)|*.csv|Excel (*.xls)|*.xls|All (*.*)|*.*'
CHANGING
file_table = lt_file_table
rc = lv_rc
user_action = l_ret
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
CHECK sy-subrc = 0.

CALL METHOD cl_gui_cfw=>flush.
IF lv_rc = 0.
file_up1 = lv_filename.
ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 08:58 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 23 2012, 09:29
Сообщения: 10
Вроде все так и написано, а ошибка вылазит "WRONG PARAMETER: FILE_NAME".
Код ниже:

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file_up1.

DATA:
lt_file_table TYPE filetable,
lv_filename TYPE string,
lv_rc TYPE i,
l_ret TYPE i.
lv_filename = file_up1.

* insert B0001099000 into /BIC/B0001099000.

CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Пожалуйста, выберите место '
default_filename = '*.txt'
file_filter = 'Text file (*.txt)|*.txt|File with delimiter ";" (*.csv)|*.csv|Excel (*.xls)|*.xls|All (*.*)|*.*'
CHANGING
file_table = lt_file_table
rc = lv_rc
user_action = l_ret
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
CHECK sy-subrc = 0.

CALL METHOD cl_gui_cfw=>flush.
IF lv_rc = 0.
file_up1 = lv_filename.
ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 09:01 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
не хватает у вас обработки таблицы lt_file_table
LOOP или READ в lv_filename


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 09:51 
Специалист
Специалист

Зарегистрирован:
Чт, ноя 23 2006, 17:37
Сообщения: 197
Откуда: Москва
Пол: Мужской
+ в классе cl_gui_frontend_services определены константы типов файлов, можно их использовать в опеределнии фильтра файлов, чтобы не хардкодить.
Ну и по-прежнему непонятно, где ошибка, т.к. в тексте ссылка на неуказанный\неописанный во фрагменте исходника параметр.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 10:21 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 23 2012, 09:29
Сообщения: 10
Код со всем описанием:

data B0001099000 like /BIC/B0001099000 occurs 100
with header line.

Parameters: file_up1 TYPE string. "'\\ocrv-server\doc$\sap\Выгрузка\1.txt'.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = file_up1
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
DAT_MODE = 'X'
TABLES
DATA_TAB = B0001099000.

*Загрузка в таблицу B0001099000 САПа первого файла
*-----------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR file_up1.

DATA:
lt_file_table TYPE filetable,
lv_filename TYPE string,
lv_rc TYPE i,
l_ret TYPE i.
lv_filename = file_up1.

* insert B0001099000 into /BIC/B0001099000.

CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Пожалуйста, выберите место '
default_filename = '*.txt'
file_filter = 'Text file (*.txt)|*.txt|File with delimiter ";" (*.csv)|*.csv|Excel (*.xls)|*.xls|All (*.*)|*.*'
CHANGING
file_table = lt_file_table
rc = lv_rc
user_action = l_ret
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
CHECK sy-subrc = 0.

CALL METHOD cl_gui_cfw=>flush.
IF lv_rc = 0.
file_up1 = lv_filename.
ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 10:58 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Code:
IF lv_rc = 0.
file_up1 = lv_filename.
ENDIF.

замените на
Code:
  IF lv_rc <> -1. 'см описание метода в классе
' вобще if можно выкинуть, хватит и check sy-subrc = 0
    READ TABLE lt_file_table INTO lv_filename INDEX 1.
    file_up1 = lv_filename.
  ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 12:42 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
to Dima_163rus

Code:
Parameters: file_up1 TYPE string. "'\\ocrv-server\doc$\sap\Выгрузка\1.txt'.

CALL FUNCTION 'GUI_UPLOAD'


Так у Вас дамп в GUI_UPLOAD получается? И почему такой путь \\ocrv-server\doc$\sap\Выгрузка\1.txt'.? куда выгружаете?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 13:01 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 23 2012, 09:29
Сообщения: 10
Можно вообще без него(без \\ocrv-server\doc$\sap\Выгрузка\1.txt'. ).
Мне нужно с помощью метода cl_gui_frontend_services=>file_open_dialog и GUI UPLOAD ввести на экране путь вручную, путь вводится, а программа дальше не идет...GUI UPLOAD вставил после метода...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 13:08 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Dima_163rus написал(а):
Можно вообще без него(без \\ocrv-server\doc$\sap\Выгрузка\1.txt'. ).
Мне нужно с помощью метода cl_gui_frontend_services=>file_open_dialog и GUI UPLOAD ввести на экране путь вручную, путь вводится, а программа дальше не идет...GUI UPLOAD вставил после метода...

Почитайте внимательно дамп. Пройдитесь по коду отладчиком. Все будет видно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Пн, сен 17 2012, 13:15 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Dima_163rus написал(а):
Можно вообще без него(без \\ocrv-server\doc$\sap\Выгрузка\1.txt'. ).
Мне нужно с помощью метода cl_gui_frontend_services=>file_open_dialog и GUI UPLOAD ввести на экране путь вручную, путь вводится, а программа дальше не идет...GUI UPLOAD вставил после метода...

как-то сумбурно
cl_gui_frontend_services=>file_open_dialog возвращает внутреннюю таблицу с именами выбранных файлов
из нее нужно в локальную переменную достать имя файла
потом это имя файла передать в GUI UPLOAD
вроде все просто

+1 за отладчик


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Вт, сен 18 2012, 07:15 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 23 2012, 09:29
Сообщения: 10
Парни, а может есть у кого подобный рабочий пример выгрузки из файла?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Вт, сен 18 2012, 07:51 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Code:
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = 'd:\zrc.txt'
      has_field_separator     = 'X'
    TABLES
      data_tab                = items
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.
  IF sy-subrc <> 0.

  ENDIF.

вставляйте вызовы ФМ с EXCEPTIONS, меньше будет дампов и понятней проблема
структура параметра data_tab и структура файла должны соответствовать друг другу


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_frontend_services=>file_open_dialog
СообщениеДобавлено: Вт, сен 18 2012, 08:07 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 23 2012, 09:29
Сообщения: 10
Спасибо, без ошибок, но не грузит до сих пор :D


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB