Комментарии по теме

«Тра­нза­кция SM02: сообщения в SAP системе»
Олег Башкатов:
С помощью ФМ TH_POPUP можно отправить сообщение конкретному пользователю :-)
«Тра­нспо­ртная система SAP для чайников»
Вячеслав Шиболов:
Хорошая метафора с коробками. Наглядная.
«Вызов тра­нза­кции SAP из писем в MS Outlook»
Олег Точенюк:
Из ABAP для работы с фронт-эндом можно воспользоваться классом CL_GUI_FRONTEND_SERVICES, там есть методы по работе с реестром виндовс.

Вызов транзакции SAP из писем в MS Outlook

3367
2

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

Первым шагом  в рассылке писем из SAP является настройка соединения с SMTP сервером в транзакции SCOT (Рис.1).

Рис.1 Соединение с SMTP сервером

Далее необходимо заставить Windows реагировать на ссылки т.е. вызывать именно SAPGui. Здесь следует воспользоваться командами реестра. Его можно запустить сочетанием клавиш Win+R и вводом команды “Regedit” (Рис.2).

Рис.2 Вызов редактор реестра

Можно добавить свою команду, например “sapxxx:”, где xxx – идентификатор системы, которую мы будем вызывать.

Рис.3 Путь к командам в реестре

Не вдаваясь в структуру реестра (Рис.4) остановимся на ветке “command”.

Рис.4 Структура реестра

В команде прописывается короткая ссылка к запускаемому приложению, а также параметры, которые этому приложению передаются.

Рис.5 Ссылка для запуска SAP

Ссылка на моем компьютере выглядит следующим образом:

C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe -language=ru -system=E11 -u=PATELEPKO -client=020 -GuiSize=Maximized -command=*ZEXECUTOR EVENT=%1

Здесь ZEXECUTOR это транзакция, которая вызывается при нажатии на ссылку. Через Event будут передаваться параметры в неё.

Для того чтобы сформировать этот реестр я использую VBS(Visual Basic Script). Интеграция с ним описана в моей предыдущей статье. Можно использовать и другие скриптовые языки, например JS(Java Script) и т.д. Предполагаю, что это возможно из Abap.

В зависимости от версии Windows короткий путь к SAPGui может быть разный. В продуктивной реализации это должно учитываться. В моем тестовом примере я пропишу путь константой.

Abap код ниже:

  METHOD set_registr.
    DATA: vb_script TYPE ole2_object,
          lv_module TYPE string,
          lv_sys    TYPE string,
          lv_cln    TYPE string,
          lv_uname  TYPE string.

    DEFINE vb.
      concatenate lv_module &1 CL_ABAP_CHAR_UTILITIES=>CR_LF into lv_module.
    END-OF-DEFINITION.

    DEFINE vb2.
      concatenate lv_module &1 &2 CL_ABAP_CHAR_UTILITIES=>CR_LF into lv_module.
    END-OF-DEFINITION.

    CREATE OBJECT vb_script 'MSScriptControl.ScriptControl'.

    SET PROPERTY OF vb_script 'AllowUI' = 1.
    SET PROPERTY OF vb_script 'Language' = 'VBScript'.

    vb 'function RegSystem(System, Client, UserName)'.
    vb 'Set WshShell = CreateObject("WScript.Shell")'.
    vb 'WshShell.RegWrite "HKCU\Software\Classes\saptst\", "URL:sapevent Protocol", "REG_SZ"'.
    vb 'WshShell.RegWrite "HKCU\Software\Classes\saptst\URL Protocol","", "REG_SZ"'.
    vb 'WshShell.RegWrite "HKCU\Software\Classes\saptst\DefaultIcon\", "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe 0", "REG_SZ"'.
    vb2 'WshShell.RegWrite "HKCU\Software\Classes\saptst\shell\open\command\", "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe -'

Ограниченный доступ

Для прочтения полной версии статьи необходимо зайти как зарегистрированный пользователь.

Комментарии:

Андрей Алхимченков (Рейтинг: 114) 11:04, 22 апреля 2015

Все это как-то сложно.
Гораздо проще высылать ярлык SAP Logon транзакции для запуска из Outlook.
 
Для создания ярлыка используется ФМ "SWN_CREATE_SHORTCUT".
Потом добавляете для в ATTACH для рассылки и пользователь вызывает необходимую транзакцию.
11:20, 22 апреля 2015

Павел Телепко (Рейтинг: 996)

Согласен. Использование этого ФМ это популярный вариант. А если пользователи не хотят, чтобы были аттачменты? Кстати, не знаю как сделать, чтобы при уже открытой системе при запуске файлика он не спрашивал пароль? Что делать, если система 4.6C и "SWN_CREATE_SHORTCUT" нету :)
Да и сложность немного падает, если запись в регистр делать через метод CL_GUI_FRONTEND_SERVICES=>REGISTRY_SET_VALUE.
 
Есть минус в описанном методе в том, что пользователю нужно заранее сделать запись в реестр. А так мне кажется у обоих способов есть свои плюсы и минусы...

Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП»