原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
一
前言
最近帮用户解决了一个奇怪的PO问题
同一个接口,配置WEBSERVICE 发出能通过, 配置成 REST 发出系统报错
InterfaceDetermination did not yield any actual interface
本文主要介绍追踪这个报错并解决的过程
二
问题描述
同一个接口, 配置成WEBSERVICE 调用测试成功,配置成REST调用测试报错
开启详细日志之前. SOAPUI直接返回500错误及报错信息. 消息无法在消息监控其中查看, 但是可以在通道监控器中看到报错信息
Error while sending message to module processor: Sender Channel
'CCO_PMS_QMIS_P10061' (ID: c54145a5d6ab37c88091ad6f693b557c): Catching
exception calling messaging system: InterfaceDetermination did not yield any
actual interface
开启详细日志后(图一), SOAPUI返回202成功信息(图二)
图一
图二
消息进入消息监控器,看到报错信息
图三
三
问题解决过程
解决PO问题的大致过程
• 重新激活相关对象: Integrated Configuration / message mapping 等
• 通过INSPECT跟踪报错,获取详细报错信息
• google/bing报错信息
• 根据报错信息查找NOTES
• 检查接口的所有配置对象,看看是否存在因为粗心而导致命名不规范的对象.
**上述过程排名不分先后**
_**01** _
**查找NOTES**
InterfaceDetermination did not yield any actual interface
来自
https://launchpad.support.sap.com/#/notes/0002628224
notes的描述和报错信息很像,但并没有什么实际的用处.
_**02** _
**监控端口**
使用INSPECTOR的方式
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ PO系列之 使用XPI_INSPECTOR跟踪PO报错
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247487118&idx=1&sn=63a3cb6daacac2bafa8485ca4e689dc5&chksm=cf5dd3b8f82a5aae1cad36b48bd5ac43ecee857ce54e2389237aef4300b8a6baad45433d96bb&token=738161928&lang=zh_CN#rd)
判断报错的信息是通道处理时报错,因此尝试通过INSPECTOR监控动态的处理
分析监视的报错信息, (无法获取接口对象),也看不出什么头绪.
_**03** _
**重建对象**
因为报错信息涉及到消息确认,所以初步怀疑是IC(Integrated Configuration)对象的问题.
删除IC,SOAP调用接口报错信息改变, 重新创建IC后, 恢复原来的报错信息.
_重建或重新激活对象的目的是更新缓存. 之前碰到过很多因为缓存更新不及时或缓存失效而导致的报错.因此需要尝试一下该方式_
_**04** _
**问题解决**
发出的SERVICE INTERFACE 中的MESSAGE TYPE 用错了.
导致REST中的 ELEMENT NAME 和 SI 中的消息MESSAGE TYEP 不一样.
REST通道通过地址
/RESTAdapter/MTO_PMS_QMIS_P10061
查找 ENDPOINT (图四)找到通道, 通过通道中的ELEMENT NAME(图五)找到消息, 通过消息找到SEND SERVICE
INTERFACE(SI).
Element name 中定义的消息名没有被SERVICE INTERFACE 使用, 导致系统报错
InterfaceDetermination did not yield any actual interface .
而WEBSERVICE中没有报错的原因很简单: SOAP的调用地址中指定了 SEND SI(图六) ,无需查找. (通过参数interface )指定了SI
对象
图四
图五
图六
四
总结
PO配置时会涉及到很多对象, 因此对象命名必须规范(最好每种对象的名称字符长度都能固定),不符合规范的命名对象可以很方便的被发现.
推荐使用WEBSERVICE方式定义接口, 因为相比REST接口, WEBSERVICE 定义的内容更少,减少了出错的概率.并且生成WSDL定义文件,
便于其它系统引入使用.
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论