2020-08-20 22:32发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
由于从列表报告中发送了两个Odata请求,当前我面临性能问题
1。 要使用TOP和SKIP获取实体集条目,
2. $ COUNT以获取实体集中的条目数
但是,我已经使用分页处理了TOP和SKIP中的精选查询,并且效果很好。 但是,由于使用$ COUNT来显示整个实体集中的条目数,因此使用UP TO 0 ROWS调用了我的选择查询,并再次产生了问题。
请让我知道如何处理COUNT个请求。
谢谢
维杰
嗨,Vijay,
如果GET_ENTITYSET方法的实现未提供$ count的值,则此值由SAP Gateway框架计算。
这表示SAP Gateway 框架在不应用任何过滤器或不使用其他查询选项的情况下执行对GET_ENTITYSET的调用,并且它对结果集中的条目数进行计数。
如果您检查是否可以对$ count的值进行优化,则可以优化计算 已请求$ count并自己执行计算。
您可以在以下类的方法so_get_entityset中检查该类的实现
/IWBEP/CL_GWSAMPLE_BAS_DPC_EXT ETHOD,该实现属于
代码首先检查$ count或$ inlinecount(提供所有查询选项后的条目数)
lv_has_count = io_tech_request_context-> has_count()。 lv_has_inlinecount = io_tech_request_context-> has_inlinecount()。
,然后通过在相应表上执行SELECT COUNT语句而不是检索实体集的所有条目来计算这些值。
如果请求$ count,我们只需要计算 过滤记录 IF(lv_has_count EQ abap_true)。 选择COUNT(*)INTO(lv_count) FROM(snwd_so AS的 内连接snwd_bpa AS b ON b〜node_key = s〜buyer_guid) 在(lv_where_clause)。 es_response_context-count = lv_count。 其他。 *我们是否需要提供内联计数以及客户端分页? IF(lv_has_inlinecount EQ abap_true)和(lv_top> 0或lv_skip> 0)。 选择COUNT(*)INTO(lv_count) FROM(snwd_so AS的 内连接snwd_bpa AS b ON b〜node_key = s〜buyer_guid) 在(lv_where_clause)。 es_response_context-inlinecount = lv_count。 ENDIF。 最好的问候, 安德烈
最好的问候,
安德烈
Andre Fischer :完美回答了我的问题
最多设置5个标签!
嗨,Vijay,
如果GET_ENTITYSET方法的实现未提供$ count的值,则此值由SAP Gateway框架计算。
这表示SAP Gateway 框架在不应用任何过滤器或不使用其他查询选项的情况下执行对GET_ENTITYSET的调用,并且它对结果集中的条目数进行计数。
如果您检查是否可以对$ count的值进行优化,则可以优化计算 已请求$ count并自己执行计算。
您可以在以下类的方法so_get_entityset中检查该类的实现
/IWBEP/CL_GWSAMPLE_BAS_DPC_EXT ETHOD,该实现属于
代码首先检查$ count或$ inlinecount(提供所有查询选项后的条目数)
,然后通过在相应表上执行SELECT COUNT语句而不是检索实体集的所有条目来计算这些值。
Andre Fischer :完美回答了我的问题
一周热门 更多>