如何进行SAP CRM WebClient UI的内存清理策略分析
今天就跟大家聊聊有关如何进行SAP CRM WebClient UI的内存清理策略分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
如果我们搜索了5个PPR并转到帐户,然后再次转到PPR,搜索结果仍然存在。
为什么这两种导航会导致不同的行为?
我们必须记住一些要点:
每次您离开当前视图时,都会调用WD_DESTROY,可以是子视图自己的重定义实现,也可以是父视图的默认实现。
DESTROY method of context node class will be called one by one.
In PPR case, since RESULT node in view controller is mapped to RESULT in component controller via context binding, so collection wrapper will not be cleared.
Instead it will just clear the context node reference itself.
Let’s record down the real BOL collection in collection wrapper before CLEAR me->typed_context.
{O:1253*\CLASS=CL_CRM_BOL_ENTITY_COL}
After clear is executed, we check {O:1253*\CLASS=CL_CRM_BOL_ENTITY_COL} in debugger:
The 5 PPR BOL entities are still there:
这意味着WD_DESTORY将只清除上下文节点引用本身,而不清除BOL包装器中的真实BOL内容。
只有在以下情况下,才会清除BOL内容:
执行导航时,将引发框架事件:
CL_CRM_UI_SESSION_RESTART works as event handler and will clear bol buffer by evaluating flag gv_bol_reset_requested.
In lv_bolcore_reset the 5 PPR entities will be deleted in BOL container.
So now question is when is gv_bol_reset_requested set?
For example if you click “Home”,
Framework will evaluate if the navigation target is a Workcenter.
If so, the framework event before_context_change will be raised.
The event handler for it will simply set restart_requested flag to ‘X’.
Later this flag will be evaluated and set gv_bol_reset_requested.
如果只单击工作中心视图,例如“Accounts”,则不会执行第91行,因此请求的gv_bol_reset_将始终等于abap_false。
看完上述内容,你们对如何进行SAP CRM WebClient UI的内存清理策略分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注恰卡编程网行业资讯频道,感谢大家的支持。