使用FlexibleSearch查询删除Impex

2020-09-28 06:27发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我有一个小问题; 我不完...

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

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


你好

我有一个小问题; 我不完全知道我在做什么错,但这就是问题所在。 我想删除一大堆未使用的产品。

为此,我编写了一个FlexibleSearch查询,该查询获取任何订单条目未使用的所有产品pk:

 从{作为X的操作}中选择{X:pk}在{X:pk}不在的位置({{从{OrderEntry as E}}}中选择productpk
  

这很好。

然后,我想在REMOVE impex语句中使用它,而我写了这个

  REMOVE Action; pk [unique = true]
  "#%impex.exportItems(""从{动作作为X}选择{X:pk},在{X:pk}不在{{选择从{OrderEntry作为E}}}}}}"",Collections.EMPTY_MAP,  Collections.singletonList(Item.class),true,true,-1,-1);"
  

但这执行没有错误; 但什么也没去除...知道吗?

谢谢!

罗曼。

5条回答
clasier
2020-09-28 07:02

我创建了一个beanshell,以一种可控的方式执行删除操作,即按您自己的大小批量执行,并且您希望一次运行地删除条目的自定义限制。
使用此beanshell命令的步骤如下:
a)打开HAC。
b)转到控制台->脚本语言->将脚本类型设置为beanshell。
c)粘贴如下所示的bean shell代码:

  import de.hybris.platform.servicelayer.search.FlexibleSearchService;
  导入de.hybris.platform.servicelayer.model.ModelService;
  导入de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
  导入org.apache.log4j.Logger;
     
     
  final String QUERY_STRING =" <请在此处输入您的选择查询>>";
  final int BATCH_SIZE = 2000; //提供一次迭代中要删除的行数。
     
     
  记录器LOG = Logger.getLogger(FlexibleSearchService.class);
  FlexibleSearchService flexibleSearchService = spring.getBean(" flexibleSearchService");
  ModelService modelService = spring.getBean(" modelService");
  FlexibleSearchQuery fQuery =新的FlexibleSearchQuery(QUERY_STRING);
  fQuery.setCount(BATCH_SIZE);
  int count = 0;
  while(true){
          searchResults = flexibleSearchService.search(fQuery);
            if(searchResults.getCount()== 0 ||计数> =(BATCH_SIZE * 5)){
              打破;
            }
            计数=计数+ BATCH_SIZE;
            LOG.info(count);
            modelService.removeAll(searchResults.getResult());
  }

  

请记住在执行之前打开提交模式。

一周热门 更多>