使用6.4在后台产品主控室中克隆产品

2020-08-24 12:17发布

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

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


我正在尝试在后台克隆产品。 我可以创建一个productCloneAction,然后在编辑器区域添加一个克隆图标。 当我单击克隆时,它进入该类的操作方法,并给我一个无标题的弹出窗口。 我在这里想念什么? 我尝试使用create action作为模型。 我还为产品定义了一个clonewizard组件。

definition.xml

  克隆产品操作
  克隆产品操作
   PGade 
   0.1 
   org.backoffice.product.actions.ProductCloneAction 
 
   <插座>
       
       
       
   

    de.hybris.platform.core.model.product.ProductModel 
  

  <!-必须在以下目录中创建带有图标的文件夹图标:/backoffice/resources/widgets/actions/myaction->
   icons/clone.png 
   icons/clone_hover.png 
   icons/clone_disabled.png 




  

Widgets.xml

  
      
  

backoffice-config.xml

  
                  
                       targetComponent 
                       editorArea 
                  
                  
                       initializeEntity 
                       true 
                  
                  
                       contextComponentName 
                         sampleComponent 
                  
              
  

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

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


我正在尝试在后台克隆产品。 我可以创建一个productCloneAction,然后在编辑器区域添加一个克隆图标。 当我单击克隆时,它进入该类的操作方法,并给我一个无标题的弹出窗口。 我在这里想念什么? 我尝试使用create action作为模型。 我还为产品定义了一个clonewizard组件。

definition.xml

  克隆产品操作
  克隆产品操作
   PGade 
   0.1 
   org.backoffice.product.actions.ProductCloneAction 
 
   <插座>
       
       
       
   

    de.hybris.platform.core.model.product.ProductModel 
  

  <!-必须在以下目录中创建带有图标的文件夹图标:/backoffice/resources/widgets/actions/myaction->
   icons/clone.png 
   icons/clone_hover.png 
   icons/clone_disabled.png 




  

Widgets.xml

  
      
  

backoffice-config.xml

  
                  
                       targetComponent 
                       editorArea 
                  
                  
                       initializeEntity 
                       true 
                  
                  
                       contextComponentName 
                         sampleComponent 
                  
              
  
付费偷看设置
发送
7条回答
派大星 ヾ
1楼 · 2020-08-24 13:11.采纳回答

我为以下自定义产品创建了一个自定义组件clone-wizard

  
          
              
              
              
              
              
  
  

在definition.xml中,我添加了以下套接字

  
              
              
      
       java.lang.Object 
       java.lang.Object 
 


  

动作类编写如下

 公共类CloneAction扩展了AbstractComponentWidgetAdapterAware实现CockpitAction 
  {
 
      @资源
      私有PermissionFacade许可Facade;
      @资源
      私人TypeFacade typeFacade;
 
      @Autowired
      私有ExpressionResolverFactory expressionResolverFactory;
 
      公共对象readLocalizedValue(最终对象数据,最终String属性)
      {
          返回expressionResolverFactory.createResolver()。getValue(data,attribute);
      }
      公共ActionResult 执行(最终ActionContext  ctx)
      {
 
          ActionResult 结果= null;
          如果([[ctx.getData()CustomProduct的实例))
          {
              最终的CustomProduct数据=(CustomProduct)ctx.getData();
              最终Map  contextMap = new HashMap <>();
              contextMap.put(ConfigurableFlowContextParameterNames.TYPE_CODE.getName()," CustomProduct");
              contextMap.put(" configurableFlowConfigCtx"," clone-wizard");//调用自定义组件,在此处或在editorareaactions参数中进行设置
              contextMap.put(" name",readLocalizedValue(data,CustomProduct .NAME));
              contextMap.put(" summary",readLocalizedValue(data,CustomProduct .SUMMARY));
              contextMap.put(" description",readLocalizedValue(data,CustomProduct .DESCRIPTION));
              sendOutput(" cloneContext",contextMap);
              结果=新的ActionResult <>(ActionResult.SUCCESS);
          }其他{
          结果=新的ActionResult <>(ActionResult.ERROR);
          }
          返回结果;
          }

  
 

也请尝试删除editorareaaction参数或仅按如下所示进行设置。

targetComponent configurableFlow contextComponentName 克隆向导

让我知道是否成功。。谢谢Seb

Baoming ROSE
2楼-- · 2020-08-24 13:12

是目标组件的编辑区域或流程向导? 您可以在此处粘贴动作类吗? 谢谢sebin

一只江湖小虾
3楼-- · 2020-08-24 13:16

  @Override
  公共ActionResult 执行(最终ActionContext  ctx)
  {
      ActionResult 结果= null;
      如果([[ctx.getData()ProductModel的实例))
      {
          最终的ProductModel数据=(ProductModel)ctx.getData();
          最终Map  contextMap = new HashMap <>();
          contextMap.put(ConfigurableFlowContextParameterNames.TYPE_CODE.getName()," InsightProduct");

          contextMap.put(" code",data.getCode()+" Clone");
          contextMap.put(" name",data.getName());
          contextMap.put(" catalogVersion",data.getCatalogVersion());
          contextMap.put(" supercategories",data.getSupercategories());
          contextMap.put(" summary",data.getSummary());

          contextMap.put(" approvalStatus",data.getApprovalStatus());
          contextMap.put(" description",data.getDescription());

          尝试
          {
              this.sendConfiguredInsightOutput(ctx," cloneContext",contextMap," InsightProduct");
          }
          捕获(最终ObjectCreationException e)
          {
              LOG.error(e.getLocalizedMessage(),e);//80
          }
          LOG.info(" ctx.code ::" + data.getCode());
          结果=新的ActionResult <>(ActionResult.SUCCESS,数据);
      }
      其他
      {
          结果=新的ActionResult <>(ActionResult.ERROR);
      }
      返回结果;
  }

  protected void sendConfiguredInsightOutput(final ActionContext  ctx,final String socketId,
          最终Map  contextMap,最终String typeCode)抛出ObjectCreationException
  {
     //this.sendOutput("cloneContext",context);
      对象上下文;
      如果(this.shouldInitializeEntity(ctx))
      {//98
          最终对象newInstance = this.objectFacade.create(typeCode);//100
          最终对象组件= ctx.getParameter(" contextComponentName");//101
          最后的字符串componentName = ObjectUtils.toString(component,(String)null);//102
          最终字符串configCtx = StringUtils.defaultIfBlank(componentName,"");//103
          context = new ObjectWithComponentContext(newInstance,configCtx);//104

          对于(最终字符串键:contextMap.keySet())
          {
              (((ObjectWithComponentContext)上下文).setParameter(key,contextMap.get(key));
          }
      }
      其他
      {
          context = new CreateContext(typeCode);//108
          LOG.info("创建的对象类::::" +(typeCode));
      }

     //获取默认目录版本
      最终的CatalogVersionModel catalogVersion = catalogVersionService.getCatalogVersion(" insightProductMaster"," Staged");

     //设置目录版本
      LOG.info("创建的对象的类::::");

      如果(catalogVersion!= null)
      {
          LOG.info(" catalogVersion不为null");
          (((ObjectWithComponentContext)上下文).setParameter(" catalogVersion",catalogVersion);
          (((ObjectWithComponentContext)上下文).setParameter(" catalogVersionType"," CatalogVersion");
      }
      其他
      {
          LOG.info(" catalogVersion为null");
      }

      this.sendOutput(socketId,context);//112

  }

  受保护的布尔值shouldInitializeEntity(final ActionContext  ctx)
  {
      最终对象参数= ctx.getParameter(" initializeEntity");//117
      返回参数!= null && Boolean.valueOf(parameter.toString())。booleanValue();//118
  }

  @Override
  公共无效的initializeDefaultEventListeners()
  {
      this.addSocketInputEventListener(" clonededObject",(event)-> {//124
          this.sendOutput(" clonededObject",event.getData());//125
      });
  }//126
                                                                      
Doze时光
4楼-- · 2020-08-24 13:13

哦,不! 。 您是否尝试调试代码。 ? 当我尝试很久以后,此解决方案对我有用。请在此处检查 https://answers.sap.com/questions/12762657/backoffice-clone-passing-context-data-to-configura.html 。 我得到

三十六小时_GS
5楼-- · 2020-08-24 13:11

的帮助,谢谢您的答复。 我已经尝试过这种解决方案。 同样,只有一个空白弹出窗口,没有向导。

小熊yu生菜
6楼-- · 2020-08-24 13:18

您好,Pratiusha Gade,您可以提供解决方案吗? 我也没有向导也有空弹出窗口。

是否需要小部件连接配置?

Nan4612
7楼-- · 2020-08-24 13:18

问题出在克隆向导代码上。 首先尝试了create-wizard。 有效。

一周热门 更多>