Минимальным шагом отладки является один оператор языка программирования (в нашем случае это ABAP). Следует сразу отметить, что различные математические операции не относятся к операторам – это составляющие выражения. А вот знак =, например, это именно оператор – оператор присвоения значения выражения, стоящего справа от него, переменной слева от него. Ключевые слова для объявления переменных и типов также не относятся к операторам. Таким образом, если мы дадим с помощью отладчика команду выполнить минимальный шаг, программа выполнит текущий оператор, перейдет к следующему и остановится. При этом мы снова окажемся в отладчике. Если какие-либо данные были изменены во время шага, отладчик покажет нам их текущие значения. Большинство необходимых команд отладчика присвоены горячим клавишам – так выполнение отдельного шага назначено на клавишу F5. Кроме того, эту команду можно выполнить, выбрав соответствующий пункт меню
на панели инструментов.
Теперь представим ситуацию, что в процессе отладки мы остановились на операторе вызова подпрограммы, функции, метода или чего-то похожего (назовем это все «подпрограммой»). Если дать команду выполнить отдельный шаг, управление будет передано внутрь вызываемой подпрограммы и вам придется проходить ее всю также по шагам. Если Вы уверены что то, что происходит внутри подпрограммы не вызывает ошибки, которую вы ищете, или просто в данный момент Вам не интересно, то всю подпрограмму можно выполнить за 1 шаг. Для этого предназначена соответствующая команда «
Чтобы объяснить следующую команду отладки, стоит поговорить про стек вызовов. Стеком называется хранилище неких сущностей, из которого сущности могут быть извлечены в порядке обратном их помещению в стек. Если вы когда-нибудь слышали про LIFO – это и есть стек.
Стеком вызовов называется цепочка вызовов подпрограмм, которые привели нас в текущее место программы. При этом на вершине стека располагается текущая выполняемая подпрограмма, а на его дне – то место, откуда началось выполнение. При вызове подпрограммы она помещается на вершину стека и становится текущей. При выходе из текущей подпрограммы она удаляется из стека и на вершине оказывается та подпрограмма, из которой была вызвана текущая, и, таким образом, сама становится текущей.
Для нас сейчас важно, что мы можем дать команду выполнить текущую подпрограмму до конца и выйти из нее. При этом программа остановится, и мы окажемся в отладчике на операторе, следующем за вызовом той подпрограммы, из которой мы вышли. Такая команда называется «
Следующая команда «
Команда «
Еще одна команда «