如何读懂X12 报文

Posted EDI电子数据交换

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何读懂X12 报文相关的知识,希望对你有一定的参考价值。

大家好,在进行 EDI 项目的时候,想要了解如何看懂 X12 报文中的数据,那么今天的文章就带大家来了解一下X12报文的结构,以及如何才能获取到需要的数据。

首先我们先来了解一下X12报文的结构,如下图所示:

 

 

一次EDI传输包含一段Interchange,Interchange中会包含一个或多个Functional Group(下文简称FG),FG 中会包含一个或多个Transaction。举例来说,如果需要在一次传输中传输3个850,以及4个846文件,那么就会有2个FG,在850的FG中会有3个Transaction,846的FG中有4个Transaction。

对报文结构有了基本的了解之后,我们再来看下如何从报文中获取数据。以下是一段示例的850报文,每一行开头(2-3个字符组成)叫做segment节点,代表了特定的业务含义,例如BEG代表报文的开始以及一些主信息,DTM代表时间信息,N1代表实体信息(ship-to、ship-from、bill-to等等)。

 

 我们再进入到某一行来具体看一下,其中*是每个数据元素的分隔符(也可按照实际情况设置为其他符号,120是这一行的物料数量,它的位置是PO102,有一些代码代表了特殊的业务含义,例如EA本身在报文里面就代表了物料的单位,类似的还有PCS、KGM等,除此之外,还有一些不是单独出现的代码,我们把它叫做限定符,于限定右侧数据的含义,例如这个地方的VN,它的意义是限定右边的数据意义为供应商物料编码,我们一看到VN后面的一串数据就知道供应商物料编码为 AB3542。

 

了解了如何去阅读数据,我们再来详细地解析一下这一条850数据,假如我们要获取以下数据(该表格可由EDI文件规范中整理获取):

 

 

 例如要获取订单号,那么我们就找到BEG这一行,从左向右数第三个数据元素即08292233294 就是我们要找的订单号,再比如我们需要找请求交付日期,按照规范我们需要找到DTM这一行,且条件是DTM01=002,取DTM这个元素,那么就是20101214这一串,就是要找的数据。以此类推,我们可以获取到报文中的关键信息,如下图:

 

 

以上就是基本的阅读X12报文以及获取业务数据的方法,虽然我们可以直接从X12报文中读取到数据,想必大家也可以感受到人工去阅读X12报文,并从中提取数据是非常麻烦的。报文设计的初衷就是为了方便计算机处理,直接去阅读报文对于开发人员来说可能是有意义的,例如可以用来对比收到的数据与原始数据是否一致。但对于ERP用户或者业务团队来说,很显然他们不需要去读原始的X12报文。 EDI 在整个数据交换的流程中扮演的更多的是一个传输、翻译的角色。

X12端口,可一步完成X12报文的解析或生成,方便将X12数据同步到不同的业务系统中。

今天的850报文只是X12标准中一种简单的类型,还有很多种结构不同的报文,希望大家可以利用今天讲解的方法尝试地去读懂其他的报文。

相关链接:

X12端口配置
如何快速读懂交易伙伴提供的EDI规范?
EDI段Segment用途

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

以上是关于如何读懂X12 报文的主要内容,如果未能解决你的问题,请参考以下文章

关于标准EDI/B2B标准的X12标准

Target EDI 对接详解 1– Partner Online EDI 注册

C#十六进制值0x12,是无效字符

如何用多项式 x16 + x12 + x5 + 1 计算 CRC 16

GDB核心转储具有损坏的堆栈,显示“堆栈帧无法访问地址0x12处的内存”

如何快速读懂stm32代码