Запуск транзакций из SBWP

Иногда нам необходимо оповестить пользователя о каком-либо событии по внутренней почте, с возможностью его перехода к заданной транзакции и с учётом контекста оповещения, т.е. с заполнением параметров актуальных для данного оповещения.

Во внутренней почте мы можем сформировать ссылку на бизнес объект (транзакция SWO1), а уже у бизнес объекта реализовать метод display для запуска нужной нам транзакции.

Давайте разберёмся как это сделать.

Для начала переходим в транзакцию SWO1 и создаём новый объект — ZSMTRCALL:

Для запуска транзакции определим ключевое поле — ид. транзакции:

Можно определить на базе стандартной таблицы TSTC:

При запуске необходимо каким-то образом определять контекст запуска, для этого у нашего бизнес объекта определим ключевое поле в виде GUID-a:

Переопределим метод display:

И перейдём к коду:

Код реализации метода display:

Переведём статус БО (implemented затем released):

И сгенерируем нажав на красную кнопку генерации.

Исходя из кода, в запускаемой транзакции должен быть SET/GET параметр с ID контекста, назовём его ZSMGUID, перейдём в SE80 и создадим параметр:

В транзакции относительно значения параметра привязанного к SET/GET параметру будет считываться контекст запуска (значения экрана выбора как правило).

Само сохранение и чтение контекста может быть реализовано множеством способов:

  • своя Z таблица с хранением значений экрана выбора,
  • сохранение варианта в программе, тогда логичнее будет сделать не CALL TRANSACTION, а SUBMIT и ID контекста заменить на ID варианта,
  • сохранение в INDX таблице или подобной,
  • использовать какое-либо другое стандартное решение.

В данном примере мы только выведем ID контекста, код программы:

Создадим транзакцию к программе — ZSM_CALL_DEMO

Уже сейчас мы можем протестировать наш БО, передав в него ключ в виде Транзакции и ID контекста, после чего вызвать метод display:

Если всё сделано правильно, отобразиться наш отчёт с выводом GUID-a контекста.

Если Вам достаточно лишь запустить транзакцию, необходимости в создании своего БО нет, т.к. есть несколько уже существующих, например: CUST_TRAN.

Далее воспользуемся тестовой программой отправки письма в SBWP чтобы убедиться в корректном запуске транзакции из внутренней почты:

В программе отправки мы формируем HTML письмо со ссылкой на SAP объект с помощью специального префикса sap-object. После запуска Вы можете зайти в SBWP и убедиться в том, что ссылка работает.

Альтернативное решение

Если Вам не требуется формировать ссылку непосредственно в тексте письма, можно не создавать бизнес объект, а вместо этого сформировать вложение в виде ярлыка для запуска транзакции следующим образом:

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *