专栏首页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.

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Wordpress如何打开调试模式

    Jerry Wang
  • 使用Eclipse进行PHP的服务器端调试

    最近工作需要对PHP的服务器端代码进行远程调试,涉及到Eclipse里环境的设置。在网上找了很多资料,大多不全,或者缺少配图,于是把自己做的过程中遇到的问题记录...

    Jerry Wang
  • 使用Prometheus监控Linux系统各项指标

    今天在工作中,我发现一个问题:在SAP帮助文档里,backoffice coupon 维护界面有个 Customer Assignment的区域:

    Jerry Wang
  • SAP HANA Delivery Unit概念简述

    在SAP HANA应用开发领域里,我们通常用package来存储modeler views和XS工程等模型。这些包应该被部署到最终的生产服务器上。

    Jerry Wang
  • 一道朴实无华的算法题:把数组排成最小的数

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题45 把数组排成最小的数。

    五分钟学算法
  • 服务器端实时推送技术之SSE

    在讲Server-Sent Events (SSE) 之前,我们先来看看 HTTP 请求- 响应。一个标准的 HTTP 请求- 响应,需要客户端打开一个连接,将...

    边鹏 [进阶者]
  • Go 自带的 http/server.go 的连接解析 与 如何结合 master-worker 并发模式,提高单机并发能力

    林冠宏-指尖下的幽灵
  • 社交数据平台DataSift(服务领域:数据即服务)

    社交数据平台DataSift帮助“开发商以及第三方”访问Twitter,Facebook及其它社交数据资源,Datasift能够对海量社交数据进行分析,向品牌公...

    华章科技
  • JedisHelper——Redis客户端简单封装

    由于公司在不同的业务系统场景都有用到Redis,为了减少业务之间带来的相互影响,所以部署了多个Redis集群,JedisHelper就提供了获取不同业务集群Re...

    会跳舞的机器人
  • [图解] 桶排序

    桶排序是一种排序的思想,其实现包括计数排序和基数排序两种,冒泡排序、选择排序、插入排序、归并排序、快速排序和堆排序都是基于比较的排序,而桶排序提出了一种新的思路...

    CoderJed

扫码关注云+社区

领取腾讯云代金券