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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Отслеживание изменений
СообщениеДобавлено: Пн, окт 27 2008, 16:36 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, окт 27 2008, 16:21
Сообщения: 33
Откуда: Москва
Пол: Мужской
Попал в такую ситуацию.
Есть экран, отображающий некие данные. Эти данны могут просматривать одновременно сразу несколько человек и один из них может что то изменить и сохранить. У всех остальных должен экран обновится. Самое разумное по-моему это в момент сохранения генерить некое событие которое потом все остальные поймают и обновят экраны, но я не знаю как сгенерить глобабльное событие которое будет видно всем запущенным программам в системе.
У кого нибудь есть соображения на эту тему?


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Неверный подход.
Не проще просматривать дать всем, а менять в конкретный момент - только одному?
В стандарте такая логика и используется.


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

Зарегистрирован:
Пн, окт 27 2008, 16:21
Сообщения: 33
Откуда: Москва
Пол: Мужской
Не поможет :(
Суть проблемы заключается не в решении проблемы параллельного редактирования, а отслеживания изменений. Допустим один человек имеет права на редактирование карточки и сотня может только просматривать. Этот один отредактирует данные, а все остальные будут сидеть и смотреть на старые данные. Нужно отработать момент сохранеия данных.


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

Зарегистрирован:
Пт, июл 22 2005, 08:56
Сообщения: 158
_Sipo_ написал:
Не поможет :(
Суть проблемы заключается не в решении проблемы параллельного редактирования, а отслеживания изменений. Допустим один человек имеет права на редактирование карточки и сотня может только просматривать. Этот один отредактирует данные, а все остальные будут сидеть и смотреть на старые данные. Нужно отработать момент сохранеия данных.

можно... где-то здесь на форуме есть исходник чата (аськи) для R/3... вот там и можете подсмотреть реализацию поимки событий слушателями :)

_________________
C SAP
Изображение


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 27 2008, 17:43 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
часть написал(а):
можно... где-то здесь на форуме есть исходник чата (аськи) для R/3... вот там и можете подсмотреть реализацию поимки событий слушателями :)

Нельзя. Во всех этих программах принцип простой: одна машина запихивает данные в БД, остальные - с определенной периодичностью просматривают БД на предмет новых записей.
Т.е. клиентскую машину никто не дергает - она сама дергает. Единственный вариант, когда ее дергают - это что-нибудь вроде TH_POPUP. Но как работают С-функции мало кому известно.

ЗЫ Чат и аську в SAP уже делал. Поэтому заявляю официально :)


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

Зарегистрирован:
Пн, окт 27 2008, 16:21
Сообщения: 33
Откуда: Москва
Пол: Мужской
Спасибо всем кто ответил!


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

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
_Sipo_ написал:
Не поможет :(
Суть проблемы заключается не в решении проблемы параллельного редактирования, а отслеживания изменений. Допустим один человек имеет права на редактирование карточки и сотня может только просматривать. Этот один отредактирует данные, а все остальные будут сидеть и смотреть на старые данные. Нужно отработать момент сохранеия данных.
Стандарт, как правило, работает следующим образом - есть отдельные режимы просмотра, есть режимы редактирования. При переключении режимов происходит перечитывание данных, установка блокировок для редактируемых объектов и т.п. Это же сстема е для отображения биржевых котировок и т.п.
Ещё один вариант - переодическое перечитываие выбранных данных.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 27 2008, 18:02 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
Самое простое решение - Кнопка "Refresh" :P


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Вообще при здоровой идиотии задумка реализуема:
1. SM62 - создаем событие
2. SM36 - планируем джоб по событию
3. В SE24 пишем класс с одним статик событием и одним статик методом
4. В SE38 пишем программку, которая дергает метод класса
5. В методе класса дергаем событие класса
6. В джобе зовем программку
4. В программе отображения данных вешаем хэндлер на событие и рефрешим данные

:)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 28 2008, 02:28 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
Пономарев Артем написал:
4. В программе отображения данных вешаем хэндлер на событие и рефрешим данные
:)


Ето как делается?


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

Зарегистрирован:
Пт, июл 22 2005, 08:56
Сообщения: 158
John Doe написал:
часть написал(а):
можно... где-то здесь на форуме есть исходник чата (аськи) для R/3... вот там и можете подсмотреть реализацию поимки событий слушателями :)

Нельзя. Во всех этих программах принцип простой: одна машина запихивает данные в БД, остальные - с определенной периодичностью просматривают БД на предмет новых записей.
Т.е. клиентскую машину никто не дергает - она сама дергает. Единственный вариант, когда ее дергают - это что-нибудь вроде TH_POPUP. Но как работают С-функции мало кому известно.

ЗЫ Чат и аську в SAP уже делал. Поэтому заявляю официально :)

Ну это Вы так делали, а зарубежные коллеги по другому... Сайтов сейчас не вспомню, но их не сложно в гугле найти :) (Здесь проскакивала тема, поэтому и подумал, что так делали)

Вот еще можете ссылку посмотреть интересную:
http://sapboard.ru/forum/viewtopic.php?t=2189&highlight=sapevent

_________________
C SAP
Изображение


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

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
часть написал(а):
Ну это Вы так делали, а зарубежные коллеги по другому... Сайтов сейчас не вспомню, но их не сложно в гугле найти :) (Здесь проскакивала тема, поэтому и подумал, что так делали)

Вот еще можете ссылку посмотреть интересную:
http://sapboard.ru/forum/viewtopic.php?t=2189&highlight=sapevent

Я делал, как и все прочие. Кстати, по этой ссылке и делал, по примеру VGhost. Через sapevent для html.
Принцип - как описывался выше - запускается таймер (неважно через html или RFC_PING_AND_WAIT), по завершению он генерит событие на локальной машине, машина лезет в БД и забирает свежую информацию для отображения пользователю.
Еще раз повторю - извне машину никто не дергает. Читайте код более внимательно.

Добавил: Если кому интересно - установите Instant messenger for SAP. Это та самая "САП аська" из гугла.

Еще добавил: Всплывающие окна в этом мессенджере как раз реализованы через TH_POPUP (см.выше). Более "мирных" и применимых методов использования этой функции еще не нашлось.


Последний раз редактировалось John Doe Вт, окт 28 2008, 11:02, всего редактировалось 1 раз.

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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
DKiyanov написал:
Ето как делается?

Так как обычно.
Например у нас есть статик класс Z_CL. В нем есть статик метод METHOD и статик событие EVENT.
Тогда в коде отлавливание события будет выглядеть так:
Code:
CLASS cl_test DEFINITION.

  PUBLIC SECTION.

    METHODS: test FOR EVENT event OF z_cl.

ENDCLASS.

DATA: lcl_test TYPE REF TO cl_test.

CREATE OBJECT lcl_test.

SET HANDLER lcl_test->test.

CLASS cl_test IMPLEMENTATION.

  METHOD test.

    тут, собсно, обработка.   

  ENDMETHOD.

ENDCLASS.


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

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Пономарев Артем написал:
DKiyanov написал:
Ето как делается?

Так как обычно.
Например у нас есть статик класс Z_CL. В нем есть статик метод METHOD и статик событие EVENT.
И как с помощью SET HANDLER lcl_test->test отловить событие, сгенерированное другим отчётом, выполняемым под другим(возможно) пользователем и на другой(возможно) инстанции?

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


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Про пользователя надо проверить. Я сам такую цепочку, естественно, не делал. Это предположение.
А в остальном: не понимаю что смущает.
При изменении данных надо будет позвать событие из SM62, по которому запуститься джоб, в котором вызовется статик событие класса, на который повешен хэндлер в основной программе.
Сейчас быстренько прогоню у себя тест. Проверю.


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

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


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

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


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

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