In my previous blog Dropdown list issue in CRM Webclient UI – a very funny trouble shooting process I have shared with you how I deal with an drop-down list issue and how I finally find root cause.
In this blog I will share with you another example how I struggle with another issue which is drop down list relevant and how I decide which place in the code to set breakpoint to start my trouble shooting.
Issue description
Today I received one incident from customer, complaining that they could not successfully create an ERP order. They meet with out of memory issue in UI. How could a creation of ERP order ask for more than 700MB memory???
When I check in ST22, there are lots of SYSTEM_NO_ROLL errors.
Checking Active Calls/Events, I have only two findings:
(1) according to callstack 62, this error occurs when UI framework tries to populate native html source code to be rendered for the end user. (2) callstack 51 shows the overview page is to be rendered. According to the reproduce steps provided by customer, to be more exact, the issue occurs when ERP order overview page is to be rendered.
Click tab “Source Code Extract”, and I know the system fails to allocate necessary memory for this CONCATENATE operation. I can not imagine how big the m_content or value could be.
The information in “Chosen variables” could not help me too much:
I realize I have to use debugging once again. But where do I set breakpoint?
My issue analysis process
Since all call-stacks displayed in ST22 are webclient ui framework stuff, if I set breakpoints there, they will no doubt be triggered again and again, do nothing helpful for my analysis.
I just set two breakpoints in DO_PREPARE_OUTPUT of ERP Order header view and item view.
Both methods are executed successfully in debugger, nothing strange.
What kinds of UI element would lead to a large response stream to browser
Since this issue is caused by the huge memory allocation for the to-be-rendered html page, we can think about what kinds of UI element would lead to a huge response stream? As far as I know, there are following candidates:
(1) A long long web page with lots of text content.
When talking about webclient UI, the possible scenario is that a text-area has lots of characters. However this is not the case for this incident.
In ERP creation page it is impossible to have a long text which needs 700MB to display.
(2) A table with so many entries. In ERP_IT/ItemTab there is indeed a table element, however since currently we are in ERP order creation page, there is no item record at the creation phase.
(3) A drop down list with so many entries. If you have gone through my previous blog, you can know that the keys and descriptions for each entry in a drop down list will be included in the html source code. So in theory, if a drop down list has a hug number of entries, it is also possible to generate a large response stream. So now all context node attributes which has implemented method GET_V_XXX are suspects. So I have set breakpoint on all of them.
And soon I have found the one who makes troubles, the GET_V_SPART. Totally 408089 entries are returned by method cl_crm_uiu_erp_order_vh=>get_values_for_spart.
When this big drop down list is finally being rendered, the handler class CL_THTMLB_SELECTION_BOX has to populate the final html source code for these 408090 entries, and run out of memory.
Since root cause is found, I asked responsible colleague to have a look why such huge numbers of entries are returned, as this absolutely does not make sense for end users. Hope this tip of mine to choose where to set breakpoint could help for your trouble shooting. Of course in this case memory inspector s_memory_inspector could also help you identify code which generates high memory demand.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
本压缩包中的" SAP_ABAP_4.7.CHM "文件是一部关于SAP ABAP 4.7版本的开发手册,对于深入理解并掌握SAP ABAP编程技术具有极高的价值。 1. SAP ABAP简介: SAP ABAP是一种面向过程的编程语言,主要应用于SAP ...
在ABAP编程中,ALV (ABAP List Viewer) 是一个强大的工具,用于展示和编辑数据表。在处理用户输入时,我们有时需要对特定字段应用格式化或限制,这时`EDIT_MASK`就派上用场了。`EDIT_MASK`是ABAP中的一种功能,允许...
i_has_headers = abap_true CHANGING t_table = lt_data ). ``` 4. **设置事件处理**:你可以定义各种ALV事件的处理程序,如行选择、双击等。这使得ALV具有交互性,允许用户与数据进行交互。例如,添加行选择...
ABAP_OLE相关文档。ABAP_OLE相关文档。ABAP_OLE相关文档。ABAP_OLE相关文档。ABAP_OLE相关文档。ABAP_OLE相关文档。ABAP_OLE相关文档。ABAP_OLE相关文档。ABAP_OLE相关文档。ABAP_OLE相关文档。ABAP_OLE相关文档。...
这是实战SAP程序开发_从实例学SAP_ABAP编程的清晰版本
标题中的"SAP_ABAP.rar"表明这是一个与SAP ABAP相关的压缩文件,可能包含了关于SAP ABAP开发的文档或代码示例。ERP SAP ABAP指的是SAP企业资源规划系统中的ABAP编程语言,它是SAP系统核心开发的重要工具。"ERP_SAP...
详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。...
此链接提供了一个名为“ABAP_PA”的压缩包,包含与SAP ABAP PA相关的资料,适用于希望深入学习SAP ABAP性能分析的专业人士。通过该资源可以学习如何进行性能优化、性能监控等技术要点。 #### 2. **ABAP官方教材.RAR...
SAP BASIS是SAP系统中的核心技术组件,负责提供运行时环境,包括系统安装、配置、性能优化、数据库管理以及与操作系统和网络的集成。 在SAP系统管理中,以下几个关键知识点尤为重要: 1. **SAP系统架构**:了解SAP...
《SAP ABAP_HR_Training:深入了解SAP人力资本管理与ABAP开发技术》 在企业信息化领域,SAP系统扮演着至关重要的角色,尤其是其人力资源模块(HR)和ABAP编程语言,它们共同构建了高效的企业业务流程。本教程“SAP ...
这指向了SAP系统中一个核心功能——物料清单(Bill of Materials,简称BOM)的开发与管理,尤其是在使用ABAP(Advanced Business Application Programming,高级商业应用编程)语言进行定制化开发时的应用场景。...
### SAP-ABAP-OO 实现 CL-SALV-TABLE 的关键知识点 #### 1. ABAP 面向对象的 ALV 显示方法 在 SAP 的 ABAP 环境中,ALV (Application List Viewer) 是一种非常常用的技术,用于在屏幕上以表格的形式展示数据。传统...
sap abap 编写的 BOM拆分程序
这是实战SAP程序开发_从实例学SAP_ABAP编程的清晰版本
SAP_ABAP_BADI SAP_ABAP_BADI 是 SAP 系统中的一种业务增强工具,BADi 全称为 Business Add-In,意为业务增强接口。它允许开发者对 SAP 系统进行业务增强和定制,使得系统更加灵活和实用。 从标题"SAP_ABAP_BADI...
标题“abap-ALV.rar_ABAP系统ALV_abap_abap开发alv”暗示我们将深入探讨ABAP ALV的使用,特别是在ABAP系统中的应用以及如何进行开发。 描述中提到“ABAP ALV总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用”,...
### SAP_BC_ABAP_Programming 知识点详解 #### ABAP编程简介 根据文档标题“SAP_BC_ABAP_Programming”以及描述中的同样内容,可以推断出本资料主要涉及SAP环境下ABAP(Advanced Business Application Programming...
SAP List Viewer (ALV) is a flexible tool used to display lists and tabular structures. It provides common list operations as standard functions and can be enhanced by user-specific functions. The SAP ...
这是实战SAP程序开发_从实例学SAP_ABAP编程的清晰版本
这是实战SAP程序开发_从实例学SAP_ABAP编程的清晰版本