如何理解 EDI 文件?
Posted
技术标签:
【中文标题】如何理解 EDI 文件?【英文标题】:How to understand an EDI file? 【发布时间】:2010-11-28 16:36:47 【问题描述】:我以前见过 XML,但我从未见过像 EDI 这样的东西。
如何读取此文件并获取我需要的数据?我看到了 ~、REF、N1、N2、N4 之类的东西,但不知道这些东西是什么意思。
我正在寻找示例和文档。 我在哪里可以找到它们?
阿斯洛 我发现的 EDI 指南说它基于“ANSI ASC X12/ver. 4010”。 我应该搜索表单 X12 吗?
请帮忙。
【问题讨论】:
hibcc.org/EBUS/editemplates.htm 有一些与医疗保健相关的 EDI 示例,这些示例仍然很常见。 在***.com/questions/1551466/…上查看我的cmets 【参考方案1】:其他几个答案非常好。我会尝试填写一些他们没有提到的东西。
EDI 是一组标准,其中最常见的是:
ANSI X12(在美国流行) EDIFACT(在欧洲流行)听起来您正在查看 X12 版本 4010。这是使用最广泛的(无论如何,根据我的经验)版本。有很多很多不同的版本。
文件,或正确的“交换”,由段和元素(以及 somtimes 子元素)组成。每个句段都以两个或三个字的标识符(ISA、GS、ST、N1、REF)开头。
所有文档的结构都以信封开头和结尾。信封通常由 ISA 段和 GS 段组成。每个文件可以有多个 GS 段,但每个文件应该只有一个 ISA 段(注意应该,不是每个人都遵守规则)。
ISA 是一个特殊的细分市场。尽管所有其他段都被定界,因此可以具有不同的长度,而 ISA 段具有固定的宽度。这是因为它告诉您如何读取文件的其余部分。
从 ISA 段的最后三个字符开始。这些将告诉您元素分隔符、子元素分隔符和段分隔符。这是一个示例 ISA 行。
ISA:00::00::01:1515151515:01:5151515151:041201:1217:U:00403:000032123:0:P:*~
在这种情况下,“:”是元素分隔符,“*”是子元素分隔符,“~”是段分隔符。如果您只是想查看文件以在每个段分隔符 (~) 之后放置换行符,这会容易得多。
ISA 还会告诉您文档的来源和来源、版本是什么(00403,也称为 4030)以及交换控制编号 (0000321233)。在这个阶段,其他的东西可能对你来说并不重要。
此文档来自发件人“01:1515151515”和收件人“01:5151515151”。那么“01:”是怎么回事?好吧,这在 EDI 中引入了一个重要的概念,限定符。有几个元素有限定符,它告诉你下一个元素是什么类型的数据。在这种情况下,01 应该是 Dunn 和 Bradstreet 号码。 ISA05 和 ISA07 元素的其他限定符是 12 代表电话号码,ZZ 代表“用户定义”。您会在整个 EDI 细分市场中找到限定符的概念。一个不错的经验法则是,如果它是两个字符,它就是一个限定符。为了了解所有限定词的含义,您需要一份标准指南(可以是 EDI 标准机构的硬拷贝,也可以是某些软件)。
下一行是 GS。这是一个功能组(一种在交换中将类似文档组合在一起的方法。)例如,您可以在 ISA 中拥有多个采购订单和多个功能确认。这些应放在单独的功能组(GS 段)中。您可以通过查看第一个 GS01 元素来确定 GS 段中的文档类型。
GS:PO:9988776655:1122334455:20041201:1217:128:X:004030
除了文档类型,您还可以再次看到 from (9988776655) 和 to (1122334455)。这次他们使用不同的标识符,这是合法的,因为您可能代表其他人接收交换(例如,如果您是中间人)。您还可以再次看到版本号,这次带有尾随的“0”(0004030)。使用有效数字逻辑去除前导零。为什么这里有一个额外的零而不是 ISA?我不知道。最后,这个 GS 段也有它自己的标识符,128。
这就是信封的开头。之后会有一个以 ST 开头的文档循环。在这种情况下,它们都是具有代码 (850) 的 PO,因此该行将以 ST:850:blablabla
开头信封内容以引用 GS 标识符 (128) 的 GE 段结尾,因此您知道哪个段正在关闭。然后是 IEA,它同样关闭了 ISA。
GE:1:128~ 国际能源署:1:000032123~
这是结构的概述以及如何阅读它。要理解它,您需要一本参考书或软件,以便您理解代码、大量时间和大量练习。祝您好运,如果您有更具体的问题,请再次发布。
【讨论】:
我发现你的帖子很有帮助。这里有一些链接帮助我开始使用自定义 EDI 解析器来处理 810(发票)EDI 文档:webobjects.cdw.com/webobjects/media/pdf/e-procurement/downloads/…timrayburn.net/blog/parsing-an-x12-edi-by-hand 真的很有帮助。读完之后,我开始明白所有这些字母、星号和数字的含义。 Greattttt 艺术亚当。我希望我可以放弃它 100 次。谢谢。 这是一本很棒的入门读物,我希望在我第一次涉足 EDI 之前看到。 +1【参考方案2】:哇,倒叙。已经十六年多了……
原则上,每一行都是一个“段”,而行首的标识符就是一个段标识符。每个段包含本质上是位置字段的“元素”。它们由“元素分隔符”分隔。
不同的段表示不同的东西,可以表示循环结构、重复等。
您需要获取基本解析标准的当前版本,然后您需要数据字典来描述您正在处理的文档的内容,然后您可能需要行业简介、实施指南或类似于处理您环境中特定文档类型的约定。
例子?不是最新的,但我相信您可以使用您选择的搜索引擎找到一大堆。一旦你完成了基本的段/元素解析,你就可以处理你的应用程序级数据了,我不知道一个通用的例子对你有多大帮助。
【讨论】:
人们抱怨 XML。 这是一个古老的过程,如今我们可以通过 FTP 使用 CSV 或 XML 进行处理吗?这听起来像是发送方和接收方可以达成一致的标准的夸大业务华夫饼,因此双方都会获得一个计算机可读文件。【参考方案3】:EDI 是结构化文本文件的一种文件格式,被许多大型组织和公司用于标准数据库交换。它往往比 XML 短得多,当数据包必须很小时,XML 曾经很棒。许多组织仍在使用它,因为许多大型机系统使用 EDI 而不是 XML。
使用 EDI 消息,您可以处理与特定格式匹配的文本消息。这类似于 XML 模式,但 EDI 并没有真正的标准化模式语言。 EDI 消息本身并不是真正的人类可读的,而大多数规范也不是真正的机器可读的。这基本上是 XML 的优点,XML 和它的模式都可以被人和机器读取。
当您通过某些客户端软件(不是基于浏览器的)进行电子银行业务时,您的系统上可能已经有多个 EDI 文件。银行仍然更喜欢 EDI 而不是 XML 来发送交易数据,尽管许多银行还使用自己的自定义基于文本的格式。
要了解 EDI,您必须先了解数据,以及要遵循的 EDI 标准。
【讨论】:
+1。不过,我将 EDI 称为二进制格式而不是文本格式 - 这完全取决于合作伙伴选择的分隔符/终止符。而且它经常没有换行符。 EDI 有格式和语法,也有标准,我最常见的是 ANSI X12,通常如果您在正确的标准、版本和修订版上实现解析器,您可以与任何人进行交易谁使用与您相同的标准、版本、修订版。在行业内,通常至少有一种在整个过程中大量使用,使 EDI 非常方便,尽管有点做作。【参考方案4】:假设数据流以“ISA”开头,在开头应该有一个“~ST*”部分,后跟三个数字。如果你能贴出这三个数字,我或许可以为你提供更多信息。此外,了解该行业将有所帮助。例如,医疗保健使用 270、271、276、277 和其他一些。
【讨论】:
以上是关于如何理解 EDI 文件?的主要内容,如果未能解决你的问题,请参考以下文章