Текущее время: Сб, июл 26 2025, 10:03

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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