2

自从从 4.7 升级到 ECC6 以来,ABAP 编译器在 OO 上下文中对某些语句的使用变得更加严格。

例如,您不允许使用 LIKE 语句,而是必须使用 TYPE 并且内部表没有隐式标题行等。

这些限制在此处进行了更详细的说明

我的问题:此限制在多大程度上影响您现有的代码库?

自 1998 年以来,我们在 OO 中编写了超过一千个“类”,只要它当时可用。大多数情况下,每个类在 SE38 中都是它自己的包含,类定义和实现一起包含在这个包含中。

到目前为止,只要主程序在 4.7 中预先存在,我们就可以成功更改和激活这些类。现在我们试图在一个新的主程序中使用这些旧类之一进行回归测试,我们得到以下错误:

“在类和接口中,您只能使用“TYPE”来引用 ABAP 字典类型(而不是“LIKE”或“STRUCTURE”)。”

根据 SAP 语言的当前定义,此错误有效。

我想知道 SAP 解释器是否继续故意运行带有过时语句的旧代码,或者未来的补丁是否可能更正此“功能”并导致这些类停止编译。

4

2 回答 2

6

每个开发对象都标记有与开发它的 SAP 版本相对应的版本。您可以在版本管理或表 VRSD 中看到这一点。

据我了解,这是专门用于在以后的版本中包含非法语句的代码将在升级后继续运行并继续运行。

这就是为什么当您将在 4.5b 中开发的包含附加到在 NW700 中开发的类时,它不会编译。编译器知道这是新开发,并相应地应用规则。

于 2009-07-08T13:42:02.247 回答
0

ABAP 社区已经知道 LIKE、工作区、RANGE 等已经过时了很长时间(几年)。

我不认为 SAP 会杀死任何旧代码,但如果我负责的话,我不会指望它。

那么他们能否使其停止编译:是的,他们会:可能不会。

于 2009-04-01T21:30:30.217 回答