EDI 发送处理的已知问题

本主题描述有关在 EDI 发送管道中处理的已知问题。

X12 隐式小数点导致长度验证失败

症状

当 EDI 发送管道将中间 XML 中的十进制数值转换为传出 EDI 交换中 Nn 格式的数字时,XML 交换无法通过长度验证。

可能的原因

序列化 X12 编码的 EDI 交换时,EDI 发送管道将始终将十进制数值转换为带有隐含小数点的 Nn 格式数字。 例如,如果中间 XML 文件中的值为 12.34,则 EDI 发送管道将在 EDI 交换中将其转换为 1234(指定为数值类型 N2)。 base-10 数值的长度将比 Nn 格式的数字长度多一位。 如果格式为 Nn 的数字的长度为最大值,则中间 XML 中的 base-10 数值可能会失败 XML 长度验证。

这是一个只涉及 X12 编码交换的问题。

解决方案

将值 1 添加到 XML 编号的最大长度值。

可能需要重置、存档或清除控制编号

如果任何控制编号达到字段的长度限制值,BizTalk Server 将引发错误并挂起数据交换。 必须重置在“EDI 属性”或“EDI 全局属性”对话框中输入的控制编号。

控制编号保存在 BizTalk MessageBox 数据库的 dbo.EdiSequenceNumbers 表中。 应通过清除表中的控制编号或根据需要存档控制编号来管理此数据库表。

可以通过在“EDI 属性”对话框中选择“超出范围时重置为下限”来启用控制编号的自动重置。

上下文属性名称中的数据元素名称包含下划线,而不是句点

EDI 段中的数据元素名称包含句号,例如 UNB2.1,这是用于 UNB2 发送方段的标识字段。 但是,当数据元素名称被包含在 EDI 上下文属性中时(例如,在发送端口的筛选器表达式中),句点会被替换为下划线。 例如,发送方标识数据元素的上下文属性为 EDI。UNB2_1,而不是 EDI。UNB2.1. 原因是上下文属性名称不支持句号。

来自数据元素的上下文属性值不得在筛选器表达式中包含前导或尾随空格

如果 EDI 交换信封中的数据元素包含前导或尾随空格,并且接收管道将提升具有该数据元素值的上下文属性,则接收管道将从上下文属性中删除前导或尾随空格。 因此,如果使用该上下文属性创建筛选器表达式,则必须为不包含前导或尾随空格的属性输入值。 如果筛选器表达式包含前导空格或尾随空格,则无法与不含前导空格或尾随空格的上下文属性匹配。

保留交换的默认方作为交换接收方属性将导致发送管道失败

如果 BizTalk Server 收到一个批处理交换需要保留(即交换因错误而挂起),那么如果作为交换接收方的属性被设置为默认值,该批处理交换所订阅的发送管道将会失败。 这些属性(如 ISA5、发送方限定符和 ISA6、发送方标识符)必须设置为有效值。 BizTalk Server 将发布一个错误,指示由于参与方配置无效而无法序列化消息。 此处理不正确,因为保留的交换在其标头中具有所需的配置设置,例如发件人限定符和发件人标识符。

如果 Send-Side Party 或全局设置指定不同的小数表示法,消息中的小数表示法将会更改。

如果交换中使用的十进制表示法与 UNA3 方属性为传出消息指定的十进制表示法不同,BizTalk Server 将在序列化交换进行发送时在交换信封中使用的小数表示法进行更改。 如果使用 UNA3 全局属性而不是 UNA3 party 属性,则这也是这种情况。 例如,如果传入消息中使用的十进制表示法是句点,并且 UNA3 方属性或确定传出消息的小数表示法的 UNA3 全局属性指定逗号,BizTalk Server 会将传出消息中的十进制表示法更改为逗号。

无法从业务流程中执行 EDI 发送管道

在 BizTalk Server 中,通常可以在业务流程中的表达式构造内执行发送管道。 但是,这不适用于 EDISend 管道或 AS2EdiSend 管道。 必须在发送端口内执行这些管道。 如果您在业务流程中的表达式形状中尝试执行 EDISend 管道或 AS2EdiSend 管道,管道将不会绑定到发送端口,消息会被挂起。

不得修改 BizTalk EDI 应用程序

不得修改或删除 BizTalk EDI 应用程序中的项目。 如果修改了此应用程序,则无法通过取消配置和重新配置 EDI 和 AS2 功能还原到原始应用程序。

使用功能组标头网格中的默认行可能会导致交换标头与组标头之间的 Message-Type 不匹配

如果传出 EDIFACT 编码交换的 UNH2.1 值与 UNG 和 UNH 段定义页中网格中“对于消息类型 UNH2.1”的值不匹配,则消息中输入的 UNG1 值可能与 UNH2.1 的值不对应。

发生这种情况的原因是 BizTalk 将使用网格的默认行中的 UNG1 值填充消息,即使该消息与该默认行的 UNH2.1 元素不匹配也是如此。

如果传出 X12 编码交换的 ST1 值与 GS 和 ST 段定义页中网格中的“For ST1”值不匹配,则消息中输入的 GS1 值将根据 ST1 的值动态确定。

数据元素中的无效字符

症状

使用 EDI 发送管道发送 EDI 交换时,可能会在应用程序事件日志中收到错误,指出数据元素中存在“无效字符”。

可能的原因

如果有效负载数据中包含的字符也用作分隔符,则可能会出现此错误。 例如,如果使用“:”字符作为组件分隔符,但有效负载数据也包含“:”字符。

这是一个只涉及 X12 编码交换的问题。

解决方案

使用 EDI 方属性中的 ISA 段定义 页中的 替换有效负载中的分隔符 设置,指定在发送交换时,应将有效负载数据中找到的分隔符替换为指定的替换字符。

例如,选择将有效负载中的分隔符替换为,然后输入“|”字符会在使用EDI发送管道发送交换时,将有效负载数据中的任何分隔符替换为“|”字符。

另请参阅

EDI 处理的已知问题
BizTalk Server 如何发送 EDI 消息
演练(X12):EDI交换文件发送