巧用EDI分隔符

什么是 EDI 分隔符?

在阅读 EDI 报文的时候,会看到除了各种各样的 EDI 数据段之外,还有许多特殊字符(如X12报文中的*分隔符)穿插其中,这些特殊字符在 EDI 报文中承担着分隔不同业务数据的作用,被称为EDI分隔符。

都有哪些常见的 EDI 分隔符?

我们以常见的 X12 和 EDIFACT 报文为例:

1.X12

edi

以上是 X12 示例报文,可以看到除了英文和数字之外,还有字符 *,这里的 * 即是 EDI 报文中的数据元素分隔符。

2.EDIFACT

edi

以上是 EDIFACT 示例报文,其中 + 为 EDI 报文中的数据元素分隔符, : 是组件元素分隔符,而 ' 则是段终止符。

除了以上提到的两种常见的分隔符以外,还可以自定义分隔符。

以知行之桥 EDI 系统中的 EDIFACT 端口为例,在 高级设置 > EDI 分隔符 中即可进行设置。

edi

这些 EDI 分隔符分别表示哪些含义呢?

数据元素分隔符:分隔文档中各个数据元素的字符。
组件元素分隔符:在文档的复合数据结构中分隔元素的字符。
段终止符:指示文档中某一段结束的字符。
转义字符:“释放”下一个字符的字符,覆盖其通常的含义。这允许保留字符在文档中显示为数据,只要它们前面有转义字符。
重复元素字符:表示元素值重复的字符。
后缀:附加到段终止符以区分不同数据段。

X12 端口如下所示:

edi

EDI 分隔符在业务场景下的应用

场景一:业务数据中的符号与分隔符冲突导致转换 X12/EDIFACT 报文有误

X12报文转换

A 公司的业务系统上传业务数据至知行之桥 EDI 系统,通过 X12 端口转换为 X12 报文时,输出结果有误。

造成报错的原因是 A 公司推来的业务数据中有特殊符号,恰巧与已有的 EDI 分隔符冲突了。

解决办法1:

在知行之桥EDI系统的X12端口中,修改与业务数据冲突的EDI分隔符。如下图所示:

edi

修改EDI分隔符需要和A公司的交易伙伴进行沟通,询问对方是否能够处理修改后的分隔符。

解决办法2:

如果交易伙伴告诉我们不可以修改EDI分隔符,应该如何处理?

因为X12标准没有转义字符,和A公司沟通之后,我们将特殊字符统一转成了空格或者留空,这样就避免了在转换 X12 报文时,因为分隔符冲突产生的报错。

通过 replace 格式化器解决:

replace(oldvalue, newvalue[, ishex])

用第二个参数的值替换属性值所代表的字符串中出现的所有第一个参数。

  • oldvalue:要替换的字符串。
  • newvalue:要替换第一个参数的所有出现的字符串。
  • ishex:可选的布尔值,用于指定第一个参数是否是要替换的字符的十六进制表示。默认值为 false 。

示例:

我们在 XMLMap 端口中使用如上格式化器,对业务数据中的特殊符号进行替换,示例如下:

edi

EDIFACT 报文转换

以上问题如果在EDIFACT中应该如何处理呢?

EDIFACT国际标准中,支持转义字符。因此针对上述问题我们可以在业务数据与分隔符冲突的符号前加上转义字符即可解决。知行之桥EDI系统中,默认的转义字符为: ? 如下图所示:

edi

企业也可以根据实际需求对转义字符进行自定义设置,需要和交易伙伴提前进行沟通,确保交易伙伴支持您自定义的转义字符。

场景二:保留节点

在 Y 公司对接 NIKE 的 EDI 项目中,通过知行之桥 EDI系统的 X12 端口将目标XML 文件转换为 X12 报文,设置的 EDI 分隔符如下:

edi

将冒号设置为组件元素标识符,Y 公司希望即使RFF段结尾没有业务数据也要保留当前RFF段,输出为 RFF+AHJ:’

需要在X12端口的高级设置选项卡下的特殊设置中添加:

includeemptyelements = true

如图所示:

edi

场景三:EDI 分隔符支持设置以0x开头的16进制值

edi

除了常见的以单个字符作为 EDI 分隔符以外,还可以设置以 0x 开头的16进制值。例如:在 X12 端口的高级设置下,将数据元素分隔符设置为 0xa0。

结果如下:

注意:不同的交易伙伴可能会对元素分隔符有特殊的要求,具体使用哪些元素分隔符需要以交易伙伴提供的示例文件为准。

场景四:段终止符为空且支持换行

H 公司的交易伙伴提出,他们需要接收的 X12 文件格式如下:

在 EDI 系统中,设置 EDI 分隔符中的段终止符为空格是否可以实现上述效果呢?如下图所示:

edi

仅简单的设置段终止符为空格,EDI 系统将会提示报错。我们还需要在EDI系统的安装目录下,找到 X12 端口下的 port.cfg 中加上:

保存修改后,再次发送文件,即可成功转换为上述交易伙伴要求的格式啦!

注:
port.cfg路径示例:

edi

C盘>ProgramData>ArcESB>workspaces>CompanyA>CompanyA_XMLToX12_P

其中ProgramData是隐藏文件夹,CompanyA_XMLToX12_P是CompanyA工作区中被命名为CompanyA_XMLToX12_P的X12端口。

更多EDI信息,请参阅: EDI 是什么?

了解更多EDI信息,请您电话 137-2065-8862 或邮件 sales@kasoftware.cn 联系我们。点击下方蓝色按钮,即可免费试用EDI软件。

注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。

标签: , , ,
文章分类 帮助文档, 常见问题和回答, 知识库