После обновления с 4.7 до ECC6 компилятор ABAP стал намного строже при использовании определенных операторов в контексте ОО.
Например, вам не разрешено использовать оператор LIKE, но вместо этого приходится использовать TYPE, а во внутренних таблицах нет неявной строки заголовка и т. Д.
Эти ограничения объяснены более подробно здесь
МОЙ ВОПРОС: В какой степени это ограничение влияет на существующую кодовую базу ?.
У нас есть более тысячи «Классов», написанных с 1998 года в ОО, насколько это было доступно в то время. По большей части каждый класс является отдельным включением в SE38, вместе с определением и реализацией класса в этом включении.
До сих пор мы могли успешно изменять и активировать эти классы , если основная программа уже существовала в 4.7 . Сейчас мы пытаемся использовать один из этих старых классов в новой основной программе для целей регрессионного тестирования, и мы получаем следующую ошибку:
"Внутри классов и интерфейсов вы можете использовать" TYPE "только для обозначения типов словаря ABAP (не" LIKE "или" STRUCTURE ")."
Эта ошибка действительна в соответствии с текущим определением языка SAP.
Я хотел бы знать, продолжает ли интерпретатор SAP преднамеренно запускать старый код с устаревшими утверждениями или может ли будущий патч исправить эту «функцию» и заставить эти классы перестать компилироваться.