SAP Work Manager-加载修改了BAPI类的自定义jar文件时出错?

2020-09-14 05:46发布

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

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


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

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


付费偷看设置
发送
2条回答
Nan4612
1楼-- · 2020-09-14 06:10

费尔南多,

在座舱中进行部署期间,将需要修改javaBE.ini以便在其中声明ZNotificationEditBAPI。

操作1:通常,使用的文件位于javaBE.ini的底部。 确保您的ZNotificationEditBAPI在javaBE.ini中。

这可能是错误显示的原因:

2018.05.07 19:01:14.518 |错误| 544 ||||||从ini文件或SAP配置(com.syclo.sap.component.custom.notification.bapi.ZNotificationEditBAPI)初始化BAPI类时出错 。 请检查JavaBE.ini文件。 java.lang.ClassNotFoundException:com.syclo.sap.component.custom.notification.bapi.ZNotificationEditBAPI

动作2:您也可以尝试更改classPath的顺序,以查看是否可以在另一个主WM641 * .jar文件后面读取自定义jar文件,这可能是导致问题的原因。

问候,

标记

野沐沐
2楼-- · 2020-09-14 06:14

Mark Pe

我应用了您建议的更改,但是根本没有用。 我想要做的是创建一个示例自定义Java项目并在后端系统中保存一些数据,因此我选择在workmanager中使用Notification部分,然后选择将字段通知描述(SAP的SHORT_TEXT)保存在另一个字段(SAP的REPORTEDBY)中 通知时结构的结构(SAP的IS_NOTIF_HEADER)。

到目前为止,我们已经完成了以下工作:

在Java级别

这是我的Java项目,我明确参考了workmanager-6.4.1.0类,并以与标准相同的方式调用了我的类,但是我之前添加了Z字母,您可以在附加图像中看到它。/p>

一位顾问说,我如下引用对象,重写其构造并替换setProperties方法。 因此,我从NotificationEditBAPI开始,但后来我意识到我也必须修改NotificationAddBAPI。

然后,我自己工作并修改NotificationEditBAPI,但是在这里,当构造函数父类要求我引用它并且调用超级方法并将引用放置到类ZNotification时,我遇到了问题。 我也复制了settHeaderParameters方法,甚至我分别使用log4j和更改放置了一些打印件:

setEditValue(header,xStruct," REPORTEDBY",_notification.getDescription());

另一方面,我读了一篇文章,说修改BAPI类以使更改生效,所以我从ZNotificationEditStepHandler类引用了NotificationEditStepHandler,重写了它的构造函数并复制了它的run方法,但是更改了对BAPI类的引用,就像它看到了 下一张图片。

完成更改后,我们创建了一个名为sapwn-1.0.2.jar的自定义jar文件,并将其挂在服务器上,由于我们处于生产逻辑中而更改了类路径,重新启动了应用程序,但尝试执行时却在ATE中 为了发送通知,我们在NotificationPostCurrent中遇到了问题,由于这些原因,我们也选择更改NotificationPostBAPI。

您可以看到上面的类是从ZNotificationAddBAPI而不是从NotificationAddBAPI引用的,这是因为NotificationAddBAPI是NotificationPostBAPI的父类,并且它的构造函数引用Notification类。 请记住,我们创建了ZNotification类,因此我们也需要引用NotificationAddBAPI。 我已经复制了整个setHeaderParameters方法并更改了下一行:

setValue(header," REPORTEDBY",_notification.getDescription());

我认为在传输数据时要简短描述。

我知道Steplet,StepletHandler,BAPI和SapObject之间存在关系。 由于这种关系,我了解到我也必须引用NotificationPostStepHandler,但是您可能会看到下一个图像,该图像使用父StepHandler类完成了该类的副本。 我没有引用它,因为它具有getNotificationPostBAPI和getNotificationPostUpdateBAPI方法,并且它们返回BAPI的对象,当我尝试引用时,我遇到了编译问题,最后我不得不复制整个类。

在上图中,您可以看到NotificationPostUpdateBAPI在run方法中也被调用。 它的类的父级是NotificationPostBAPI,这是由于我使用了自己的类,因此也应引用它们。 下图显示您如何执行此操作。

在"配置面板"级别

我维护了SAP标准对象(BAPI CLASS,BAPI WRAPPER,STEPHANDLER),其中一些启用而其他禁用(Act.Flag显示此信息),但是我创建了新的自定义对象,并且所有这些都启用了。

我修改了一个通知,当我从ATE传输时,在服务器日志,应用程序日志和服务器日志参考Worker 3196中遇到了问题,无论如何这都是它的日志。

我做错了什么?

为什么我的Java自定义jar文件不起作用?

也许我的Java类中可能有一些不正确的东西?

感谢前进。


其他问题

有了这些更改,我还没有遇到与JavaBE.ini文件有关的问题,真的,需要配置JavaBE.ini文件以应用BAPI更改吗?

一周热门 更多>