Текущее время: Вс, июл 20 2025, 02:15

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Завершение одной программы из другой
СообщениеДобавлено: Пт, июл 10 2009, 18:12 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Добрый день!

Такая проблема. Есть собственная программа, которая не делает ничего кроме как вызов тоже моего ФМ с определенными параметрами. ФМ показывает окно с набором полей для информации. Окно в ФМ создано руками (обычный screen, а не всевозможные 'POPUP_TO_...') и вызывается посредством call screen... starting at ... . Так вот наступает момент, когда нужно закрыть это окно, но из другой программы/ФМ/метода (все-равно откуда, код ведь одинаковый). Делается это для удобства. Т.е. пользователь создает новый материал в mm01, а в этом окне ему показываются некоторые параметры. Посредством copy-paste он переносит их в mm01 и по нажатию на сохранить надо бы закрыть мое окно с параметрами. Как и зачем это нужно могу объяснить при интересе, но главный вопрос - как закрыть это окно из другой программы (код).

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

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

З.Ы. Чесслово искал сначала и на форуме, и просто в интернете. Если кто знает похожую тему, в которой это уже обсуждалось, буду очень рад ссылке на нее. Спасибо еще раз заранее!

_________________
Вежливость - лучшее оружие чайника :-)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Пт, июл 10 2009, 23:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Так и не понял, что нужно.
Если просто заполнить какие-то поля в MM01 - то для этого подойдет batch-input.
Зачем некоторые поля заполнять после вызова MM01 - непонятно... :o

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Вс, июл 12 2009, 16:08 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
В качестве смутной идеи: в custom control'ах есть вид контейнера для "плавающих" окон, через него например, выводятся диаграммы в ALV. Т.е. это плавающее окно не перекрывает основное и в основном окне можно вводить данные. Правда, тогда вывод в это плавающее окно придется переделывать, использовать ALV или HTML-viewer.

_________________
С уважением, Сергей Королев


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Пн, июл 13 2009, 10:22 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Ну тут проблема не в заполнении полей в mm01, это просто описал область применения. Проблема в закрытии окна другой программы. Т.е. есть программа А, в которой в данный момент открыто окно/экран 9000. Я запускаю программу В, нажимаю в ней кнопку и окно/экран 9000 в программе А закрывается, ну или программа А полностью завершается. Реально ли сделать такое и если да, то может у кого идеи есть как?

_________________
Вежливость - лучшее оружие чайника :-)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Пн, июл 13 2009, 10:32 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
Можно режим закрыть aka sm04 :mrgreen:

_________________
Sapere aude!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Пн, июл 13 2009, 10:36 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Хм... А что, идея :!: Будем рыть :D

_________________
Вежливость - лучшее оружие чайника :-)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Пн, июл 13 2009, 11:20 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Зашел в тупик. Не могу понять.

Значит в sm04. Дошел до RSM04000_ALV->Form SM04_USER_CMD->Form modus_list. И тут идет следующее:
Code:
call 'ThUsrInfo' id 'OPCODE' field opcode_mode_count
    id 'TID' field tid
    id 'MODES' field modes.
  ...
  call screen 2000 starting at 4 4 ending at 62 modes.

В отладке после нажатия Ф5 не проваливаюсь в логику этого экрана. Зашел через SE38, в логике экрана прописаны несколько модулей:
Code:
PROCESS BEFORE OUTPUT.
LOOP.
    MODULE SYST-OKOPO.
ENDLOOP.
*
PROCESS AFTER INPUT.
MODULE SYST-OKEEP.
LOOP.
    MODULE SYST-OKOPI.
ENDLOOP.

Ни в один из них не могу провалиться, говорит не существуют. Но дело в том, что именно в них происходит обработка нажатой на экране кнопки "Modi close", т.к. после возвращения в подпрограмму modus_list выбраное окно уже закрыто. Как теперь? В структуру SYST даже смотрел, нет там ничего такого. В чем секрет?

_________________
Вежливость - лучшее оружие чайника :-)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Пн, июл 13 2009, 12:55 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 25 2008, 17:07
Сообщения: 144
Откуда: Казань
Пол: Мужской
Посмотри тут
Сергей Королёв
А можете поподробнее про плавающие контейнеры-экраны - мне это как раз щас необходимо...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Пн, июл 13 2009, 13:32 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Интересная тема, прочитал все 5 страниц. Только немного не то. Пользователя не надо вырубать, нужно по нажатию кнопки в одной программе завершать другую программу на этом же компе. Проблема только в том, что программа, которую надо закрыть, находится как-бы сказать в состоянии ожидания ввода (т.е. call screen и ждем нажатия). Поэтому ни через какие глобальные флаги ее не закрыть. Вроде как-то можно послать ей сообщение типа "Сизам-Закройся!". Только вот как......

_________________
Вежливость - лучшее оружие чайника :-)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой  Тема решена
СообщениеДобавлено: Вт, июл 14 2009, 08:31 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 25 2005, 15:06
Сообщения: 143
VID написал:
Интересная тема, прочитал все 5 страниц. Только немного не то. Пользователя не надо вырубать, нужно по нажатию кнопки в одной программе завершать другую программу на этом же компе. Проблема только в том, что программа, которую надо закрыть, находится как-бы сказать в состоянии ожидания ввода (т.е. call screen и ждем нажатия). Поэтому ни через какие глобальные флаги ее не закрыть. Вроде как-то можно послать ей сообщение типа "Сизам-Закройся!". Только вот как......

Навесь на первую прогу таймер и периодически проверяй какой-то флаг

См. тему viewtopic.php?f=13&t=2189&hilit=gui_timer


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Чт, июл 16 2009, 10:28 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Всем спасибо за помощь!!! :pivo:

_________________
Вежливость - лучшее оружие чайника :-)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Чт, июл 16 2009, 11:07 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 25 2008, 17:07
Сообщения: 144
Откуда: Казань
Пол: Мужской
Могли бы хоть отписать каким решением воспользовались.
Нельзя же быть таким эгоистом :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Завершение одной программы из другой
СообщениеДобавлено: Чт, июл 16 2009, 13:43 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Если честно, то пока еще не решил задачу. Проблема была в том, что в Workflow я использую NebenMethode (к сожалению знаю как это называется только по-немецки). Там я вызываю ФМ, который отображает окно с данными. Это окно нужно только для того, чтобы пользователь смог из него брать данные для создания нового материала (mm01 запускает задача). Так вот, проблема в том, что если я вызываю окно с помощью call screen... starting at..., то окно естественно показывается как popup, но при этом не отображается на панели задач. Т.е. если пользователь переходит на другое окно, то найти мое окно можно только с помощью Alt-Tab или если свернуть перекрывающие его окна. При таком положении дел не мудрено, что после создания материала пользователи будут забывать закрывать это окно. А если оно остается открытым, то при следующем вызове его из другого WorkItem вылетает ошибка. Т.е. его нужно не забывать закрывать. Вот и хотелось сделать, чтобы это происходило автоматически после создания материала. Обошелся тем, что стал отображать свое окно на весь экран (т.е. без starting at). При этом окно появляется на панели задач, но съедает при этом дополнительный Modus. Пока на этом остановился, но, после того как узнал, что есть класс таймера, хочу попробовать решить проблему с помощью него. Пока время на это нет, если получится позже сделать, обязательно выложу решение.

_________________
Вежливость - лучшее оружие чайника :-)


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

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


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

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


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

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