Инструкция по использованию отладчика / Сапёр / Статьи / База знаний / SAPLa... Стр. 1 из 7 База знаний Инструкция по использованию отладчика Власта Венц Использование отладчика (Debugger) Введение: назначение отладчика Как известно, отладчик предназначен для пошагового выполнения программ с целью наблюдения за значением переменных и управления их значениями. Его используют при: 1. Поиске ошибок в работе программы, 2. Определении последовательности обращений к данным, 3. Отслеживании алгоритма расчета значений. Существуют несколько способов запуска исполнения программного кода в режиме отладки: 1. Из специализированных транзакций a. Из навигатора объектов SE80 – Program – Test –Debugging b. Из ABAP- редактора SE38 – Program – Execute – Debugging (Рис.1); c. Из исходного кода Program – Test – Debugging; d. Установка точек прерывания через ABAP - редактор 2. В любом окне системы: a. Из любого экрана System – Utilities – Debug ABAP b. Из любого экрана вводом «/h» в командном окне (Рис.2) Рис. 1 Транзакция SE38 –запуск отладчика Рис. 2 Запуск отладчика в любом окне системы https://sapland.ru/kb/articles/stats/instruktsiya-po-ispolizovaniyu-otladchika.html 19.11.2018 Инструкция по использованию отладчика / Сапёр / Статьи / База знаний / SAPLa... Стр. 2 из 7 В том случае, когда известно имя выполняемой программы, удобно воспользоваться ABAP-редактором. Если же имя выполняемой программы неизвестно, либо программа имеет сложную структуру вызова, то удобнее воспользоваться вызовом отладчика с помощью команды «/h». Вход в отладчик (возможен двумя путями): Установка точек прерывания в исполняемой программе Выполнение программы в режиме отладки. Точка прерывания – сигнал в строке кода, который вызывает прекращение выполнения программы на этой строке и запускает ABAP-отладчик. Перезапуск отладчика Находясь в отладчике, необходимо выбрать: Debugging ® Restart. При этом режим отладки прекратится, и система вызовет начальный экран, из которого отладчик был запущен. Выключение отладчика (продолжить выполнение программы в обычном режиме) Без выхода из отлаживаемой программы: Debugging ® Debugging off Выход из отладчика с выходом из программы Находясь в отладчике: Debugging ® Exit Выход из режима отладки с последующим выполнением программы имеет особенность – режим отладки может быть возобновлен в случае наличия точек прерывания в модуле программы. Интерфейс Отображение исходного кода Позиционирование на указанном столбце кода Ввести номер столбца и нажать Enter. Позиционирование на указанной строке кода Ввести номер столбца и нажать Enter. Увеличение фрагмента кода Нажать кнопку . Код отображается на весь экран. Позиционирование на текущем операторе Нажать кнопку . Доступные способы отображения данных Fields – демонстрация/изменение содержимого полей Table – демонстрация/изменение содержимого внутренних таблиц Breakpoint – демонстрация /удаление до последующих 30 точек прерывания. Watchpoint – демонстрация/изменение/удаление точек наблюдения Calls – демонстрация перечня событий программы и последовательности их вызова до момента точки прерывания. Последнее вызванное событие отображается в верху списка. При завершении события оно удаляется из списка. Overview – обзор структуры программы: события, подпрограммы и модули. Settings – текущие настройки отладчика. Управление отладкой Выполнить отдельный шаг (F5) или кнопка или меню Debugging ® Control ® Single Step Позволяет выполнить оператор в текущей строке с заходом в вызываемую подпрограмму/функцию/программу (Рис. 3) https://sapland.ru/kb/articles/stats/instruktsiya-po-ispolizovaniyu-otladchika.html 19.11.2018 Инструкция по использованию отладчика / Сапёр / Статьи / База знаний / SAPLa... Стр. 3 из 7 Рис. 3 Отладчик Выполнить (F6) или кнопка или меню Debugging ® Control ® Execute Позволяет выполнить оператор в текущей строке с обходом вызываемой подпрограммы/функции/программы Выполнить Возврат (F7) или кнопка или меню Debugging ® Control ® Return Возвращает из вызываемой подпрограммы/функции/программы в главную программу Выполнить Дальше (F8) или кнопка или меню Debugging ® Control ® Run Запускает выполнение программы до следующей точки прерывания Просмотр/изменение значений полей Для просмотра значения поля необходимо скопировать его название в нижней части экрана: Нажмите Enter, значение поля отобразится. Так же можно отобразить значение поле для просмотра двойным щелчком по этому полю. Если выведено много полей для просмотра значений, то их можно пролистывать постранично или построчно кнопками . Для удаления всех полей из области просмотра воспользуйтесь кнопкой . Постоянно отображаются значения четырёх наиболее важных системных полей: Sy-subrc –- системная переменная, хранящая код возврата: результат выполнения какого-либо действия. 0 – действие выполнено успешно. Другие значения зависят от исполняемого оператора. Sy-tabix – текущий индекс строки, читаемой внутренней таблицы. Sy-dbcnt – число считанных строк из БД Sy-dynnr – номер экрана. Можно просматривать значения и других системных переменных из структуры Syst. Для этого необходимо в поле структуры для названия поля переменной sy-<название поля>. Можно отобразить значения переменных внешних программ, через которые вы проходили в процессе исполнения. Для этого надо указать имя программы и переменной: (имя программы)имя поля. Например: (SAPMSCLM)ACTION Специальные способы отображения: подстрока для символьной строки <поле>+<позиция символа>(<количество символов>). Отсчёт позиции символа начинается с 0. Например: sy-datum+2(2) Произвольное поле внутренней таблицы: <имя таблицы>[номер строки]-<имя поля>. Напр.: itab[1]-field Просмотреть тип переменной можно, дважды щёлкнув по полю, где указано его название. Для изменения значения поля в отладчике необходимо отобразить его значение и изменить на требуемое. После чего нажать напротив этого значения. Дальнейшее выполнение программы происходит с использованием нового значения переменной. Если вы не нажмёте эту кнопку, то изменения значения поля не произойдёт. Просмотр/изменение внутренних таблиц Для отображения внутренних таблиц переключитесь в режим просмотра таблиц (нажмите кнопку «ВнутрТаблица». С помощью кнопки ) и скопируйте название таблицы в поле можно просмотреть перечень ранее просмотренных таблиц. С помощью кнопки можно просмотреть журнал использования таблицы. Также можно указать формат просмотра таблицы и увеличить область просмотра таблицы. Для просмотра определённой строки/поля введите номер строки/название поля в заголовок таблицы В отладчике можно изменять содержимое полей таблицы, добавлять и удалять строки. Изменение строки: позиционируйте курсор на нужной строке и нажмите кнопку Вставка строки в произвольном месте: позиционируйте курсор на строке, перед которой необходимо вставить новую строку и нажмите кнопку Добавление строки: для добавления строки в конец таблицы нажмите кнопку Удаление строки: позиционируйте курсор на строке, предназначенной для удаления, и нажмите Прочие функции Просмотр списка Если в процессе программы формируется листинг, то процесс его формирования можно просмотреть с помощью кнопки Блокирование базы данных https://sapland.ru/kb/articles/stats/instruktsiya-po-ispolizovaniyu-otladchika.html 19.11.2018 Инструкция по использованию отладчика / Сапёр / Статьи / База знаний / SAPLa... Стр. 4 из 7 При выполнении некоторых программ, которые вызывают обновление базы данных, происходит блокирование доступа к этим базам прочих пользователей. Для разрешения прочим пользователям доступа к базам выберите Debugging - Database - Commit (unlock). При этом обновление баз в вашем процессе происходить не будет. Откат Если вы хотите отменить все изменения базы данных, выполненные с момента последнего commit выберите Debugging - Database - Rollback Точки прерывания Статические Статическая точка прерывания ставится в режиме редактирования программы в ABAP-редакторе (SE38). В месте прерывания программы вставляется оператор: BREAK-POINT. Такая точка прерывания не специфична для пользователя. Для установки точки прерывания, специфичной для пользователя, используйте BREAK-POINT <имя пользователя>. Такой способ установки возможен только в пользовательских программах и при наличии ключа разработчика. Динамические точки прерывания Динамические точки прерывания специфичны для пользователя и хранятся в системе только до выхода из системы. Точки прерывания, установленные в режиме отладки сохраняются только до выхода из отладки. Для сохранения на протяжении текущей регистрации выберите: Точки прерывания -Сохранить или нажмите кнопку . Система сохранит все точки прерывания, проставленные в текущей программе. Для удаления всех точек прерывания на данный сеанс выберите Точки прерывания -Удалить все, для окончательного удаления нажмите . Сохранённые точки прерывания можно активировать/деактивировать. Активация/деактивация точки прерывания сохраняется на уровне текущего сеанса отладки. Для сохранения состоянии точки прерывания на протяжении регистрации в системе нажмите . Непосредственная установка Точка прерывания устанавливается в режиме просмотра программы в ABAP-редакторе (SE38). Позиционируйте курсор на строке кода, предназначенной для установки точки прерывания, и вызовите: Утилиты -Точка прерывания -Установить/Удалить, либо с помощью кнопки прерывания удаляется. . Аналогичным образом точка Установка из отладчика Точка прерывания при выполнении отладки ставится с помощью двойного щелчка по строке или меню: Точки прерывания -Создать/Удалить. Аналогичным образом точка прерывания удаляется. Точка прерывания при операторе Устанавливается из отладчика, меню: Точки прерывания -ТП при…-Оператор. В появившемся окне указать оператор, при котором необходимо прерывание. Напр.: message, select, commit и т.д. Точка прерывания при подпрограмме Устанавливается из отладчика, меню: Точки прерывания -ТП при…-Подпрограмма. В появившемся окне указать имя программы и подпрограммы при вызове которой должно сработать прерывание. Точка прерывания при модуле функции Устанавливается из отладчика, меню: Точки прерывания -ТП при…-Модуль функции. В появившемся окне указать имя функционального модуля, при вызове которого должно сработать прерывание. Точка прерывания при методе Устанавливается из отладчика, меню: Точки прерывания -ТП при…-Метод. В появившемся окне указать имя метода, при вызове которого должно сработать прерывание. Точка прерывания при особой ситуации Устанавливается из отладчика, меню: Точки прерывания -ТП при…-Особая ситуация. В появившемся окне указать имя особой ситуации, при вызове которой должно сработать прерывание. Точка прерывания при системной особой ситуации Устанавливается из отладчика, меню: Точки прерывания -ТП при…-Системная особая ситуация. Точки наблюдения Как и точки прерывания, точки просмотра служат для прерывания программы в определённом месте, но в отличие от точек прерывания, точки наблюдения не активируются, пока содержимое определённого поля не будет изменено. Точки наблюдения, как и динамические точки прерывания, зависят от пользователя, т.е. не срабатывают, если программу запустил другой пользователь. Точки наблюдения можно определять, только находясь в отладчике. Таким образом, точки наблюдения отслеживают состояние содержимого определённого поля в процессе отладки. Когда значение точки наблюдения изменено определённым образом (см. ниже «Установка точки наблюдения») – срабатывает прерывание выполнения программы. Точки наблюдения могут быть локальными (в рамках исполняемой программы) и глобальными (активна при выполнении любой программы) Точки наблюдения удаляются при выходе из отладчика, если вы их предварительно не сохраните (аналогично точкам прерывания) Установка точки наблюдения Перейдите в режим просмотра точек наблюдения. Выберите Точки прерывания -Создать точку наблюдения или кнопка . Определите, будет это глобальная или локальная точка наблюдения. Укажите название программы, переменной и оператора сравнения. Если вы хотите сравнивать значение переменной со значением другой переменной – установите галку «Поле для сравнения» и укажите название переменной для сравнения. Если вы хотите сравнивать значение переменной с константой, то галку не устанавливайте и укажите константу для сравнения. Определение логических связей между точками наблюдения Если необходимо прерывание программы при одновременном выполнении нескольких логических условий, то возможно определение логический связей между точками наблюдения с помощью переключателя в нижней части экрана. https://sapland.ru/kb/articles/stats/instruktsiya-po-ispolizovaniyu-otladchika.html 19.11.2018 Инструкция по использованию отладчика / Сапёр / Статьи / База знаний / SAPLa... Стр. 5 из 7 Изменение/удаление точек наблюдения Изменение/удаление точки наблюдения выполняется с помощью кнопок напротив неё. Примеры применения отладчика Изменение содержимого таблицы базы данных: Существует возможность изменения содержимого таблиц базы данных с использованием отладчика. Используйте этот способ в самом крайнем случае, т.к. существует возможность нарушения целостности данных системы. Например, вы измените сумму проводки в отдельной позиции, но не измените в итоговой таблице, в результате чего суммы в итоговых отчётах будут не равны суммам в отчётах по отдельным позициям. Запустите браузер данных необходимой таблицы. (se16, se11). Выберите двойным щелчком запись, предназначенную для изменения/удаления, или любую, если хотите добавить новую запись. Запустите отладчик с помощью «/h» в командном окне. Нажмите Enter. Измените значение переменной code на: EDIT , если хотите изменить текущую запись INSR , если хотите вставить запись DELE, если хотите удалить запись ANVO, если хотите скопировать текущую запись Выключите отладку. Активация и просмотр в отладке User-Exit Просмотр User-Exit осуществляется в Транзакции SMOD (Рис.4). Когда найдено расширение, которое, на первый взгляд, могло бы быть вам полезно, его необходимо протестировать. В транзакции cmod создайте свой проект, начинающийся на z, в который вы позднее включите найденное расширение. Введите описание проекта Рис. 4 Транзакция SMOD. Просмотр расширения Нажмите «Присвоение расширения» и укажите пакет для его сохранения или сохраните как локальный объект. Присвойте проверяемое расширение проекту Перейдите к компонентам и выберите функциональный модуль, который будете тестировать. Двойным щелчком «провалитесь» в него и установите точку прерывания на инклюде, предназначенном для изменения пользователем. Вернитесь назад и активируйте проект с помощью кнопки кнопки . С этого момента расширение будет срабатывать. Деактивировать проект можно с помощью . Отменить присвоение расширения проекту можно в случае, если проект не активен. Выполните транзакцию, где должно сработать расширение. Вы попадёте в отладчик, где сможете проверить работу расширения. Использованная литература: 1. http://help.sap.com/saphelp_470/helpdata/en/7b/fb96c8882811d295a90000e8353423/frameset.htm Об авторе: Власта Венц, ведущий специалист компании ОА «Энел ОГК-5», направление SAP FI (Финансы), SL (Налоговый учет), TR (Казначейство и Управление рискам). Опыт в консалтинге в области внедрения информационных технологий с 2001 года (с 2001 ERP-система IFRS - IFS Russia –«Корпоративные Финансовые Системы»; с 2004 - SAP R/3, Optima eXchange Services, BearingPoint). Закончила факультет ВМиК (вычислительной математики и кибернетики) МГУ, институт Управляющих Аскери (международные стандарты финансовой отчетности). Для контактов можно использовать почту vestav@mail.ru. https://sapland.ru/kb/articles/stats/instruktsiya-po-ispolizovaniyu-otladchika.html 19.11.2018 Инструкция по использованию отладчика / Сапёр / Статьи / База знаний / SAPLa... Стр. 6 из 7 Функциональная область: Информационные технологии / IT, Basis, ABAP Ролевое назначение: SAP Консультант / Consultant Нравится 8 Не нравится Комментарии: Евгения Попова (Рейтинг: 86) 19:20, 29 января 2016 Очень полезная информация, изложенная в простой, доступной и понятной форме. Думаю, она поможет сотням консультантов, как начинающим свой путь в области внедрения SAP систем, так и специалистам по технической поддержке и сопровождению, коллегам, не связанным непосредственно с абап-разработками, и ускорит решение многих задач. Илья Левченко (Рейтинг: 22) 07:02, 02 февраля 2016 Одна из полезных функций - область отладки (в свежих версиях SAP). Задаем Z* и смотрим только код проекта, без системной обработки, например ALV. В версии 4.7 можно изобразить нечто аналогичное - точку наблюдения на sy-repid(1) = Z Антон Сорокин (Рейтинг: 365) 12:37, 02 февраля 2016 >>Запустите браузер данных необходимой таблицы. (se16, se11). С каких пор SE11 стало браузером данных? :) В SE16 у меня это не сработало, не вижу переменную CODE. Базис 7.40. 13:59, 02 февраля 2016 Олег Точенюк (Рейтинг: 10718) Картинку с какого места хотите попасть в отладчик можете привести? 17:30, 12 февраля 2016 Антон Сорокин (Рейтинг: 365) 17:30, 12 февраля 2016 Антон Сорокин (Рейтинг: 365) Вот тут 14:42, 13 февраля 2016 Олег Точенюк (Рейтинг: 10718) А вот тут никогда ни не попадали в режим просмотра переменной CODE, в этот режим можно попасть выбрав конкретную запись: Далее уже попадаем в отладчик, но в новых системах мы попадаем в метод: Вот в этом методе жмем F7 и попадаем уже в модуль с доступом к переменной CODE https://sapland.ru/kb/articles/stats/instruktsiya-po-ispolizovaniyu-otladchika.html 19.11.2018 Инструкция по использованию отладчика / Сапёр / Статьи / База знаний / SAPLa... Стр. 7 из 7 В более ранних системах, до 7.40 вроде как сразу попадаешь в модуль где доступна переменная CODE. 17:26, 07 мая 2017 Олег Башкатов (Рейтинг: 8020) это включена системная отладка. /hs или галочка в настройках. сам постоянно натыкаюсь, особенно для CRM и SolMan (там нет SE16N) если нужна точка захожу и ставлю тут SAPLSETB form SET_STATUS_VAL и деактивирую, если не нужна 11:53, 07 мая 2017 Олег Башкатов (Рейтинг: 8020) Если из начального экрана, то нужно обращать внимание на переменную action. и перед установкой статуса экрана ( set pf-status 'XXXX' excluding excl_tab.) - смотреть на таблицу excl_tab и почистить ее - тогда будут доступны все функции при открытии таблицы. Евгений Данилович (Рейтинг: 36) 06:38, 07 июня 2018 Одной из важных опций отладчика является Debug Modes. Если вам необходимо отладить, например, модуль обновления то в 'простом' режиме отладки вы в него не провалитесь. Обязательно установите внешнюю точку остановки в модуле обновления. Запустите транзакцию в режиме отладки, перейдите в пункт меню 'Параметры настройки -> изменить профиль отладч./парам. настр.'. В разделе Debug Modes отметьте пункт Update 'Debugging', сохранить. Любое воспроизведение запрещено. 18+ © 2009 - 2018, Издательство ООО «Эксперт РП». Все права защищены Копирайт © «Издательство ООО «Эксперт РП» Сообщество Разработка и поддержка сайта — OpenStart Связаться с нами support@sapland.ru Политика конфиденциальности Републикация материалов — только со ссылкой на SAPLAND.RU, с разрешения редакции сайта. Редакция не несет ответственности за высказывания пользователей на сайте. https://sapland.ru/kb/articles/stats/instruktsiya-po-ispolizovaniyu-otladchika.html 19.11.2018