为什么我的插件在PL1或PL2中不起作用

2020-08-21 16:04发布

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

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


我一直在开发一些用于客户结帐的功能,并且一切正常,直到我决定升级到FP08 PL1,我还测试了更新到PL2仍然无法正常工作。

这似乎很奇怪,因为JS代码可以很好地工作,但是JAVA代码却不能工作。 在宣言中,我似乎没事。

有人知道为什么会这样吗?

谢谢

何塞。

(20.6 kB)

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

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


我一直在开发一些用于客户结帐的功能,并且一切正常,直到我决定升级到FP08 PL1,我还测试了更新到PL2仍然无法正常工作。

这似乎很奇怪,因为JS代码可以很好地工作,但是JAVA代码却不能工作。 在宣言中,我似乎没事。

有人知道为什么会这样吗?

谢谢

何塞。

(20.6 kB)
付费偷看设置
发送
10条回答
Cikesha
1楼 · 2020-08-21 16:49.采纳回答

Robert Zieschang

尝试您告诉我的内容,控制台可以完美运行。 但是在代码中,您不知道会发生什么吗?

nice_wp
2楼-- · 2020-08-21 16:57

您好José 雷耶斯(Reyes)

对事件总线的访问方式也有所改变。 您可以这样访问它:

 Plugin.MyCoolCcoPlugin = class MyPlugin {
   构造函数(pluginService,eventBus){
     this.pluginService = pluginService;
     this.eventBus = eventBus;
     this.init();
 }

   在里面() {
    //订阅
       this.eventBus.subscribe({
         'handleEvent':(事件)=> {//处理事件}
       });
    //将事件推送到插件后端->第一个参数是您的事件ID,第二个是您可能想要的json负载
    //发送到您的插件
     this.pluginService.backendPluginEvent('MY_COOL_EVENT',{
       'json':'jsonvalue'
    });
   }
 } 

对任何语法错误(缺少分号或})表示歉意,但没有代码完成。 :)

在您的cco插件中,您现在必须实现一些侦听器:

 BroadcastHolder.INSTANCE.addEventChannelListener(new UIEventChannelListener(){
   @Override
   公共无效handleEvent(String eventId,JSONObjectpayload){
     如果(" MY_COOL_EVENT" .equals(eventId){
      //为您的活动做点事
     }
   }

 }); 

希望这会有所帮助。

致谢

Robert

nice_wp
3楼-- · 2020-08-21 16:42

您好何塞·雷耶斯(JoséReyes)

您可以在客户结帐的标准日志中查找要运行插件的位置吗?

它 加载插件时会生成一些日志条目。 Cco可能会提示您,这可能是什么问题

这些日志条目可能类似于以下内容:

 2019-08-03 15:47:51,004 [main] INFO com。  sap.scco.ap.plugin.PluginManager-在" E:/XXXXX/XXXXXX/100_CCO_2.0_FP08_Release/cco/temp/.POSPlugins/AP0"中加载插件... 

PS:我建议 您使用maven有效地构建插件。 看看我的博客系列,其中我会详细解释内容。

https://blogs.sap.com/2018/10/16/sap-customer-checkout-plugin-development-part-i/

如果您有任何疑问,请随时与我联系。 我会尽快回覆您。 :)

哎,真难
4楼-- · 2020-08-21 16:47

嗨罗伯特,

感谢您的回答。

我正在分析正在发生的事情,并且我注意到我使用" window.ccoEventBus.push"进行的调用,例如:

window.ccoEventBus.push(" BACKEND_PLUGIN_EVENT",{" eventId":" CUSTOM_EVENT"," payload":{" Test":" testpayload"}}});

返回错误:" TypeError:无法读取未定义的属性'push'"

我怀疑也许这些属性已针对这些版本进行了重命名。 因为之前它对我来说是完美的。

当学会了学习
5楼-- · 2020-08-21 16:55

您好JoséReyes

您是尝试使用chrome开发人员控制台推送到事件总线还是从插件中获取此实际的js代码?

注意事项

Robert

追夢秋陽
6楼-- · 2020-08-21 16:58

您好JoséReyes

您可以添加 在浏览器中向您的uri发送以下内容:

?DEBUG = 1338(结果应如下所示-> localhost:9999/uuid/?DEBUG = 1338)

使用FP08 eventbus仅在激活了调试模式的chrome开发人员控制台中可用。

您现在可以像这样访问eventbus:

 this.ccoEventBus 

可以订阅和收听这样的事件:

 this.ccoEventBus.subscribe({'handleEvent':(event)=> {{console.log(event);}}}); 

希望这会有所帮助。

致谢

Robert

天桥码农
7楼-- · 2020-08-21 16:49

嗨,Robert Zieschang

我当前使用的版本是:

是的,我尝试在每个控制台的PL02中使用相同的事件,但是请注意,甚至没有相同的事件" window.ccoEventBus.push"。

例如在我的版本中,我可以这样做:

但是在PL02中甚至不存在

此致

Jose

一周热门 更多>