Вендор с завидной частотой выпускает обновления к SAP Logon, исправляя различные ошибки, выявляемые пользователями и самими разработчиками в ходе работы. Возникающие программные ошибки/недочеты в SAP Logon, хоть и косвенно, но могут влиять на работу ваших разработок. Проявляться это может через некорректное поведение работы программы у того или иного пользователя. Особенно остро стоит данная ситуация на предприятиях, где слежение за программным обеспечением производится не централизованно, что влечет за собой ситуацию, в которой у пользователей установлены разные версии клиентов и патчей (включая уже не поддерживаемые самим вендором).
Существует возможность посредством ABAP выяснить, какая версия клиента и патча наличествует у пользователя.
Решение вопроса
Выполните вызов метода get_gui_version класса cl_gui_frontend_services в своей разработке
В результате вызова указанного метода возможно получить приблизительно следующую информацию
SAP Введение урок 1
Источник: signatov.com
Дек 19, 2018 | Нет комментариев
Журнал приложений SAP
При выполнении программы могут возникать ситуации, которые необходимо донести до пользователя. Обычно это ошибки, предупреждения или просто сообщение об успешном выполнении процедуры. Эти сообщения не должны возникать по отдельности через команду MESSAGE. Их нужно собрать и отобразить все вместе в нужный момент. Такой набор сообщений называется журналом.
Журнал содержит как заголовочную информацию (код транзакции, пользователь, дата и время создания и т.п.), так и позиционную (сами сообщения).
Для ведения журнала приложений SAP предоставляет мощный инструмент, называемый BAL (Basis Application Log). Журнал приложений применяется для отладки, поддержки и разработки как стандартный, так и Z-приложений. Лог особенно необходим при отладки фоновых задачах, веб-сервисов, рабочих процессов, т.е. где не всегда удобно, а иногда даже просто невозможно использовать стандартный отладчик.
Просмотреть журнал приложения можно в тр. SLG1.
Реализация журнала приложений содержится в пакете SZAL.
Принцип работы
Весь цикл работы журнала приложений можно свести к 3-м этапам:
- Создание/загрузка журнала. Для создания экземпляра лога используется функциональный модуль BAL_LOG_CREATE. На вход в ФМ передается структура типа BAL_S_LOG, содержащая заголовочную информацию. ФМ возвращает ID журнала приложений BALLOGHNDL.
- Добавление сообщений. Для добавления сообщений используется функциональный модуль BAL_LOG_MSG_ADD. На вход ФМ передается ID журнала BALLOGHNDL, а также структура типа BAL_S_MSG содержащая информацию о сообщении.
- Сохранение/отображение журнала. За отображения лога отвечает функциональный модуль BAL_DSP_LOG_DISPLAY.
Пример простого использования журнала приложений
Транзакции SAP
* BAL Log: Журнал приложений SAP
* http://abap4.ru/?p=283
REPORT zbal _ log _ example1 .
START-OF-SELECTION .
PERFORM main .
DATA ls _ log TYPE bal _ s _ log .
DATA ls _ msg TYPE bal _ s _ msg .
DATA lv _ hnd TYPE balloghndl .
DATA lt _ hnd TYPE bal _ t _ logh .
DATA lv _ dummy TYPE string .
ls _ log — extnumber = ‘Журнал приложений’ .
ls _ log — aluser = sy — uname .
ls _ log — alprog = sy — repid .
CALL FUNCTION ‘BAL_LOG_CREATE’
i _ s _ log = ls _ log
e _ log _ handle = lv _ hnd .
MESSAGE s191 ( bl ) INTO lv _ dummy .
ls _ msg — msgty = sy — msgty .
ls _ msg — msgid = sy — msgid .
ls _ msg — msgno = sy — msgno .
ls _ msg — msgv1 = sy — msgv1 .
ls _ msg — msgv2 = sy — msgv2 .
ls _ msg — msgv3 = sy — msgv3 .
ls _ msg — msgv4 = sy — msgv4 .
CALL FUNCTION ‘BAL_LOG_MSG_ADD’
i _ s _ msg = ls _ msg
i _ log _ handle = lv _ hnd .
APPEND lv _ hnd TO lt _ hnd .
CALL FUNCTION ‘BAL_DSP_LOG_DISPLAY’
i _ t _ log _ handle = lt _ hnd .
Результат работы программы
Структура заголовка
1 | EXTNUMBER | Внешний идентификатор. Используется в качестве критериев поиска нужного журнала. |
2 | OBJECT | Имя объекта. Объект журнала приложений, применяется при поиске в тр. SLG1. |
3 | SUBOBJECT | Подобъект. Объект журнала приложений, применяется при поиске в тр. SLG1. |
4 | ALDATE | Дата |
5 | ALTIME | Время |
6 | ALUSER | Имя пользователя |
7 | ALTCODE | Код транзакции |
8 | ALPROG | Имя программы |
9 | ALMODE | Режим работы (B — фоновый; D — диалоговый; I — пакетный ввод; A — авто) |
10 | ALCHDATE | Дата последнего изменения |
11 | ALCHTIME | Время последнего изменения |
12 | ALCHUSER | Пользователь, изменивший журнал |
13 | ALDATE_DEL | Дата истечения срока хранения |
14 | DEL_BEFORE | Журнал сохраняется до истечения срока хранения |
15 | ALSTATE | Статус обработки (1 — подлежит обработке; 2 — в обработке; 3 — исполнено) |
16 | CONTEXT | Контекст. Используется для привязки контекста к сообщению. |
17 | PARAMS | Параметры. Используется для детализации сообщений. |
В журнале приложений эти поля будут выглядеть следующим образом
Структура сообщения
1 | MSGTY | Тип сообщения |
2 | MSGID | Класс сообщений |
3 | MSGNO | Номер сообщения |
4 | MSGV1 | Переменная сообщения |
5 | MSGV2 | Переменная сообщения |
6 | MSGV3 | Переменная сообщения |
7 | MSGV4 | Переменная сообщения |
8 | MSGV1_SRC | Происхождение переменных сообщения |
9 | MSGV2_SRC | Происхождение переменных сообщения |
10 | MSGV3_SRC | Происхождение переменных сообщения |
11 | MSGV4_SRC | Происхождение переменных сообщения |
12 | DETLEVEL | Степень детализации (число от 1 до 9) |
13 | PROBCLASS | Класс проблем сообщения (1 — особо важное; 2 — важное; 3 — среднее; 4 — дополнительная информация) |
14 | ALSORT | Критерий сортировки/группировка |
15 | TIME_STMP | Метка времени сообщения |
16 | MSG_COUNT | Число накопленных сообщений |
17 | CONTEXT | Контекст. Используется для привязки контекста к сообщению. |
18 | PARAMS | Параметры. Используется для детализации сообщений. |
Параметры MSGV1_SRC, MSGV2_SRC, MSGV3_SRC, MSGV4_SRC используются для анализа сообщений. В них можно записывать параметры или место запуска программы. Например, у нас есть 2 реализации одной и той же операции. Сообщения в журналах будут одинаковыми. Чтобы отличить происхождения сообщений, можно записать служебную информацию в переменные происхождения.
Параметры DETLEVEL, PROBCLASS, ALSORT используются для фильтрации и сортировки сообщений.
Параметр MSG_COUNT является счетчиком накопленных сообщений, в случае если отправляются одинаковые сообщения.
В журнале приложений эти поля будут выглядеть следующим образом
Пример стандартной демо-программы SBAL_DEMO_01.
Детализация сообщений
Сообщения можно детализировать. Процесс детализации заключается в следующем: в параметр PARAMS заполняются необходимые переменные и программу обратной связи для обработки детализации. При двойном клике на поле детализации вызывается программа обратной связи, в которую передаются необходимые параметры.
Параметр PARAMS является структурой типа BAL_S_PARM.
1 | T_PAR | Таблица параметров с именами параметров и их значениями |
2 | CALLBACK | Структура для обратной связи |
3 | ALTEXT | Текст из SE61, в случае если длины текста T100 не достаточно |
Программа обратной связи представляет собой функциональный модуль или подпрограмму, принимающие на вход таблицу I_T_PARAMS типа BAL_T_PAR.
В случае, если необходимо вызывать ФМ, то CALLBACK должна быть заполнена следующим образом:
CALLBACK-USEREXITT = ‘F’.
CALLBACK-USEREXITF = ИМЯ_ФМ.
В случае, если необходимо вызывать подпрограмму, то CALLBACK должна быть заполнена следующим образом:
CALLBACK-USEREXITP = ИМЯ_ПРОГРАММЫ.
CALLBACK-USEREXITF = ИМЯ_ПОДПРОГРАММЫ.
Пример журнала приложений с деталицацией
Источник: abap4.ru