现在手机网站设计,用dw代码做美食网站,马鞍山专业网站制作,个体户 做网站EDI目前已广泛应用于电子、物流、汽车、零售等行业。
越来越多的交易伙伴要求建立EDI连接#xff0c;通过EDI来对接上下游交易伙伴#xff0c;收发业务单据。
当我们与新的交易伙伴建立EDI连接时#xff0c;有多种实施方案可供选择#xff0c;如果您的单据量较少#xf…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即可。
根据上述需求可搭建如下工作流 二、使用规范中的示例830报文通过X12端口生成对应XML文件 示例报文和生成的XML文件见如下附件 下载示例报文和生成的XML文件
示例报文可参考如下解析进行阅读
ISA*00* *00* *01*123456789 *01*987654321 *940613*1025*U*04010*000000333*0*P*\
GS*PS*005346481*005346481*940613*1025*000000433*X*004010
ST*830*000001048
BFR*05**123456*DL*A*20230606*20230801
-929701 版本号
-DL 预测类型
-20230606 预测开始日期
-20230801 预测结束日期
N1*ST*EDI SENDER INC*01*123456789
-ST 指收货方
-EDI SENDER INC 收货方名称
-123456789 收货方编号
N1*SF*EDI RECEIVING INC*01*987654321-SF指发货方
-EDI RECEIVING INC 发货方名称
-987654321 发货方编号
LIN**BP*BP001*VP*VP001*PO*PO123
-BP001 买方物料号
-VP001 供应商物料号
-PO123 订单号
REF*DK*DOCK1
-DOCK1 码头编号
FST*600*C*D*20230606
-600 预测数量
-C 预测标识
-D 预测时间标识
-20230606 交付起始日期
FST*5000*D*W*20230704
FST*10000*D*F*20230905*20231002
SHP*01*10000*050*20230613
-10000 上次接收日期
-20230613 接收日期
SHP*02*10000*051*20230606**20230613
-10000 累计接收数量
-20230606 累计开始日期
LIN**BP*4562*VP*100*EC*123*PO*PO456
FST*50*C*D*20230606
FST*50*C*D*20230613
FST*150*C*W*20230627
FST*2000*D*W*20230801
CTT*2*20550
SE*49*000001048
GE*1*000000433
IEA*1*000000333
三、根据实际业务需求设计Excel模版
根据客户提供的规范整理对应的Mapping然后参考Mapping和对应XML文件可以自定义一个830的Excel模版本文提供如下示例 示例模版见如下附件: 示例模版
四、写转换代码
通过X12端口获得830报文对应的XML并且已经设置好Excel目标格式接下来就可以进行代码解析了
可以通过在Excel模版中添加批注然后使用xpath从XML文件中取到对应值
注意逻辑代码和赋值代码写在批注里只有需要输出的写在单元格里
1.从XML中进行取值
打开830报文生成的XML文件可以看到如下图所示的层级结构 首先需要进入到/Interchange/FunctionalGroup/TransactionSet/TX-00401-830该路径里然后对header部分进行取值 可通过call关键字(rsb:call或arc:call)和xmlDOMSearch运算器进入到指定目录
rsb:set attrxml.uri value[FilePath] /
rsb:set attrxml.xpath value/Interchange/FunctionalGroup/TransactionSet/TX-00401-830 /
rsb:call opxmlDOMSearch inxml...
/rsb:call
扩展阅读call关键字的使用方法 xmlDOMSearch运算器的使用方法
取值方式[xpath() | def] [xpath(BFR/BFR03) | def] 即取BFR下的BFR03的值
[xpath(“N1Loop1[N1/N101ST]/N1/N102″) | def] 即取NILoop1下N1里N101等于 ‘ST’时N102的值, N1Loop1根据N101值的不同存放不同的信息N101’ST’时放的是收货方信息 [N1/N101ST]即加在取值中的条件条件的写法如下 1.位置条件要加在循环的节点后可以看到XML文件中有多个N1Loop1所以N1Loop1就是循环的节点[N1/N101ST]需加在N1Loop1后 2.写法[判断路径条件值]注意条件内不能包含任何空格
整个Item部分都在LINLoop1里且一个830里可能会包含多个物料信息所以需要再通过call关键字和xmlDOMSearch运算器进入到LINLoop1里如果有多个LINLoop1call关键字就可以进行循环读取
rsb:set attrxml.xpath valueLINLoop1 /
rsb:call opxmlDOMSearch inxml...
/rsb:call
预测部分在”FSTLoop1中一个Item也可能会对应多组预测信息所以先进入到FSTLoop1里再进行取值
rsb:set attrxml.xpath valueFSTLoop1 /
rsb:call opxmlDOMSearch inxml...
/rsb:call
五、测试代码
打开Excel端口选择转换模式为Template然后上传写好的代码文件 在X12端口的输入出上传要解析的830报文并发送 从Excel端口的输出处即可拿到生成的Excel文件 最后打开生成的Excel与原报文中的字段进行对比检查是否遗漏或者取值错误。