很多客户在进行EDI项目的时候,想要了解如何看懂EDIFACT报文中的数据,今天的文章就带大家学习EDIFACT报文的结构,以及如何才能获取到需要的数据。
首先,我们先来了解一下EDIFACT报文的结构,如下图所示:
一次EDI传输包含一段Interchange(必须有),Interchange中会包含一个或多个Functional Group(简称FG),FG段是否出现并不做强制要求,一个FG中可能会包含一个或多个Message。举例来说,如果需要在一次EDI传输中传送3个ORDERS采购订单,那么报文结构为一个Interchange下包含3个Message。
对报文结构有了基本的了解之后,我们再来看下如何从报文中获取数据。以下是一段示例的ORDERS采购订单报文,每一行开头由3个字符组成,叫做Segment节点,代表特定的业务含义,例如BGM代表报文的开始以及一些主信息,DTM代表时间信息,NAD代表实体信息(buyer、seller、bill-to等),RFF代表一些参考信息,LIN代表订单行物料信息,QTY代表数量等。
接下来,以LIN行为例,LIN表示Segment起始信息, 是数据元素Element分隔符(也可根据情况设置为其他符号),:是子元素Subelement分割符,’是段Segment分割符。再来看业务含义:001为订单行号,0000057G3454为物料号,BP是有固定含义的限定符Qualifier,限定该物料号为买方物料号,如果限定符为VP即为销售方物料号。类似的限定符还有QTY段的PCE,限定物料数量单位。
最后我们来详细地解析这一条ORDERS数据,假如我们要获取以下数据(只列举了部分信息段):
例如,我们要从报文中获取订单号以及订单日期,根据以上表格可以得知会出现在BGM以及DTM段,我们直接在报文中定位到该行,便可得知订单号为K12345、订单日期为19980626。其他的信息可以使用同样的方法获取,如下图:
以上就是基本的阅读EDIFACT报文以及获取业务数据的方法,虽然我们可以直接从EDIFACT报文中读取到数据,但相信大家可以感受到人工阅读EDIFACT报文,并从中提取数据是非常麻烦的。报文设计的初衷是为了方便计算机处理,不过直接阅读报文对于开发人员来说也是有意义的,可以用来对比收到的数据与原始数据是否一致。但对于ERP用户或者业务团队来说,很显然并不需要去读原始的EDIFACT报文,只需阅读EDI供应商解析后的数据。EDI在整个数据交换的流程中扮演的更多的是一个传输、翻译的角色。
知行之桥中的EDIFACT端口,可一步完成EDIFACT报文的解析或生成,方便将EDIFACT数据同步到不同的业务系统中,可点击EDIFACT端口查看EDIFACT端口详解。
文章中讲解的ORDERS报文只是EDIFACT标准中一种简单的类型,还有很多种结构不同的报文,大家可以利用今天讲解的方法尝试地去读懂其他的报文,如果有任何疑问,请联系我们。
更多EDI信息,请参阅: EDI是什么?
原文链接