Создание и обработка собственных пунктов GOS-меню
Для добавления «собственных» пунктов в GOS меню нужно выполнить небольшую настройку и создать пользовательскую («собственную») реализацию класса, который будет «отвечать» за созданный вами пункт меню.
Для добавления «собственных» пунктов в GOS меню нужно выполнить небольшую настройку и создать пользовательскую («собственную») реализацию класса, который будет «отвечать» за созданный вами пункт меню.
Для начала необходимо определить объект, который будет «отвечать» за ваш пункт меню. Это выполняется путем создания новой записи в ракурсе ведения SM30: SGOSATTR. Параметры создаваемого объекта Рис.1.
Рис.1 SGOSATTR-1
Имя сервиса, по вашему выбору, начинается с пользовательского символа Z или Y. Описание и подсказка тоже не должны вызвать проблем. Далее необходимо указать класс реализации, который будет обрабатывать ваш пункт меню. Класс создадим позже, пока просто придумаем имя. Тип сервиса выбираем 1. Иконку любую из списка. А вот в поле «Следующий сервис», нужно указать код сервиса CREATE_ATTA, также необходимо отметить галкой пункт «Управление». В принципе, следующий сервис, это имя пункта меню перед которым будет добавлен наш создаваемый пункт. Стандартно, первым пунктом GOS-меню идет сервис создания приложений CREATE_ATTA, вот перед ним мы и выполним добавление нашего пункта меню.
Затем с версии 7.0 необходимо еще прописать созданный нами сервис в ракурсе, где устанавливается активность компонента. Для более ранних версий, этого пункта настройки, насколько мне известно, не было, пример на Рис.2. Из основных параметров задаем признак активности компонента, повторяем имя класса реализации сервиса и метку «Управление».
Примечание: Метка «Управление» отвечает за создание специального контейнера в котором вы можете разместить например свою ALV-таблицу с каким-то параметрами, например, переченм дполнительных документов, связанных с вашим GOS-объектом. Я рекомендую эту «галку» установить, так как если вам не придется использвать предлагаемый контйенер, вы всегда сможете в методе обработки отказатся от его появления на экране, вернув соответсвтующее сообщение. Пример будет приведен ниже.
Рис.2 SGOSCUST-1
На этом подготовительная часть готова, нужно перейти к реализации класса, обрабатывающего сообщения созданного пункта меню. Фактически, необходимо создать реализацию наследника класса CL_GOS_SERVICE. Для этого в транзакции SE24 – Создание классов создадим объявленный ранее класс Z_AOT_XECM_OPEN_CARD, Рис.3.
Рис.3 SE24-1
В этом классе необходимо переопределить по минимуму 2 метода. Это EXECUTE и CHECK_STATUS. Метод EXECUTE отвечает за вывод того, что вы хотите вывести в отдельном окне GOS
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти
Обсуждения 1
Комментарий от
Олег Башкатов
| 18 января 2016, 14:57
здесь нужно отметить, что:
1) нужно указать тот сервис, перед которым должен появится новый пункт меню
и, что важнее: следующий сервис по всем пунктам только один, иначе SAP не выводит его на экран (по крайней мере, так в Ehp7).
То есть если мы хотим вставить наш пункт GOS-меню между пунктом
CREATE_ATTA (следующий сервис VIEW_ATTA)
VIEW_ATTA (следующий сервис PERS_NOTE), то нужно
изменить значение поля следующий сервис в пункте CREATE_ATTA на наш ZGOS_MENU, а в меню ZGOS_MENU следующим сервисом поставить VIEW_ATTA