Практическая работа с механизмами расширения системы (Enhancement)
В статье изложены принципы работы нового, начиная с версии 6.0, механизма расширения системы, с использованием точки расширения Enhancement. Также приведен пример создания расширения и несколько примеров практического использования расширений.
Начиная с версии ECC 6.0 появился замечательный механизм расширения (Enhancement), однако, это и самый простой способ «поломать систему об колено так как никакого контроля за тем, что и как вы реализуете в точке расширения, система не осуществляет. Автор предупреждает: то, что вы попробуете сделать в своей системе по данному описанию может стать вашей «головной болью». В таком случае, не пытайтесь «валить с больной головы на здоровую (то есть мою)» Немного теории, сформулированной после прочтения статьи «Новая концепция расширений как метод совершенствования программ SAP без их модификации», автор Майкл Акер (Michael Acker), SAP Professional Journal 2008 год. Остановлюсь только на ключевых моментах. Тем, кого заинтересуют подробности, рекомендую прочтение оригинала статьи или посещения сайта http://help.sap.com. Enhancement Spot, фигурально говоря, - новый механизм экзитов в системе, фактически, система предоставляет новую возможность расширения стандартной функциональности без получения ключей модификации на объекты системы. Так же гарантируется, что ни при каких обновлениях системы, сделанные вами расширения, не будут затерты, хотя при этом и не гарантируется, что они останутся работоспособными. На данный момент концепция расширений поддерживает следующие расширения объектов системы:
Сами точки расширений бывают двух типов:
На этом, с теорией, думаю, можно остановится и перейти к примерам реализации. Будут приведены примеры, «близкие к жизни». Пример 1. Возврат результата выполнения стандартного отчета в свою программу.В функциональности ММ, для получения данных по запасам на произвольную дату в прошлых периодах, есть специальный отчет MB5B. Одному из разработчиков потребовалось получить список документов формирующих остатки, так же как это получает отчет MB5B. Как вариант, можно и самому по таблицам получить такие данные, посмотрев на логику работы отчета, но существует возможность готовым решение. Для этого нам нужно в своей программе, вызвать отчет, выполняющийся при вызове транзакции MB5B, например через SUBMIT с параметрами, а затем, после вызова получить данные выбранные отчетом в свою программу. Например, я запустил транзакцию MB5B, с таким вот простым вариантом, Рис.3.
Скорее всего, программа состоит из блока выбора данных, который в конечном итоге заполняет какую-то внутреннюю таблицу и затем блока, который выводит эту таблицу на экран. Путем работы с отладчиком и кодом отчета, довольно быстро можно найти нужное место, это инклуд RM07MLBD_FORM_02 подпрограмма: «Form LISTAUSGABE1»; теперь если поставить точку останова, то видно, что в данной подпрограмме доступна внутренняя таблица g_t_belege1, которая содержит необходимые данные, Рис.4.
Итак, нам надо получить данные этой таблицы в свою программу. Воспользуемся технологией IMPORT/EXPORT и новым предложением от SAP, называемым технология расширений. Идем в транзакцию SE38 и вызываем для просмотра этот инклуд. Затем выбираем по меню: "Обработка" – "Операции расширения" – "Показать предполагаемые опции расширения", Рис.5, после чего фактически в каждой подпрограмме будут выделены точки входа, а значит можно туда «вписать» свой код.
Точки будут подсвечены следующим образом, как на Рис.6.
Далее ставим курсор на выбранную точку расширения и выбираем по меню "Программа" – "Расширить" или как на рисунке жмем соответствующую кнопку на панели инструментов (выделено красным). Теперь снова попросим показать точки расширения и должно получиться что-то из Рис.7, т.е. у нас появилась возможность модификации кода программы.
Затем становимся на нужную нам точку в начале подпрограммы LISTAUSGABE1 (почему в начале расскажу ниже), и правой кнопкой мыши по контекстному меню выбираем "Enhancement Implemantation" – "Создать расширение", как на Рис.8. |
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти
Обсуждения 5
Комментарий от
Andrey Bobkov
| 29 июня 2013, 08:19
Комментарий от
Олег Точенюк
| 30 июня 2013, 14:55
Andrey Bobkov 29 июня 2013, 08:19
Много грамматических ошибок, неприятно читать.
Комментарий от
Мурат Бидов
| 18 октября 2013, 10:44
Олег Точенюк 30 июня 2013, 14:55
Да кто ж вас заставлял то читать, не нужно было так мучиться. Классику читайте что ли. Кстати, если уж быть совсем по делу, то указали бы на множество грамматических ошибок, а то корректоры сайта наверное тоже ушли рыдать горькими слезами.
Комментарий от
Олег Точенюк
| 04 ноября 2013, 15:32
Динамический: enhancement-point lmr1mfa0_01 spots es_saplmr1m.
или:
Статический: enhancement-point lmr1mfa0_01 spots es_saplmr1m static.
Само собой данные объявления применяются только при явных энхансментах - Explicit Enhancement Options.
Разница между этими объявлениями заключается в следующем.
Примечание: Я говорил, что техника Enhancement создана в первую очередь для возможности реализации бизнес-функций, а не для нас, простых пользователей системы.
Так вот бизнес-функция может находиться в состоянии "активно" или "в ожидании" (деактивирована), просмотреть статусы бизнес функций можно в транзакции SFW5. Бизнес-функции представляют собой собственно говоря набор Enhancement-тов, т.е. точек расширений, который могут быть декларированы в коде существующих транзакций системы как статические или динамические. Так вот если Enhancement объявлен как статический, но сама бизнес-функция не активирована, вы можете создать реализацию такого энхансмента и система будет обрабатывать написанный вами код. Если же энхансмент объявлен как динамический и бизнес-фукнция не активирована, то выполнять реализацию кода в таком энхансменте бесполезно, так как вызваться ваш код не будет, пока вы не активируете соответствующую бизнес-функцию в которую включен данный энхансмент.
PS: Это важный момент, если вы используете технику явных энхнасментов.
Комментарий от
Анна Новикова
| 31 марта 2023, 06:52