对cl_gui_alv_grid类型的引用使用脏分配?一般不可能?

时间:2017-04-26 14:36:11

标签: abap

这正是我的问题。

需要验证可能通过主题中提到的技巧轻松解决的新要求。

除了肮脏的实现之外,顾问说,他允许我们使用肮脏的分配。

所以我开始,在一个BADI方法中,并且有两个脏的分配才能正常工作。

一个是分配一个没有引用GUI对象的对象,另一个只分配一个数据表。两者都存在于同一个其他程序中。

现在我想从同一个程序的ALV网格中分配一个fieldsymbol。

SY-SUBRC返回0,但之后的fieldsymbol指向INITIAL

我可以想象,就安全性而言,这是不允许的。

无论如何,我只是在这里要求得到我的假设的确认或更正。

2 个答案:

答案 0 :(得分:0)

据我所知,它与安全性无关。有一些技术可以避免肮脏分配的可能性,但这是另一个故事。当定义为全局时,对GUI控件的引用仍然作为普通的,可到达的变量保留在那里,但是那些可以在一段时间后初始化。

查看官方CFW documentation以支持我,他们写道:

  

控制的生命周期由生命周期管理决定。   终身管理会自动破坏前端的控件   什么时候不再需要它们。应用程序当然也是   支持明确销毁控件。

这意味着对服务器端GUI控件的引用可以由处理程序显式清理或由系统本身自动初始化(类型为#34;垃圾收集器")。

有关控件生命周期here的更多信息。

答案 1 :(得分:0)

使用脏分配通常是一个非常糟糕的主意,因为它至少打破了软件设计的两个原则(封装和接口),因此可能会破坏安全性和健壮性领域。 有关使用脏分配时可能出现的问题的解释,您可以阅读我的博客Agreements must be kept