问题标签 [sap-pi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - WCF 客户端调用单向操作的问题
从我的 WCF 客户端调用 SAP PI 总线上的 Web 服务时遇到问题。操作定义为单向,我的代理操作合约上的方法在添加服务引用时进行了相应的修饰。但是,服务客户端在调用相应操作时会出现异常:
单向操作返回了一条带有 Action='' 的非空消息
使用 SoapUI,可以成功调用总线上的方法,并返回一个空主体的 SOAP 信封。巴士人员告诉我,这是根据 SOAP 规范:
(SOAP 规范,第 4.7.9 章,单向操作):
在执行单向操作时如何使用 HTTP 有不同的解释。
R2714对于单向操作,实例不得返回包含信封的 HTTP 响应。具体来说,HTTP 响应实体主体必须为空。
R2750消费者必须在单向操作中忽略 HTTP 响应消息中携带的信封。
R2727对于单向操作,消费者不得将成功的 HTTP 响应状态代码(即 2xx)解释为消息有效或接收者将处理它。
看来,我的 WCF 客户端不符合 R2750。
我发现当我强制代理上的操作合同为IsOneWay = false时,一切正常。
WCF 处理单向操作的方式有什么问题,还是我做错了什么(更有可能)?还有什么我应该做的吗,覆盖生成的 WCF 代理客户端似乎不正确。
感谢您的任何建议。
architecture - SAP PI 组件。不同的环境
我们正在将 PI 集成到我们的系统环境中。
我在 SAP Best Practices for Naming Conventions 中读到,您应该在业务系统名称中包含阶段/环境。
例如:BS_SOMEJMS_P(作为生产的 P)
我的问题是;在不同的组件中,例如接收方确定,您包括业务系统名称。从技术上讲,这意味着您必须为每个不同的环境创建一个接收方判定?我习惯于处理单个组件,它从差异环境的配置文件中获取它的环境变量。
.net - CX_ST_MATCH_ELEMENT:通过 WCF 调用 SAP PI 服务时出现 XSLT 异常
我有一个通过 XI/PI Web 服务与 SAP 功能模块通信的 C# 应用程序。
我的 C# 代码使用 Visual Studio 生成的 WCF 代理(通过 Visual Studio“添加服务引用...”向导生成。
我收到带有消息“ CX_ST_MATCH_ELEMENT:XSLT exception.System expected element 'EReturn' ”的 System.ServiceModel.FaultException。
“EReturn”是一个数组,用于功能模块的响应,但不用于输入。我可以使用旧的 webMethods 服务将此字段保留为空。此消息是否告诉我需要为 XI 服务初始化它?
.net - 调用 SAP PI Web 服务时出现“不是符合 ABAP 的 XML 格式的有效日期”错误
我得到这个 System.ServiceModel.FaultException 通过 WCF 从我的 .NET 应用程序调用 SAP XI/PI Web 服务:
CX_SY_CONVERSION_NO_DATE_TIME:XSLT 异常。在简单转换程序 /1BCDWB/WSSB430AA018B4EA689BF0 中反序列化时发生错误。值 7/12/2010 不是符合 ABAP 的 XML 格式的有效日期
有问题的日期是我使用 .NET DateTime.ToShortDateString() 方法格式化的字符串字段。
谁能告诉我日期的有效“ABAP 的 XML 格式”是什么?
c# - HTTP 状态 401:从 ExtendedPSI 调用时未经授权
我目前正在尝试开发一个 ExtendedPSI Web 服务,该服务反过来调用许多现有的 PSI Web 服务。问题是我收到错误
System.Net.WebException:请求失败,HTTP 状态为 401:未经授权。
当我尝试使用我创建的 ExtendedPSI 访问现有的 PSI 服务时。
如果我使用以下代码段对我的 ExtendedPSI 中的凭据进行硬编码,我可以让服务正常工作:
但不是当我使用:
(我已经尝试过 CredentialCache.DefaultNetworkCredentials 但通过 HTTP 或 FTP 读到这不起作用)
我已经阅读了许多帖子,其中包括在客户端 web.config 或调用 webapp 的虚拟中启用 Windows 身份验证和删除匿名访问等建议,但是我使用 SoapUI 调用 ExtendedPSI 服务,因为最终解决方案将被调用通过 ESB 平台(即 SAP PI)。
但是使用 SoapUI,我已经设法通过在 SoapUI 界面中提供我的登录详细信息来依次调用每个现有 PSI 服务(在我的 ExtendedPSI 服务中调用的 Web 服务),这样我就知道现有服务只要我可以传递凭据就可以工作但是在使用CredentialCache.DefaultCredentials时它们是空的。
希望这对某人有意义(这是我第一次尝试 Web 服务,所以如果它有点含糊,我很抱歉)。我真的不想在我的服务中硬编码登录详细信息,所以我希望有人以前遇到过这个问题并且有一个我可以使用的解决方案......
我需要的信息是否与 HttpContext 一起保存?我可以通过的加密令牌(刚刚到达这里:)?或者我需要一个通用用户来访问这些现有的 PSI Web 服务吗?
仅供参考:我关注了文章http://msdn.microsoft.com/en-us/library/bb428837.aspx(我已经进一步扩展以调用现有的 PSI),但它假设某种 MS.NET 客户端调用该服务.
提前致谢...
问候, TartanBono
.net - ISV 公司的最佳 SAP 集成实践?
我们是一家较小的 ISV 公司,开发的产品在安装在客户环境中时通常最终依赖于 SAP 集成。
我们现在正在寻找将我们的产品与 SAP 集成的最佳方式——尽可能采用最标准的方式。我们需要一个能够以最少的工作量为大多数可能的客户工作的解决方案(其中一些确实没有自己的 SAP 资源)。
我们需要接收一些基本信息,例如客户、地址、库存物品。我们还需要将发票信息发送给 SAP,以便在那里进行进一步处理。
例如,在这里阅读一些内容后,看起来 NetWeaver 和 PI 是最好的选择。但是,这是否需要在客户端 PI 端进行大量开发才能公开和调用正确的服务?那怎么解决?
另一个问题是所有 SAP 客户都拥有 NetWeaver 是否正常?我需要我的解决方案为我们所有的客户工作,其中一些是安装较小 SAP 的中型 SAP 客户。
如果 PI 不可行,我的选择是什么,利弊是什么?
2010 年 12 月 30 日更新 - 要求。 我们需要满足的一些要求是:
- 我们解决方案产品端的基于 .NET 的解决方案(例如 WCF)。
- 不要使用像 BizTalk 等昂贵的集成平台。我们需要一个基于例如 AppFabric 和 WCF 的标准解决方案。
- 处理批量更新(如客户批次等),但也处理响应/请求,如呼叫。
wcf - 在来自 .NET 的 SAP PI 调用中使用基本身份验证
尝试使用 C#.net 控制台应用程序调用 SAP PI Web 服务时,我收到以下错误消息:
我的自定义绑定如下所示:
如果我在上面做错了什么,有人可以纠正我吗?谢谢你。
wcf - 发送到 SAP PI 时 SOAP 请求不正确
我正在使用 SAP PI Web 服务,但由于某种原因它无法正常工作。我在想是因为下面的 SOAP XML 不正确:
这是 SAP PI 所期望的:
这就是我要发送的内容:
是否有任何方法(以编程方式或配置)可以在客户端完成,以便按照服务器的预期格式化 XML 请求?
或者,它应该在 WSDL 中修复,并且客户端程序(我的程序)会自动生成所需的 xml?
谢谢大家。
sap - SAP PI 7.1 中的自定义适配器创建
我们需要在 PI 中创建自定义适配器。你们能帮我分享你的想法和经验吗?
我正在使用 PI 7.1。如您所知,声誉低于 1500 的用户无法创建新标签。标签“sap-pi”是新的。所以我使用了 sap-xi 标签
php - PHP SOAP 没有捕获 SAP PI/XI SOAP 错误
我向 SAP PI Web 服务发出 SOAP 请求。该服务返回 SOAP 错误,如下所示:
在 PHP 中,我确实遵循:
它打印null,但应该是异常
如果我在自己的 Web 服务中输出相同的 xml(soap 错误),我会发现它。