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

2020-09-10 11:19发布

         点击此处--->   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)

         点击此处--->   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-自律
1楼-- · 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

小c菟菟
2楼-- · 2020-09-10 11:43

Hello Quang,

返回十二月,我们的同事 Johannes Schneider 建议在您的BO中 -Extension文件,添加注释[Scenario(Scenario_Name)],该注释说明对于Scenario_Name,您必须添加创建的流程扩展方案的名称。

能不能别闹
3楼-- · 2020-09-10 11:29

您好 约翰尼斯·施耐德(Johannes Schneider)

感谢您的回复。 我与您有同样的想法,可以使用Odata来提高性能,但是我找不到在ABSL脚本中执行Odata的方法。

我尝试使用外部Web服务集成来使用c4c Odata api,但是在使用时总是会转储

您有使用Odata API的示例脚本吗? 感谢您的帮助!

此致

Huy-Nguyen

一周热门 更多>