Запуск транзакций из сообщений

В подробных текстах сообщений (тр. SE91) или в документации (тр. SO10) мы кроме непосредственно описания можем так же вставлять ссылки на транзакции или отчёты для их запуска, что позволяет упростить жизнь пользователям.

Однако у стандартной реализации данного механизма есть ряд ограничений:

  • Длинна ссылки ограничена, из-за чего передать все необходимые параметры для запуска транзакции может не получиться.
  • Нет возможности вставки интернет-ссылок более 70 символов (ограничение стандарта).
  • Нет возможности запуска отчёта с параметрами (только запуск с вариантом).

В статье рассмотрим каким образом можно расширить стандартные возможности чтобы избежать вышеуказанных ограничений.

Для того чтобы вставить ссылку в подробном тексте сообщения, необходимо перейти в меню:

При активации может возникнуть сообщение об ошибке, следует нажать кнопку игнорировать.

Для корректного отображения вставляемых ссылок следует отключить графический редактор:

Существует несколько стандартных возможности по вставке ссылок на транзакции/отчёты, разберём на примере запуска транзакции просмотра журнала (тр. SLG1) и отчёта автоматического поиска нот (тр. ANST):

  • Запуск транзакции без пропуска экрана (связь с транзакцией…): <DS:TRAN.SLG1(BALOBJ.&V1&)(BALSUBOBJ.&V2&)>Open SLG1</>
  • Запуск транзакции с пропуском экрана: <DS:TRAS.SLG1(BALOBJ.&V1&)>Run SLG1</>
  • Запуск отчёта (диалоговое выполнение отчёта…): <DS:REPO.ANST_SEARCH_TOOL.&V3&>Open ANST Report</>
  • Есть и другие варианты, например — немедленное планирование отчёта в фоне, но логика обработки там аналогичная.

BALOBJ и BALSUBOBJ это ID параметров, которые можно передавать через память при запуске транзакции (SET MEMORY ID…):

При запуске диалогового выполнения отчёта мы указываем имя варианта. Во всех случаях для большей гибкости параметры передаются из программы через параметры к сообщению (хотя можно задавать и статически).

Пример вызова сообщения:

Стандартная реализация обработки таких ссылок лежит в классе CL_EPSS_SAPEVENT, а вызов его происходит по настройке в ракурсе EPSSA2. Чтобы создать свой обработчик для своих типов ссылок, следует создать наследуемый от вышеуказанного класс и добавить запись в ракурс через тр. SM30:

При этом стандартную запись следует удалить, чтобы обеспечить корректность порядка вызовов (если этого не сделать, придётся вносить типы ссылок в настройку TDCLD). В наследуемом классе мы переопределим для Custom типов ссылок поведения обработчика — метод RESOLVE_LINK, для всех прочих типов ссылок будет отрабатывать стандартная логика.

Полный код нового класса:

Новые типы ссылок:

  • Запуск URL: <DS:ZURL.http://abap-blog.ru>Open ABAP Blog</>
  • Запуск отчёта с заданными параметрами экрана: <DS:ZREP.ANST_SEARCH_TOOL>Open ANST</>

Для запуска отчёта мы предварительно заполняем параметры отчёта:

Подводя итог можно сказать что таким образом мы можем реализовать как собственные типы ссылок, так и расширять функционал стандартных.

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

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