点击此处---> 群内免费提供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)
嗨,广,
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
Hello Quang,
返回十二月,我们的同事 Johannes Schneider 建议在您的BO中 -Extension文件,添加注释[Scenario(Scenario_Name)],该注释说明对于Scenario_Name,您必须添加创建的流程扩展方案的名称。
您好 约翰尼斯·施耐德(Johannes Schneider)
感谢您的回复。 我与您有同样的想法,可以使用Odata来提高性能,但是我找不到在ABSL脚本中执行Odata的方法。
我尝试使用外部Web服务集成来使用c4c Odata api,但是在使用时总是会转储
您有使用Odata API的示例脚本吗? 感谢您的帮助!
此致
Huy-Nguyen
一周热门 更多>