Несколько слов об отладке ABAP программ

Небольшой userhack, который может пригодиться при отладке ABAP программ.

Ах, отладка, бессердечная ты сука, хочется, порой сказать, пародируя почти такую же фразу, сказанную применительно к другой области, но точно описывающей суть происходящего хаоса, который может быть вокруг нас. Ну да хватит лирики.

Описание ситуации

В процессе отладки ABAP программ функциональный консультант, по моему субъективному мнению, чаще всего будет сталкиваться с попыткой разобраться, какие значения были считаны из настроечной таблицы, для последующего сравнения этих значений с другими, которые, в свою очередь, лежат в других настроечных таблицах (или, как нередко встречается, прописаны в коде программы).

Приведу пример из своего опыта. У вас есть Excel файл, который содержит какие-то данные для загрузки в систему SAP. В коде программы выполняется проверка на то, какие значения содержатся в определенном столбце этого файла. Если значение столбца Excel файла соответствует значению, прописанному в коде программы (опять же, хардкод), то выполняется соответствующий кусок программы, иначе - вызывается сообщение об ошибке, либо выполняется другой логический блок программы.

Запускаю программу, и сталкиваюсь с какой-то ошибочной ситуацией. Запускаю отладку, нахожу место, в котором происходит считывание данных из столбца Excel файла с последующим сравнением со значением, прописанным непосредственно в коде программы (безусловно, ABAP программисты будут говорить, что это некорректно, и писать код таким образом нельзя, но, к сожалению, ABAP программы не выбирают, и чаще всего приходится работать с тем, что уже было реализовано).

Значение, считанное из столбца Excel файла, как мне кажется, соответствует значению, указанному в коде программы, но все равно что-то идет не так.

Пример

Для демонстрации представленной выше ситуации, я приведу простенькую программу

Как видите, двум переменным присвоено одно и то же значение. В коде программы выполняется проверка этих значений, и, если они равны, в программе должно быть выведено на экран true, иначе - false. Проверяю

Результат не такой, как ожидалось.

Отладка

Чтобы понять, а действительно ли значения переменных одинаковые, необходимо, находясь в режиме отладки, обращать внимание на их шестнадцатеричное значение.

Как видите, в режиме отладки значение переменных в шестнадцатеричном представлении отличаются, хотя на первый взгляд, переменные равны. То есть в моем примере, значения набраны при помощи различных раскладок клавиатуры.

Будьте внимательны.

Read more