EDI报文到Excel转换方案详解

EDI目前已广泛应用于电子、物流、汽车、零售等行业。

越来越多的交易伙伴要求建立EDI连接,通过EDI来对接上下游交易伙伴,收发业务单据。

当我们与新的交易伙伴建立EDI连接时,有多种实施方案可供选择,如果您的单据量较少,预算也不多的话,Excel方案相对来说就比较适合了。

本文章主要给大家讲解当您自主实施时,如何写将EDI报文解析到Excel中的代码。

以830物料需求预测为例

一、搭建工作流

在知行之桥EDI系统中,所有文件转换的中间格式都是XML,所以在任何格式转前,都需要先转换为XML,再进行下一步处理。 830是ANSI X12报文标准中的一类消息,要将830解析到Excel中,可以先通过X12端口进行预处理,知行之桥EDI系统的X12端口可以进行报文到XML的双向转换,所以先通过X12端口将X12报文格式转换为对应的XML格式,再将转换的XML解析到Excel即可。

根据上述需求,可搭建如下工作流:

EDI_Excel_Translate1.png

二、使用规范中的示例830报文通过X12端口生成对应XML文件

EDI_Excel_Translate2.png EDI_Excel_Translate3.png

示例报文和生成的XML文件见如下附件:

 下载示例报文和生成的XML文件

示例报文可参考如下解析进行阅读:

三、根据实际业务需求设计Excel模版

根据客户提供的规范整理对应的Mapping,然后参考Mapping和对应XML文件可以自定义一个830的Excel模版,本文提供如下示例:

EDI_Excel_Translate4.png

示例模版见如下附件:

 示例模版

四、写转换代码

通过X12端口获得830报文对应的XML,并且已经设置好Excel目标格式,接下来就可以进行代码解析了

可以通过在Excel模版中添加批注,然后使用xpath从XML文件中取到对应值

注意,逻辑代码和赋值代码写在批注里,只有需要输出的写在单元格里

1.从XML中进行取值

打开830报文生成的XML文件可以看到如下图所示的层级结构

EDI_Excel_Translate5.png

首先需要进入到/Interchange/FunctionalGroup/TransactionSet/TX-00401-830该路径里,然后对header部分进行取值

EDI_Excel_Translate6.png

可通过call关键字(rsb:call或arc:call)和xmlDOMSearch运算器进入到指定目录

扩展阅读:call关键字的使用方法 xmlDOMSearch运算器的使用方法

取值方式:[xpath("") | def]

EDI_Excel_Translate7.png

[xpath("BFR/BFR03") | def] 即取BFR下的BFR03的值

[xpath(“N1Loop1[N1/N101='ST']/N1/N102″) | def] 即取NILoop1下N1里N101等于 ‘ST’时N102的值, N1Loop1根据N101值的不同,存放不同的信息,N101=’ST’时放的是收货方信息 [N1/N101='ST']即加在取值中的条件,条件的写法如下: 1.位置:条件要加在循环的节点后,可以看到XML文件中有多个N1Loop1,所以N1Loop1就是循环的节点,[N1/N101='ST']需加在N1Loop1后 2.写法:[判断路径='条件值'],注意,条件内不能包含任何空格

整个Item部分都在LINLoop1里,且一个830里可能会包含多个物料信息,所以需要再通过call关键字和xmlDOMSearch运算器进入到LINLoop1里,如果有多个LINLoop1,call关键字就可以进行循环读取

预测部分在”FSTLoop1中,一个Item也可能会对应多组预测信息,所以先进入到FSTLoop1里再进行取值

五、测试代码

打开Excel端口,选择转换模式为Template,然后上传写好的代码文件

EDI_Excel_Translate8.png EDI_Excel_Translate9.png

在X12端口的输入出上传要解析的830报文并发送

EDI_Excel_Translate10.png

从Excel端口的输出处即可拿到生成的Excel文件

EDI_Excel_Translate12.png

最后打开生成的Excel,与原报文中的字段进行对比,检查是否遗漏或者取值错误。

了解更多 EDI 信息,请您通过邮件 sales@kasoftware.cn 联系我们。点击下方蓝色按钮,即可免费试用 EDI 软件。
标签: , , , , ,
文章分类 帮助文档, 常见问题和回答, 操作指南, 知识库, 脚本和自动化, 解决方案