При работе с сообщениями иногда может возникнуть необходимость настройки типов выводимых сообщений (было информационным, а захотели сделать сообщением об ошибке, либо вообще отключить вывод сообщения). Ниже будет подробнее разобрано как это реализовать.
Рассмотрим небольшой пример. Есть следующий класс сообщений ZMESSAGES (транзакция SE91):
Программа:
1 2 3 4 5 6 7 8 |
PARAMETERS: p_param TYPE char10. START-OF-SELECTION. IF p_param IS INITIAL. MESSAGE e000(ZMESSAGES). ENDIF. WRITE: 'Параметр:', p_param. |
Если на экране выбора не задать входной параметр, программа сообщит нам об этом и прекратит дальнейшее выполнение:
Сделаем нашу программу более универсальной позволив настраивать тип выводимого сообщения через стандартные транзакции. Запускаем транзакцию OBMSG и добавляем новую прикладную область (класс сообщений):
Для прикладной области настраиваем сообщение. На данном шаге необходимо указать допустимые типы сообщений (индикатор выключить убирает возможность ограничения допустимых сообщений в последующей настройке OBA5):
Далее необходимо переопределить сообщение в транзакции OBA5 (можем определить сообщение для конкретного пользователя, а так же отдельно для пакетного ввода и диалогового режима):
Изменяем программу следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 |
PARAMETERS: p_param TYPE char10. START-OF-SELECTION. IF p_param IS INITIAL. CALL FUNCTION 'CUSTOMIZED_MESSAGE' EXPORTING i_arbgb = 'ZMESSAGES' i_msgnr = '000' i_dtype = 'E'. " Необходимо указание, если не настроено в OBA5 ENDIF. WRITE: 'Параметр:', p_param. |
Модуль CUSTOMIZED_MESSAGE вызывает сообщение с настроенным типом, либо не вызывает вовсе если в качестве типа установлен «-». Для того чтобы определить тип сообщения, без его вызова можно использовать ФМ: READ_CUSTOMIZED_MESSAGE.
Для того чтобы пользователь знал о том, что можно перенастроить сообщение, в подробный текст необходимо вставить следующую команду (INCLUDE ‘CUSTOMIZED_MESSAGE_INFO’ OBJECT DOKU ID TX):
Тогда при выводе сообщения в подробном тексте пользователь увидит следующее:
❤ Мне нравится