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