在和交易伙伴做EDI连接的时候,传输的数据大多都是EDI报文,这样就会使用到EDI系统的报文翻译模块功能。有些同学考虑到成本问题,可能会选择自己来做报文翻译,所以,本次小知课堂,小知要给大家讲一讲,如何自己来做报文翻译?
做报文翻译之前,首先要明确,是通过使用知行EDI系统的报文翻译功能模块来实现,还是想要公司的IT同学使用开发语言来实现。两种方式都有各自的优缺点:
使用EDI系统的报文翻译功能模块
- 专为处理EDI报文设计,功能全面
- 需要对系统工作流有了解
- 需要学会系统的使用
IT使用开发语言实现
- 开发周期长
- 可能存在功能限制
- 生成的EDI报文一旦出错不易定位问题
- 代码维护成本高
不过,无论是采用哪一种方式,开始要进行的步骤都是一样的,需要对交易伙伴提供的EDI规范作深入了解!
如何看规范
报文翻译是基于EDI规范的,在EDI规范中,会给出报文中节点位置和业务数据的对应关系,例如在850报文中,PO1节点的第一个位置表示订单行号,第二个位置表示采购订单编号等。所以在做报文翻译的时候,一定要参考EDI规范。那么,从EDI规范中,我们能获取到哪些信息呢?
我们以一个X12标准的850采购订单规范为例:
第一步:先看报文结构
一般,在一个EDI规范的前几页,会有这个EDI报文的结构图,如下图所示:
在这个结构图中,我们可以看出,整个850 EDI报文大约分为五部分,分别是Not Defined,Heading,Detail,Summary,Not Defined。 其中,第一个和最后一个的Not Defined,这是EDI报文的信封部分,每个X12标准的EDI报文都会有,和业务数据没什么关系。然后是Heading部分,这部分表示850采购订单EDI报文的头部数据信息,也就是一个850采购订单中只会出现一次的数据,例如采购订单编号,采购订单日期等等。接下来是Detail部分,也就是明细部分,表示在一个850报文中会多次重复出现的数据,例如物料信息,数量信息等等。最后就是Summary部分了,这部分是对850报文的总结。
第二步:看节点信息
我们这里说的节点,就是图中的Id,每个节点都表示不同的业务数据信息,我们可以参考Segment Name,来确认这个节点表示什么含义。例如,BEG,是一个采购订单的起始节点,REF,表示参考信息;PER,表示管理员联系信息;CSH表示销售要求信息等等。
另外,还需注意,在有些节点上面,存在LOOP ID,一个LOOP ID里面包括了多个Id,这就是说,一个Loop中是一组节点,这些节点出现时,是成组出现的,在一组Loop中,Loop ID的节点是必须的,我们以LOOP ID-N1举例,在这组Loop中,包括了N1,N2,N3,N4四种节点,但是,因为Loop ID是N1,所以,在这组Loop出现时,N1节点是必不可少的,如果这组Loop没有N1,那么这个报文就是一个错误的报文,不符合EDI报文结构。
第三步:看节点是否必要以及出现次数要求
接下来我们就需要针对单一节点和Loop节点,看在一个850采购订单EDI报文中,各自都会出现多少次,每个节点或Loop是否是必要的。
关于节点或Loop是否必要,也就是这个节点是否一定会出现,我们需要看req列,req就是requirement的缩写,一般情况下会有以下几种可能:
- M,Mandatory,强制的,也就是说这个节点或Loop一定会出现
- O,Optional,可选的,也就是这个节点或Loop可以出现,也可以不出现
- C,Conditional,有条件的,也就是这个节点或Loop在某种业务场景下必须出现
- R,Required,有要求的,也就是要求这个节点或Loop一定要出现
注:有些被标记为Optional的节点,在实际业务中,可能是必填项;需在做端到端集成测试时,注意小细节。
关于节点或Loop是否会重复,我们需要看Max use列和Repeat列。Max use表示节点的最大出现次数,Repeat表示Loop最多会重复出现几次。
梳理映射关系
在将EDI报文结构确认好之后,我们接下来需要继续参考EDI规范,获取到EDI报文和实际业务数据之间的对应关系,并将其整理成为一个文档。
在EDI规范中,会针对每个节点,给出其所代表的详细的业务含义。
我们接着以850规范为例:
BEG节点:
以上我们可以看出,BEG节点中的第一个字段 – BEG01,表示850采购订单目的代码,字段长度要求2位,可以看到,在这个规范中,这个代码是固定值00,表示原始采购订单。接下来BEG02,表示采购订单类型编码,字段长度要求2位,也是固定值,DS,也就是直供,BEG03是采购订单编号,字段长度要求最少1位,最多22位,而BEG04是采购订单日期,字段长度要求8位,并且日期格式要求为CCYYMMDD,例如20200221。
这样子全篇看下来,我们就能够整理出一个映射关系文档,我们称之为mapping,以下是小知整理出来的一个850采购订单mapping示例:
映射关系梳理完成之后,就可以着手进行报文翻译了。 如果想要使用知行EDI系统进行报文翻译,可以参考如何通过知行EDI系统进行报文翻译。
注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。
发表评论
要发表评论,您必须先登录。