Оператор | Значение |
---|---|
CO | Contains Only: Истина, если операнд1 содержит только символы из операнда2. Оператор регистрозависимый. Операнды чувствительны к ведущим/последним пробелам. Если операнд2 типа string и initial, то результатом логического выражения будет ложь, за исключением тех случаев, когда операнд1 тоже типа string и initial. В таком случае результатом логического выражения всегда будет истина. Если логическое выражение ложь, то sy-fdpos будет содержать смещение первого символа в операнде1, которого нет в операнде2. Иначе, sy-fdpos будет содержать длину операнда1. |
CA | Contains Any: Истина, Если операнд1 содержит хотя бы один символ из операнда2. Оператор регистрозависимый. Операнды чувствительны к ведущим/последним пробелам. Если операнд1 или операнд2 типа string и initial, то результатом логического выражения всегда будет ложь. Если результат сравнения положительный, то sy-fdpos будет содержать смещение первого символа в операнде1, который содержит операнд2. Иначе, sy-fdpos будет содержать длину операнда1. |
CS | Contains String: Истина, если содержимое операнда2 содержится в операнде1. Оператор регистронезависимый. Операнды чувствительны к ведущим пробелам. Если операнд1 типа string и initial, или типа C и содержит только пробельные символы, результатом логического выражения будет ложь, за исключением когда операнд2 также типа string и initial, или типа C и содержит только пробельные символы. В этом случае результатом логического выражения будет истина. Если выражение истина, то sy-fdpos будет содержать смещение операнда2 в операнде1. Если результатом сравнения будет ложь, то sy-fdpos будет содержать длину операнда1. |
CP | Covers Pattern: Истина, если содержимое операнда2 удовлетворяет шаблону операнда1. Операнд2 может содержать шаблонные символы: «*» — любая строка и «+» — любой символ. Оператор не чувствителен к регистру. Операнды чувствительны к ведущим пробелам. Если результат сравнения положительный, то sy-fdpos будет содержать смещение операнда2. Иначе, sy-fdpos будет содержать длину операнда1. Для поиска шаблонных символов их необходимо экранировать путем добавления в операнд2 символа «#» перед требуемым символом. Экранированные символы в операнде2 чувствительны к регистру. |
CN | Contains Not Only: Эквивалент операнд1 NOT CO операнд2. |
NA | Contains Not Any: Эквивалент операнд1 NOT CA операнд2. |
NS | Contains No String: Эквивалент операнд1 NOT CS операнд2. |
NP | No Pattern: Эквивалент операнд1 NOT CP операнд2. |
Журнал приложений SAP
При выполнении программы могут возникать ситуации, которые необходимо донести до пользователя. Обычно это ошибки, предупреждения или просто сообщение об успешном выполнении процедуры. Эти сообщения не должны возникать по отдельности через команду MESSAGE. Их нужно собрать и отобразить все вместе в нужный момент. Такой набор сообщений называется журналом. Журнал содержит как заголовочную информацию (код транзакции, пользователь, дата и время создания и т.п.), так и позиционную (сами сообщения).
Для ведения журнала приложений SAP предоставляет мощный инструмент, называемый BAL (Basis Application Log). Журнал приложений применяется для отладки, поддержки и разработки как стандартный, так и Z-приложений. Лог особенно необходим при отладки фоновых задачах, веб-сервисов, рабочих процессов, т.е. где не всегда удобно, а иногда даже просто невозможно использовать стандартный отладчик.
Просмотреть журнал приложения можно в тр. SLG1.
Включить отладчик в модальном окне
При возникновении модального окна (сообщение типа I, POPUP-окно и т.п.) поле ввода SAP-команд становится неактивным, поэтому включить отладку через /H напрямую не получится
В подобной ситуации ABAP Debugger можно вызвать путем отправки команды отладки через файл.
Динамические точки остановки в ABAP-отладчике
Все программисты и большинство консультантов используют ABAP отладчик. ABAP Debugger нужен для отладки приложений. Типичная задача для отладчика — найти место возникновения какого-нибудь события. Для поиска нужного места можно использовать пошаговое выполнение программы, а можно установить динамическую точку прерывания. Динамическими (или условными) точками прерывания будем называть такие точки, которые срабатывают при определенном событии.
Наиболее популярные события, с которыми мне приходилось сталкиваться:
- Момент заполнения определенной переменной
- Вывод сообщения через команду MESSAGE
- Возникновение исключения
- Выбора данных из определенной таблицы
Z-программа для редактирования таблиц БД
В предыдущем посте рассматривались стандартные способы редактирования таблиц БД. Однако, политика некоторых компаний категорически запрещает использовать стандартные механизмы редактирования таблиц за исключением создания ракурсов ведения. Работая в одной транспортной компании я испытывал подобные трудности. Мне часто приходилось редактировать настроечные таблицы без ракурсов ведения. Установка флагов GD-EDIT и GD-SAPEDIT в SE16N не давало результата, функциональный модуль SE16N_INTERFACE был закрыт для использования. Эти ограничения мотивировали меня написать аналог SE16N.
Экран выбора таблицы
Ограничение начальных данных
Сохранение данных
Редактирование записей в таблицах БД стандартными средствами
Зачастую у консультантов и у программистов возникает необходимость изменить какие-либо данные в таблицах БД. Есть несколько способов редактирования данных в таблицах БД в GUI режиме. Самые популярные методы редактирования — это ракурсы ведения, изменения данных через SE16N и Z-программы, аналоги SE16N.
Читать дальше…