繁体   English   中英

在 ABAP 中可以对 cl_gui_alv_grid 对象进行脏分配吗?

[英]Dirty assign of cl_gui_alv_grid object is possible in ABAP?

题目中提到的技巧可能很容易解决的新需求需要验证。

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

所以我开始,在一个 BADI 方法中,得到了两个脏分配来正常工作。

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

现在我想从同一程序的 ALV 网格之一中获取要分配的字段符号。

SY-SUBRC返回0 ,但后面的字段符号指向INITIAL 我可以想象,就安全而言,这是不允许的。

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

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

查找官方CFW 文档以支持我,他们写道:

控件的生命周期由生命周期管理来调节。 当不再需要时,生命周期管理会自动销毁前端的控件。 应用程序当然也支持显式销毁控件。

因此,这意味着对服务器端 GUI 控件的引用可以由处理程序明确地或由系统本身(一种“垃圾收集器”)自动清除、初始化。

有关控件生命周期的更多信息,请参见此处

使用脏分配通常是一个非常糟糕的主意,因为它至少破坏了软件设计的两个原则(封装和接口),因此可能会破坏安全性和健壮性领域。 对于使用脏分配时可能出错的一些解释,您可以阅读我的这篇博客必须保留协议

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM