Текущее время: Сб, июл 19 2025, 00:18

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 14:39 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
Есть такой чудный ФМ FILE_OPEN. Я им пользовался (точнее я пользуюсь другим ФМ-ом, который использует ФМ FILE_OPEN для чтения данных) некоторое время и всё было замечательно.
Однако понадобилось вызывать этот ФМ для ДВУХ чтений файла с ОДНИМ ИМЕНЕМ, но с разным содержанием. Т.е. у меня есть файл "filename.csv". Я его читаю, потом меняю содержание и читаю ещё раз.
Только вот ФМ FILE_OPEN кеширует результат чтения по имени файла. И когда я второй раз читаю тот же файл он говорит, что успешно его открыл и на выход выдает старые данные.
Просмотр файл обнаружил, что имя файла он сохраняет в статической переменной.
Есть ли возможность изменить её из вне?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 14:46 
Ассистент
Ассистент

Зарегистрирован:
Ср, янв 18 2012, 07:36
Сообщения: 41
Откуда: Югорск
Пол: Мужской
ну накрайняк есть варварские методы - сунуть в него енхайсмент с какинить get memory id. :wink:
Или в ту-же группу функций воткнуть Z-ФМ.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 15:05 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
"Всунуть ФМ не вариант" - не вариант.
"ну накрайняк есть варварские методы - сунуть в него енхайсмент с какинить get memory id." - не совсем понял о чем речь?

На крайняк я могу
1. Вызывать ФМ для открытия другого файла, чтобы при вызове с именем именем происходило перечитывание
2. Или просто каждый раз генерировать новое имя файла.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 15:08 
Ассистент
Ассистент

Зарегистрирован:
Ср, янв 18 2012, 07:36
Сообщения: 41
Откуда: Югорск
Пол: Мужской
второй вариант имхо предпочтительнее - тогда не будет путаницы "я думал это сегодняшнйи файл, а он вчерашний, но с сегодняшней датой".

Имелос в виду - енхайцмент правит эту переменную внутри ФМа, значение передаётся неявно через Memory.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 15:26 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
Слово "енхайцмент" меня просто пугает. :)
Можно пример кода, что имеется ввиду?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 15:32 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Pavel Berezin - расширить скорее всего не получится - ФМ отмечен как системный.
Валерка - внутри ФМа для загрузки файла используется метод cl_gui_frontend_services=>gui_upload, он вас не устроит?

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 15:54 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
+1 за cl_gui_frontend_services=>gui_upload или ФМ GUI_UPLOAD.
FILE_OPEN какой-то слишком универсальный, и с сервера и с локальной машины читает


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 15:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
ArmAnn написал:
внутри ФМа для загрузки файла используется метод cl_gui_frontend_services=>gui_upload, он вас не устроит?

Нет. Я не использую этот ФМ напрямую. я использую ФМ KCD_CSV_FILE_TO_INTERN_CONVERT, который уже использует указанный ФМ.

Собственно моя задача распарсить CSV. ФМ KCD_CSV_FILE_TO_INTERN_CONVERT самый подходящий оказался из того, что я нашел.

p.s. Пока сделаю костыль: буду переименовывать файл перед чтением, а затем переименовывать его обратно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 16:12 
Специалист
Специалист

Зарегистрирован:
Пт, авг 24 2012, 11:48
Сообщения: 200
Всё что вы написали можно успешно сделать вручную совместно с другими ФМ. Тот же самый ALSM_EXCEL_TO_INTERNAL_TABLE, можно попробовать с CSV нормально работает.

Как вариант (уже другой) скопируйте те ФМки стандартные, которые вы используете, в Z-группу функций, поправьте их по собственному усмотрению и добавьте новые входные параметры. Потом ФМки будут служить верой и правдой в других разработках :wink:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, окт 16 2012, 16:28 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
Shvetz написал(а):
Всё что вы написали можно успешно сделать вручную совместно с другими ФМ. Тот же самый ALSM_EXCEL_TO_INTERNAL_TABLE, можно попробовать с CSV нормально работает.

Как вариант (уже другой) скопируйте те ФМки стандартные, которые вы используете, в Z-группу функций, поправьте их по собственному усмотрению и добавьте новые входные параметры. Потом ФМки будут служить верой и правдой в других разработках :wink:


ФМ посмотрю. Но детальный анализ KCD_CSV_FILE_TO_INTERN_CONVER показал, что достаточно просто вызывать напрямую подпрограмму, которую он вызывает после чтения данных. А данные можно читать самому.

Указанный вами ФМ посмотрю. Насколько помнится, когда я выбирал Фм для работы с CSV, многие просто тупо разбивали строку по разделителю и если разделитель был внутри значения, то всё ломалось. найденный ФМ это корректно обрабатывал.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, авг 05 2014, 12:14 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, янв 27 2010, 19:05
Сообщения: 118
Добрый день! Коллеги, столкнулась с подобной проблемой. ФM KCD_CSV_FILE_TO_INTERN_CONVERT задачей разделения CSV формата справляется,но длина поля VALUE всего 32 символа. А ФМ-ки ALSM_EXCEL_TO_INTERNAL_TABLE и GUI_UPLOAD грузят всю строку в одну ячейку внутренней таблицы. Как Вы решаете проблему, сами раскидываете по символу разделителя? Или есть какие-то ФМ, которые достаточно хорошо делают , без ограничения длины поля 32 символа. Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Вт, авг 05 2014, 15:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
tomacik написал(а):
Как Вы решаете проблему, сами раскидываете по символу разделителя? Или есть какие-то ФМ, которые достаточно хорошо делают , без ограничения длины поля 32 символа.

1. скопировать ФМ ALSM_EXCEL_TO_INTERNAL_TABLE в Z и изменили тип поля value.
2. читать файл через ФМ GUI_UPLOAD в BIN, поместить его в xstring, затем преобразовать в string с помощью ФМ CRM_IC_XML_XSTRING2STRING.
После этого обработать его как XML-документ через интерфейс if_ixml_document.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Ср, авг 06 2014, 06:25 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, янв 27 2010, 19:05
Сообщения: 118
Большое спасибо, Удав.
Я нашла ФМ TEXT_CONVERT_XLS_TO_SAP, который вроде успешно справляется с задачей, но работает медленнее, чем GUI_UPLOAD.
У Вас есть опыт использования этого ФМ? Настораживает то, что в SE37 при тесте ФМ выходит ошибка "Ошибка при генерации кадра теста".


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Ср, авг 06 2014, 09:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
tomacik написал(а):
Я нашла ФМ TEXT_CONVERT_XLS_TO_SAP, который вроде успешно справляется с задачей, но работает медленнее, чем GUI_UPLOAD.
У Вас есть опыт использования этого ФМ?

Есть, ФМ работает, но широко у нас не используется. Он работает через OLE, поэтому и медленный. Кроме этого он корректно работает только с файлами <10000 строк, как и ALSM_EXCEL_TO_INTERNAL_TABLE.
tomacik написал(а):
Настораживает то, что в SE37 при тесте ФМ выходит ошибка "Ошибка при генерации кадра теста".

Так и должно быть, потому что при вызове параметру I_TAB_CONVERTED_DATA должна быть присвоена конкретная внутренняя таблица.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FILE_OPEN: изменить статическую переменную
СообщениеДобавлено: Ср, авг 06 2014, 09:54 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, янв 27 2010, 19:05
Сообщения: 118
Большое спасибо. Буду иметь в виду. Для данного случая у меня однозначно меньше 10000 записей будет. Еще раз спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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


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

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


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

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