Устаревшие операторы ABAP: как они влияют на вашу существующую кодовую базу? - PullRequest
2 голосов
/ 10 марта 2009

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

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

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

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

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

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 08 июля 2009

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

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

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

0 голосов
/ 02 апреля 2009

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

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

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

...