Устаревшие операторы ABAP OO: как они влияют на существующую кодовую базу?

После обновления с 4.7 до ECC6 компилятор ABAP стал намного строже в отношении использования определенных операторов в объектно-ориентированном контексте.

Например, вам не разрешено использовать оператор LIKE, но вместо этого нужно использовать TYPE, а внутренние таблицы не имеют неявной строки заголовка и т. Д.

Эти ограничения более подробно описаны здесь

МОЙ ВОПРОС: В какой степени это ограничение влияет на ваш существующий код ?.

У нас есть более тысячи "Классов", написанных с 1998 года в объектно-ориентированном стиле, насколько это было доступно в то время. По большей части каждый класс является его собственным включением в SE38, при этом определение класса и реализация вместе в этом включении.

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

«Внутри классов и интерфейсов вы можете использовать« TYPE »только для ссылки на типы словаря ABAP (не« LIKE »или« STRUCTURE »)».

Эта ошибка действительна в соответствии с текущим определением языка SAP.

Я хотел бы знать, продолжает ли интерпретатор SAP намеренно запускать старый код с устаревшими операторами или может ли будущий патч исправить эту «функцию» и заставить эти классы перестать компилироваться.


person Esti    schedule 10.03.2009    source источник


Ответы (2)


Каждому объекту разработки помечается версия, соответствующая версии SAP, на которой он был разработан. Вы можете увидеть это в управлении версиями или в таблице VRSD.

Насколько я понимаю, это сделано специально для того, чтобы код с операторами, которые были признаны незаконными в более поздних версиях, пережил обновление и продолжал работать.

Вот почему, когда вы прикрепляете включение, разработанное в 4.5b, к классу, разработанному в NW700, он не компилируется. Компилятор знает, что это новый разработчик, и соответственно применяет правила.

person Bryan Cain    schedule 08.07.2009
comment
Привет, Брайан, спасибо за ответ - я тоже наткнулся на этот стол. - person Esti; 17.08.2009

Сообщество ABAP было информировано в течение действительно долгого времени (лет), что LIKE, рабочие области, RANGE и т. Д. Устарели.

Я не думаю, что SAP убьет какой-либо старый код, но я бы не стал на это рассчитывать, будь я руководителем.

Так могут ли они заставить его перестать компилироваться: да, будут ли: вероятно, нет.

person tomdemuyt    schedule 01.04.2009
comment
Привет, Том, спасибо за ответ. LIKE, рабочие области и т. Д. Вызывают синтаксические ошибки только в объектно-ориентированном контексте. Они отображаются как устаревшие при расширенной проверке программы вне объектно-ориентированного проектирования, но все же компилируются. Странно то, что при попытке использовать эти устаревшие включения в НОВЫХ программах они НЕ компилируются. НО до тех пор, пока вы меняете только включенные или старые программы, он продолжает компилироваться. Cheers Esti - person Esti; 27.04.2009
comment
Более того, в прошлом у нас были проблемы, когда интерпретатор ABAP неправильно интерпретировал код и пытался выполнить метод, который вы не вызывали. Мне как бы интересно, может ли это быть из-за того, что используемые нами токены (синтаксис) неверны. Конечно, это может быть совершенно не связано. Факт остается фактом: кодовая база 10-летней давности, вероятно, в любом случае подходит к концу. - person Esti; 27.04.2009