执行查询竞争对手需要很长时间

2020-09-10 11:19发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)亲爱的朋友, 当我像这样执行竞...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的朋友,

当我像这样执行竞争对手的查询时

//开始按销售组织获取列表竞争对手
//1。 询问
 var竞争对手Query = BusinessPartner.QueryByCommunicationData;


//2.选择
 var passengerSelectionParams = partnersQuery.CreateSelectionParams();


//3.按销售组织ID筛选竞争对手
 passengerSelectionParams.Add(competitorsQuery.CompetitorSaleUnitCode_EA8AE8AUBVHCSXVYS0FJ1R3ON.content," I"," EQ",this.LeanLeadSalesUnitCode.content);
 passengerSelectionParams.Add(competitorsQuery.BusinessCharacterCode.content," I"," EQ"," CRM005"); //尝试通过BusinessCharacterCode过滤竞争对手的数据


//4.结果
 var CompetitionsResultData = partnersQuery.Execute(competitorsSelectionParams);



 

对于这样的简单代码,需要10分钟才能获得300条记录,总记录约为8000条。 您能帮我优化此查询吗?

(30.7 kB)
3条回答
CPLASF-自律
2020-09-10 11:20

嗨,广

Fabio所说的是正确的,但看来您已经完成了这一步。

当我们谈论命中500个以上条目的查询时,实际上,SAP内部查询存在很大的性能问题。

我建议您使用oData服务解决此问题。

要使用扩展名字段过滤oData,您需要创建oData扩展文件。

之后,您可以在brwoser中构建一个示例oData查询,稍后将在代码中使用。

请注意,oData一次只能检索1000个条目(数量仍然太多)。

我宁愿使用命令top并跳过oData查询。 如果top = 100,您将只收到前100个条目。 如果使用skip = 100,则可以跳过前100个条目,然后选择101-200。

现在,您可以使用top = x和skip = y并在while循环中使用它们来选择所有条目。

一旦没有条目,oData就会抛出一个错误,您可以处理该错误以中断while循环并继续您的工作。

还请注意,这可能会给sap系统带来一些网络性能问题,因为您将对系统进行n次调用(因为我们没有内部odata api)

真正有助于内部查询的唯一选项是查询的top和skip功能。

它目前正在开发中(或者我不知道已经停止了),但是实现它的请求很多。

亲切的问候,

Johannes

一周热门 更多>