自从从4.7升级到ECC6以来,ABAP编译器在OO上下文中使用某些语句变得更加严格.
例如,您不允许使用LIKE语句,而是必须使用TYPE,而内部表没有隐式标题行等.
这些限制在这里有更详细的解释
我的问题:这种限制在多大程度上会影响您现有的代码库?
自1998年以来,我们已经在OO中编写了超过一千个"类",就当时可用.在大多数情况下,每个类在SE38中都有自己的包含,其中包括类定义和实现.
到目前为止,只要主程序在4.7中预先存在,我们就可以成功地更改和激活这些类.现在我们尝试在新的主程序中使用这些旧类之一进行回归测试,我们收到以下错误:
"在类和接口中,您只能使用"TYPE"来引用ABAP字典类型(不是"LIKE"或"STRUCTURE")."
根据SAP语言的当前定义,此错误有效.
我想知道SAP解释器是否继续故意使用过时的语句来运行旧代码,或者未来的补丁是否可以纠正这个"特性"并导致这些类停止编译.
每个开发对象都标记有与其开发的SAP版本对应的版本.您可以在版本管理或表VRSD中看到此信息.
据我所知,具体来说,在以后的版本中使用非法语句的代码将在升级后继续运行.
这就是为什么当您将4.5b中开发的包含附加到NW700中开发的类时,它将无法编译.编译器知道这是新的dev,并相应地应用规则.