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

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


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

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


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

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