Текущее время: Чт, июл 31 2025, 16:44

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Программный ввод значения в поле на экране (полная эмуляция)
СообщениеДобавлено: Пт, мар 28 2008, 12:30 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Собственно речь идет о том чтобы программно эмулировать ввод значения в стандартное поле (как делается в batch input)

1) В программе (расширении) присваиваю экранному полю новое значение
2) Далее выполняю CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
чтобы пройти через PAI и PBO

Но в этих процессах стандартная обработка экрана включает модули on request на это поле, которые к сожалению не срабатывают на программное изменение значения поля

Как сделать чтобы эти модули срабатывали , т е полностью эмулировать ввод значения в поле и нажатие <Enter>
В batch-input это ведь как-то работает...

Заранее спасибо


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный ввод значения в поле на экране (полная эмуляция)
СообщениеДобавлено: Пт, мар 28 2008, 13:35 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
organmusic написал(а):
Собственно речь идет о том чтобы программно эмулировать ввод значения в стандартное поле (как делается в batch input)

1) В программе (расширении) присваиваю экранному полю новое значение


Экранному полю вы не можите присвоить никакого значения. Присвоение выполняется переменным ABAP-а. Из которых/в которые в процессе работы экранной логики будут перенесены значения.
Цитата:
2) Далее выполняю CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
чтобы пройти через PAI и PBO

А зачем такие извращения?
Цитата:
Но в этих процессах стандартная обработка экрана включает модули on request на это поле, которые к сожалению не срабатывают на программное изменение значения поля

Как сделать чтобы эти модули срабатывали , т е полностью эмулировать ввод значения в поле и нажатие <Enter>
В batch-input это ведь как-то работает...
Выполнять транзакцию через Batch Input Session.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 28 2008, 13:48 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, ноя 21 2006, 17:16
Сообщения: 134
Откуда: Донецк
Пол: Женский
Можно в PAI-логике пройтись по экрану и для этого поля написать screen-request = '1'.

_________________
Если хочешь иметь то, чего никогда не имел - то должен делать то, чего никогда не делал.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 28 2008, 16:01 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Подробнее это из PM (ТОРО)
Хотим всего лишь сделать надстройку над стандартной транзакицей IW22 для ввода документа измерений (ДИ), чтобы на лету переводить из мили в км
При создании ДИ стандартно надо заводить километраж (разницу), а у нас показания счетчиков машин в милях.
Вот хотим чтобы над списком ДИ по стандартной кнопке 'Счетчик' всплывало окно где можно ввести разницу пробега в милях - далее по OK в стандартный экран впечатываются разница пробега в км - рассчитывается новый пробег и др производные значения (как по Enter) и дальше все обычным порядком

Всплывающее окошко я в общем сделал, но как вставить вычисленное значение в поле экрана ДИ (то что предназначено для ручного ввода)

Как это можно сделать без извращений? - подскажите пожалуйста
К сожалению screen-request = 1 попробовать тоже не получается, я не могу вставить реализацию расширения в PAI и PBO, так же как и в их модулях


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 28 2008, 16:38 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
Может SAP GUI Scripting пользовать?

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 28 2008, 17:26 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Bully написал(а):
Может SAP GUI Scripting пользовать?

А как его использовать?
Можно поподробней пожалуйста


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 28 2008, 18:14 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
organmusic написал(а):
Подробнее это из PM (ТОРО)
Хотим всего лишь сделать надстройку над стандартной транзакицей IW22 для ввода документа измерений (ДИ), чтобы на лету переводить из мили в км
При создании ДИ стандартно надо заводить километраж (разницу), а у нас показания счетчиков машин в милях.
...
Речь идёт про ввод документ измерений через IK1x?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 28 2008, 18:38 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
sy-uname написал(а):
organmusic написал(а):
Подробнее это из PM (ТОРО)
Хотим всего лишь сделать надстройку над стандартной транзакицей IW22 для ввода документа измерений (ДИ), чтобы на лету переводить из мили в км
При создании ДИ стандартно надо заводить километраж (разницу), а у нас показания счетчиков машин в милях.
...
Речь идёт про ввод документ измерений через IK1x?

Да именно это,
Мы хотим в системе (в стандарте) все ДИ для этой точки измерения вести в км, чтобы не создалось проблем с разными ед измерений
Хотим мили со счетчиков (спидометров) сразу переводить в км - с пом своего Z-функционала - в систему все должно попадать только в км

Можно наверное и эту транзакцию IK01 в пакетнике запускать, если она будет работать из IW22. Я попробовал запускать в разных сеансах - если IW22 запущен, то IK01 для ее ед. оборудования блокируется.
Конечно хотелось бы найти какое-то простое решение, без этих трудоемких извратов


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 28 2008, 18:53 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Bully написал(а):
Может SAP GUI Scripting пользовать?

Насколько я прочитал по GUI Scripting, не вполне подходит, не хотелось бы еще VBasic и OLE сюда привлекать

Наилучший вариант было бы просто эмулировать изменение значения в каком то поле (или неск полях) экрана с последующей отработкой PAI и PBO
В общем некий аналог пакетного ввода. Но пакетник нельзя запустить где то в середине транзакции. В лучшем случае пакетником можно стартовать транзакцию и остановиться где-то посередине

А вообще такая эмуляция экранного ввода была бы очень полезна - в стандартных экранах часто присутствует очень сложная логика обработки, которую извлечь и воспроизводить в отдельной своей процедуре очень трудоемко и чревато ошибками. Лучше было бы просто выполнить уже готовый экранный PAI/PBO


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 28 2008, 21:26 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
organmusic написал(а):
А вообще такая эмуляция экранного ввода была бы очень полезна - в стандартных экранах часто присутствует очень сложная логика обработки, которую извлечь и воспроизводить в отдельной своей процедуре очень трудоемко и чревато ошибками. Лучше было бы просто выполнить уже готовый экранный PAI/PBO


SAP GUI Scripting - "эмулирует" действия пользоателя. Тут вам и PAI отработает и PBO.
Согласен, что не для всех задач будет удобно его использовать.
В отличие от пакетника он умеет работать с Enjoy компонентами, "запускаться с середины транзакции" и т.д. и т.п.

Попробуйте - не так уж и сложно.

Макросы в Word'е писали? Примерно тоже самое.

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, мар 29 2008, 10:08 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
organmusic написал(а):
...
Да именно это,
Мы хотим в системе (в стандарте) все ДИ для этой точки измерения вести в км, чтобы не создалось проблем с разными ед измерений
Хотим мили со счетчиков (спидометров) сразу переводить в км - с пом своего Z-функционала - в систему все должно попадать только в км

Можно наверное и эту транзакцию IK01 в пакетнике запускать, если она будет работать из IW22. Я попробовал запускать в разных сеансах - если IW22 запущен, то IK01 для ее ед. оборудования блокируется.
Конечно хотелось бы найти какое-то простое решение, без этих трудоемких извратов


Я вот только непойму зачем что-то делать эмуляцию нажатий, запуск пакетников, ...? Почему нельзя обойтись простым call function ... для создания ДИ?

Bully написал(а):

А что, Scripting уже ведётся как объект словаря?
Потому как, на мой взгляд, это был его один из главных недостатков - необходимы дополнительные ухищерения чтобы закинуть скрипт на машину пользователя.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, мар 30 2008, 02:45 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
sy-uname написал(а):
organmusic написал(а):
...
Да именно это,
Мы хотим в системе (в стандарте) все ДИ для этой точки измерения вести в км, чтобы не создалось проблем с разными ед измерений
Хотим мили со счетчиков (спидометров) сразу переводить в км - с пом своего Z-функционала - в систему все должно попадать только в км

Можно наверное и эту транзакцию IK01 в пакетнике запускать, если она будет работать из IW22. Я попробовал запускать в разных сеансах - если IW22 запущен, то IK01 для ее ед. оборудования блокируется.
Конечно хотелось бы найти какое-то простое решение, без этих трудоемких извратов


Я вот только непойму зачем что-то делать эмуляцию нажатий, запуск пакетников, ...? Почему нельзя обойтись простым call function ... для создания ДИ?

Bully написал(а):

А что, Scripting уже ведётся как объект словаря?
Потому как, на мой взгляд, это был его один из главных недостатков - необходимы дополнительные ухищерения чтобы закинуть скрипт на машину пользователя.

Если есть возможность сделать ДИ одним вызовом функции, конечно так надо и сделать - чем проще тем лучше

Я смотрел эту группу функций (IMR0 кажется), надо кончено еще разобраться какой ФМ использовать. У меня здесь лишь одно сомнение:
В момент вызова ФМ создания документа измерения (ДИ) я буду находиться в сообщении ТОРО в режиме изменения. А там, как известно, в пункте меню Доп.информация есть своя система создания и редактирования ДИ. Я видел в коде что там вызывается один ФМ из этой группы, точно сейчас не скажу, что то вроде ...DIALOG_LIST

Так вот не будет ли создание моего ДИ заблокированно этой системой?

Если заблокированно не будет, тогда неясны некоторые принципы работы с ДИ.
Если мой вызов ФМ создает ДИ, он видимо будет сразу записан во внешнюю таблицу IMRG?.
В Доп информации новые созданные ДИ хранятся только во внутренней таблице, а реальная запись в IMRG происходит лишь в момент сохранения сообщения ТОРО.
Я тогда не понимаю как в этом случае не имея связи друг с другом они не будут друг с другом конфликтовать (например по назначению нового номера ДИ)
Пожалуйста проясните данные моменты

Что касается scripting, посоветуйте где можно получить информацию и толковую документацию (с примерами) по нему.
C VBA я работал очень много (Word, Excel, Access, MSProject), но там великолепная help и hint системы - где все расписано с примерами, многочисленные свойства и методы объектов с их параметрами не надо заучивать наизусть или искать в документации (как например приходилось в Turbo Vision в C++) - вообще забывашь что работаешь в ООП.
И конечно если для выполнения такой простой операции (занесения значения в поле экрана) придется еще загружать какой то файл видимо скрипт) на компьютер пользователя, то это не слишком удобно и надежно. Я надеялся все же что существует более простое решение


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, мар 30 2008, 22:06 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
sy-uname написал(а):
А что, Scripting уже ведётся как объект словаря?
Потому как, на мой взгляд, это был его один из главных недостатков - необходимы дополнительные ухищерения чтобы закинуть скрипт на машину пользователя.

Да, наверное это его минус.

organmusic написал(а):
Что касается scripting, посоветуйте где можно получить информацию и толковую документацию (с примерами) по нему.

У меня документация лежит тут C:\Program Files\SAP\FrontEnd\SAPgui\SAPguihelp\SAPGUIScripting.chm

А вообще много примеров тут.

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 31 2008, 09:57 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Посоветуйте какую функцию использовать для создания нового документа измерений?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 31 2008, 11:01 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
Bully написал(а):
sy-uname написал(а):
А что, Scripting уже ведётся как объект словаря?
Потому как, на мой взгляд, это был его один из главных недостатков - необходимы дополнительные ухищерения чтобы закинуть скрипт на машину пользователя.
Да, наверное это его минус.
Второй минус, что он может быть и закрыт настройками системы...........

Я даже маленький "хук" делал с PlatinGUI, в обход этого запрета..... :D

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


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

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


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

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


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

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