当前位置: 首页 > Web前端 > HTML

搜索分页处理在S-4HANAforCustomerManagement

时间:2023-04-02 21:22:20 HTML

这篇文章的英文版我发在SAP社区:PagingImplementationinS/4HANAforCustomerManagementhttps://blogs.sap.com/2018/03/28/paging-implementation-in-s4hana-for-customer-management/根据我的公众号文章,S/4HANAforCustomerManagement1.0中的ServiceRequestUI仍然是使用CRMWebclientUI技术开发的。假设我在UI上指定了一个最大命中值为200:每页默认显示20条数据,所以200条搜索结果一共分10页显示。关于CRMWebClientUI的分页机制,有两个关键点:1、点击搜索按钮后,会从数据库中取出指定最大命中数的记录,存入内存区WebClientUI应用程序。在我的示例中,我将最大命中数指定为200,因此从数据库中检索了200个服务请求。2、WebClientUI是一种服务器端渲染技术,是指将所有WebClientUI页面对应的html源码在ABAP服务器中渲染,然后直接在浏览器中显示。在搜索场景下,在任何时间段,ABAP后台只会生成默认20条搜索结果的html源码。比如我点击搜索按钮后,后台只生成第1条记录和第20条记录的html源码,然后返回给浏览器渲染。当我点击第二页的超链接“2”时,后台会相应生成第21至40项的源代码。下面是一些技术细节。1.您可以使用事务代码ST05找到S4CRM的ServiceRequest搜索查询的CDS视图CRMS4_SERVHSRCH的名称。第201条记录被丢弃:在视图ICCMP_INBOX/INBOXRESULTVIEW.HTM中设置断点,在调试器中查看变量“me”:passed这条路径可以找到存储在内存中的200条搜索结果:{O:5768*CLASS-POOL=CL_BSP_WD_COLLECTION_WRAPPERCLASS=LCL_COLLECTION_REF}-IF_BSP_WD_COLLECTION_REF~COLLECTION2。从第21行到第40行记录的html源码可以在Chrome开发者工具中观察到,如下图:后台如何知道应该从第21行开始准备它的html源码?这个索引信息从前台传到后台,通过http请求头的字段:ItemTree_visibleFirstRow。如果对下图这样的前缀C36_W138_V139_的生成逻辑不清楚,请参考我的博客WebClientUI元素ID生成逻辑在CL_THHTLB_CELLERATOR~GET_REQUEST_PARAMETERS方法中设置断点,找出后台解析传入的visibleFirstRow的位置前台请求:在BSP渲染类CL_THHTLB_CELLERATOR中,这个变量gv_visible_first_row用于渲染的起始索引:lv_current_row_index:每行每个单元的源代码在循环中依次生成。Circulatetable-basedcolumndefinition,我的系统目前默认配置,搜索结果有8列:为了调试,可以在变量GT_TABLE_ENTRIES中查看当前页面显示生成的html源代码:例如,对于第二页,indexstartat21:endat40:为什么变量gt_table_entries有168条记录?每页默认显示20条记录,加上1行表头,每条记录有8列,所以最终结果为(20+1)*8=168