Ошибка в отладчике при одинаковом наименовании глобальных и локальных переменных.

Сегодня прилетел дамп по одной старой разработке. Собственно ошибка была понятна по описанию, суть не в ней. Но чтобы убедиться точно, в правильности выводов по ошибке, решил поставить точку в коде недалеко от строки дампа и посмотреть что да как.
Каково же было мое удивление, что находясь внутри цикла  LOOP AT gt_data ASSIGNING <fs_data>. Field-symbol в отладчике отображался как еще не присвоенный, при этом было видно, что на самом деле с ним было все в порядке. Т.е. проблема была именно в отладчике и именно с <fs_data>. Остальные Field-symbol работали корректно, инклуд активировался без ошибок.

Разгадка оказалась очень простая, и как можно догадаться из названия заметки, связанна с областью видимости переменных. Дело в том, что FIELD-SYMBOL <fs_data> был объявлен два раза. Первый раз глобально в инклуде Z*TOP, а второй раз в подпрограмме ниже 610 строки. При этом все работало активировалось без проблем.

Предупреждение же можно было увидеть только при проверке из главной программы.

А вот отладчик не понимал, что необходимо отображать. Глобальный или локальный FIELD-SYMBOL.

И да, не надо именовать так именовать переменные.

Добавить комментарий

Ваш адрес email не будет опубликован.