专栏首页Jerry的SAP技术分享SAP CRM WebClient UI的内存清理策略分析

SAP CRM WebClient UI的内存清理策略分析

If we searched 5 PPR and go to Account and then go to PPR again, search results are still there.

Why are the two navigation causing different behavior?

Some key points we must remember:

Every time you navigate away from current view, WD_DESTROY will be called, either the child’s own redefined one or default implementation of parent.

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:

That means WD_DESTORY will only clear context node reference itself, but not the real BOL content in BOL wrapper.

The BOL content will only be cleared when:

When navigation is being executed, framework event will be raised:

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.

If you just click a work center view for example “Accounts”, line 91 will not be executed and thus gv_bol_reset_requested will always equal to abap_false.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SAP CRM WebClient UI的内存清理策略分析

    If we searched 5 PPR and go to Account and then go to PPR again, search results ...

    Jerry Wang
  • SAP CRM 产品主数据搜索的Max hit参数设置和硬编码

    The product search max hit value in WebClient UI could be configured in SPRO:

    Jerry Wang
  • Coverage analysis in AIE

    And analysis result will be displayed in different color:

    Jerry Wang
  • 排序算法

    选择排序: ​ 选择排序一般来说就是,我们 始终从中右边的序列中找出那些最小的元素,放在左侧,这样我们就能保证左边始终有序。 ​ 但是这个算法的复杂...

    lwen
  • 【数据结构】七大排序算法

    排序的相关概念 排序的分类 根据在排序过程中带排序的记录是否全部被放置在内存中,排序分为: 内排序 外排序 1.内排序 内排序是在排序整个过程中,带排序的所有...

    我就是马云飞
  • 各大排序算法性能比较及演示实例

    所谓排序,即将原来无序的一个序列重新排列成有序的序列。 排序方法中涉及到稳定性,所谓稳定性,是指待排序的序列中有两个或两个以上相同的项,在排序前和排序后看这些相...

    顶级程序员
  • 数据结构-常用的排序算法

    好久不见哈,我终于又更新了,惊不惊喜,意不意外,哈哈哈哈。等之后会专门写一篇文章给大家汇报汇报我最近在忙什么呢,今天这篇还是接着之前的数据结构系列继续,主要讲讲...

    张俊红
  • 算法:选择排序(SelectionSort)

    每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。

    WEBJ2EE
  • Why Laravel? 40 Must-Have Laravel Tools and Resources

    Project development is a combination of hard and soft skills. As a client, your ...

    用户6459740
  • 算法之旅 | 冒泡排序法

    HTML5学堂-码匠:本期继续走入算法 —— 冒泡排序法。冒泡排序算法相对简单,容易上手,稳定性也比较高, 算是一种较好理解的算法,也是面试官高频提问的算法之一...

    HTML5学堂

扫码关注云+社区

领取腾讯云代金券