Текущее время: Чт, апр 25 2024, 21:53

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


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


ВНИМАНИЕ! Прежде чем задавать вопрос, ознакомьтесь со ссылками ниже:

Вопросы по отличиям версий SAP, Add-On, EHP - сюда
Вопросы по SAP Front End (SAPlogon, SAPgui, guiXT и т.д.) - сюда
Вопросы по LSMW - сюда
Вопросы по архивации в SAP - сюда
Вопросы по SAP GRC - сюда
Вопросы по SAP Business Workplace (почте SAP) и SAP Office - сюда
Вопросы по miniSAP (SAP mini basis) - сюда
Вопросы по SAP HANA - сюда
Вопросы по лицензированию продуктов SAP - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Пользователь не хочет видеть сообщения из sm02
СообщениеДобавлено: Пн, авг 03 2020, 15:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 03 2010, 16:24
Сообщения: 125
Откуда: Липецк
Пол: Женский
Здравствуйте.
Мы запустили робота, он работает под диалоговым пользователем (такая технология). В период закрытия периода пользователи любят оповещать всех через sm02, а робот ломается. Кто-нибудь отключал системные сообщения для одного диалогового пользователя?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Пользователь не хочет видеть сообщения из sm02
СообщениеДобавлено: Вт, авг 04 2020, 14:37 
Модератор
Модератор

Зарегистрирован:
Пт, окт 06 2006, 15:20
Сообщения: 338
Откуда: Москва
Пол: Мужской
Я бы в вашей ситуации просил помощь у абаперов.
Сделать версию zsm02 , скопировав весь код из стандарта и впихнуть в него проверку на вашего робота.
Пользователей переучить с sm02 на zsm02.
Использование sm02 пользователям в продуктиве запретить.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Пользователь не хочет видеть сообщения из sm02
СообщениеДобавлено: Вт, авг 04 2020, 20:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1571
Откуда: Пермь
Пол: Мужской
В SM02 в явном виде выбор пользователей не осуществляется. Поэтому мне кажется, что ZSM02 профита не даст.

Но обратите внимание на логику в ФМ SM02_GET_UNREAD_MESSAGE (и до него по стеку, если отладите).
Все сводится в итоге к таблицам TEMSG (системные сообщения) и TEMSGU (последнее считанное сообщение пользователя).
Дальше логика такая: при отправке нового системного сообщения предварительно чистятся все старые сообщения из TEMSG (просрочка), а также из TEMSGU удаляются все сообщения, которые пользователь уже прочитал ранее (до текущего дня sy-datum).
Из TEMSG выбираются все актуальные сообщения и сравниваются с тем, что пользователь прочитал последним (TEMSGU-BID).
Все непрочитанные сообщения образуют таблицу сообщений и далее пошел popup.
Но фишка в том, что из TEMSG выбираются только сообщения с номером ID > LAST_USR_EMSG.
К примеру, последнее прочитанное сообщение (роботом) = 102. Запущено системное сообщение 103. 103 > 102. Поэтому робот получит 103, таблица TEMSGU обновится, а робот сломается.

Можно было бы внутри SM02_GET_UNREAD_MESSAGE расширить в самом начале и дать последний номер прочитанного роботом сообщения = 999.999. Но проблема в том, что ФМ не расширяется.

И поэтому на момент создания нового системного сообщения достаточно обеспечить для робота наличие записи в TEMSGU с текущей датой и номером сообщения = 999.999. Но кто этот герой, который будет апдейтить TEMSGU перед отправкой нового системного? ПРАВИЛЬНО. Это ночной джоб в 3 ночи, который просто будет для робота инсертить в таблицу TEMSGU строки с прочитанным сообщением 999.999 на неделю вперед. Они будут постепенно устаревать и удаляться самостоятельно по мере отправки новых сообщений. Почему желательно заложить некоторый диапазон времени наперед: потому что если робот активности в день N не проявлял, то как только начнет проявлять в день N+1, его строка из TEMSGU с днем N удалится и он получит сообщение, то есть сломается. Поэтому ночная проходка в 3 часа ночи с горизонтом на день N + 1 день.

Попробуйте. Мне кажется, что это выход из ситуации с минимальными потерями. Вы остаетесь на стандартном SM02, а abap для ночного джоба составляет 4 строки.

updated.
Проверил еще раз. Сообщение не придет, но в TEMSGU последнее полученное сообщение перетрется новым значением. Это означает, что следующее сообщение (отправленное в этот же день) роботу будет доставлено. Досадно. Надо думать дальше. Если обойти стандартные мозги не получится (уперся пока, не могу проверить), то ZSM02 в целом уже и не выглядит плохо. В самом начале ZSM02 создавать такую строку для робота в TEMSGU, апдейтить таблицу и потом надеяться, что в этот самый момент робот не ходил по диалогам. Потому что если он попадет на момент >= апдейта таблицы и <= обновления таблиц в ZSM02, то он затрет свое последнее сообщение и в итоге его получит. Других способов исключить робота в ZSM02 я не вижу: там нельзя управлять списком адресатов. Отправка сообщения инициализируется в любой момент, например, достаточно щелкнуть правой кнопкой мыши, запустить транзакцию etc.

_________________
Алё, это Пакистан? Нам нужен один килограмм


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

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


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

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


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

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