SAP Classic Dynpro 和 OO 编程。为什么不?

SAP Classic Dynpro and OO programming. Why not?

我读了几篇文章,说你不能在 SAP 的经典 dynpros 中开发 OO。 我是初学者,所以我可能有一些误解。但是当我使用 类 和对象时,我正在开发面向对象,对吗?

在 dynpro 中,我还可以使用 类 并创建对象,使用它们的方法等。 那么为什么 Dynpro 不是面向对象的呢?

我知道这是一个基本问题,但如果我对 OO 有误解,我需要把它从脑海中抹去:)

这主要是因为 classic PBO-PAI 处理。您必须使用 "message-pump",例如 classic dynpro 是几年前开发的。但我必须不同意,不可能按照 OOP 原则进行开发。它只是不太好,例如,您必须捕获 PAI 以进行进一步的导航、验证和处理,并且您可以在 PBO 中设置值、消息等。

虽然它很丑陋,但它仍然为您提供了完美的方法来做什么? 嘿嘿嘿?

MVC 设计模式。

只要你建模了一个好的模型和控制器,你就可以将它作为一个对象跟踪在 top-include 中并创建一些包装器,它必须首先通过控制(我不太喜欢它)通过 PAI/PBO-Modules 向下到表单例程,在这些表单例程中,您可以自由执行您想要的一切,即使在 OO 上下文中也是如此。创建一个全局模型和控制器 class,创建一个带有一个 alv-grid 的 dynpro,同时创建一个 top-include 并尝试使用。 已经有很多标准应用程序使用完全相同的方法。 一件好事是(尽管你有模块形式例程委托),你真的可以开始对模型和控制器进行很好的建模,这就是 oo 的定义。

SAP ABAP Classical Dynpro 屏幕是内置过程的一部分,它在显示屏幕之前运行处理 (PBO),显示屏幕,然后在屏幕上检测到操作后进行处理 (PAI)。

处理此问题的 SAP 代码是过程性的,因此您无法构建 "pure" OO 程序。

您可以在程序中使用类、对象和方法,但您还必须涉及过程处理。

尝试使用 MVC 可能会把事情搞得一团糟,但那时候为什么不直接使用 WebDynpro 呢?