可能有朋友遇到这样的问题,首先考虑的是“关机-重启”这样的方案,即删除、重建。重建后,再告知外部系统新的wsdl地址。
可遇到以下两种架构,这样的解决方案就欠妥了:
1、SAP - 中间件 - 外部系统。要通知中间件我们的新wsdl地址,还要告知外部系统如何调用。
2、SAP - 多个外部系统。如果我们发布了一个服务,让多个外部系统来调用,那么更新了wsdl后,就需要通知到所有的外部系统,很麻烦。
如何在不变更wsdl地址的情况下,更新webservice的服务定义呢?
下文介绍两种场景:
1、调整了RFC函数的参数。
这时候,我们可以去SE80里找到相应的服务定义,进入编辑模式,点击工具栏上的检查按钮。如果RFC函数的参数变更引起了不一致,系统会提示我们是否进行调整。我们只要点击调整,然后激活即可。
2、针对函数组发布的WebService,后续新增了RFC函数。
在SE80里找到相应的服务定义,在External View或Internal View页签中,右键弹出菜单,添加函数模块,激活。
在笔者的系统(S4 1909)中,执行上述操作后,wsdl中可以看到新的函数模块,但是在调用时却遇到了系统提示的错误“服务不支持”。
查看了一下SOAMANAGER里的服务配置,如下:
问题1:服务定义里,操作列表有两个。Endpoint里,操作却只有一个。
问题2:Wsdl里,新添加的这个没有soapaction。
通过SRT_UTIL查看错误日志,对应的消息号是SRT_WSP982。
然后笔者去官网搜了一下,找到了解决方案,如下:
打这个补丁之前,确实没有更好的解决方案。但打了补丁2610321之后,再执行程序SRT_DT_ADJUST_CONFIG,最后再去SOAMANAGER中激活一下,就可以完美解决这个问题了。
————————
领取专属 10元无门槛券
私享最新 技术干货