首页 文章

ABAP OO过时陈述:这些如何影响您现有的代码库?

提问于
浏览
2

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

例如,您不允许使用LIKE语句,而是必须使用TYPE,而内部表没有隐式 Headers 行等 .

更详细地解释了这些限制here

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

自1998年以来,我们已经在OO中编写了超过一千个“类”,就当时可用 . 在大多数情况下,每个类在SE38中都有自己的包含,其中包括类定义和实现 .

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

"Within classes and interfaces, you can only use "TYPE" to refer to ABAP Dictionary types (not "LIKE" or "STRUCTURE")."

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

我想知道SAP解释器是否继续故意使用过时的语句来运行旧代码,或者未来的补丁是否可以纠正这个“特性”并导致这些类停止编译 .

2 回答

  • 5

    每个开发对象都标记有与其开发的SAP版本对应的版本 . 您可以在版本管理或表VRSD中看到此信息 .

    据我所知,具体来说,在以后的版本中使用非法语句的代码将在升级后继续运行 .

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

  • 0

    ABAP社区已被告知很长时间(年),LIKE,工作区,RANGE等已经过时 .

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

    所以他们可以让它停止编译:是的,他们会:可能不会 .

相关问题