VSCode中如何查看EDI报文?

VSCode是开发人员常用的一款软件,为了降低EDI报文的阅读门槛,知行的开发人员设计了EDI插件,可以在VSCode中下载使用。

如何打开一个EDI报文——VSCode EDI插件介绍

EDI插件下载流程

进入VSCode,打开Extensions,在搜索框搜索 EDI,即可看到 Edi Support 工具。如下图示:

VSCode-EDI-extension1.png

EDI插件主要为遵循X12以及EDIFACT两种EDI国际报文标准的EDI报文提供阅读支持。

灵活地查阅报文

我们以符合X12报文标准的 850 报文为例,为大家进行演示:

安装好EDI插件之后,我们打开一个850报文,可以看到文件上方会出现多个按钮,代表不同的快捷功能。点击 Minify,将会看到如下所示的结果:

VSCode-EDI-extension2.png

850报文被展示在一行中,这种形式的文件可读性比较差,用户很难从中获取信息。

接下来点击文件上方的 Prettify 按钮,得到的结果如下:

VSCode-EDI-extension3.png

现在我们获得了可读性更高的格式,这个850报文被展开。一个850采购订单的EDI示例报文每一行的开头,由2-3个字符组成,叫做Segment节点,代表特定的业务含义。例如BEG开始的这一行代表了业务数据的开始以及单据主信息 DTM这一行代表时间信息,N1这一行代表实体信息,例如ship-to、ship-from 等信息都会被存放在这里。

或许你会注意到,上述形式每行结尾都会出现一个波浪线,代表段终止符。根据段终止符进行换行的报文拥有更强的可读性。

但或许这样的形式还不够清晰,因为把这些代表特定业务含义的节点与业务含义对应起来,要么需要查询EDI规范文档,要么需要对EDI报文足够熟悉。

完全不必担心这个问题,这时候就轮到文件上方的第三个按钮发挥作用了。我们点击 Toggle inlay hints,将这个按钮从off 切换至 on,得到如下结果:

VSCode-EDI-extension4.png

看上去可能会有些拥挤?点击上述按钮之后,会在EDI报文中对每个节点进行详细的注释。橙色高亮部分为注释,蓝色部分则为原始EDI报文。如果需要关闭注释,只需要再次点击 Toggle inlay hints,将这个按钮从on 切换至 off即可。

点击第四个按钮:知行软件,可以一键跳转至知行软件官网,我们每个工作日都会在EDI知识库中更新 EDI 相关信息。

EDI 功能
文件诊断

EDI 插件具有文件诊断功能,可以帮助用户快速诊断字段超长或者太短等问题。如下图所示,第10行,DTM02中存放的数据报错,会出现红色波浪线标识。 原因是最小长度应为8位,但实际只填写了7位。

VSCode-EDI-extension5.png

点击页面下方 PROBLEMS 中的报错,可以自动定位至报错字段。

EDI报文各个数据元素的扩展

EDI报文是基于EDI规范生成的,但在阅读过程中,如果参考EDI规范来理解报文效率太低。EDI插件提供的最新功能,只需要将鼠标定位至需要查看细节信息的数据元素中,即可查看,效果如下:

VSCode-EDI-extension6.png

点击 N1字段下的数据元素 ST,即可在弹出的方框中看到ST是EDI报文中的一个代码,标识Ship to。这个位置还可以填写的代码包括:10、11、12等。

点击RFF字段下的元素EDI Helpdesk则会看到如下提示:

VSCode-EDI-extension7.png

这个数据元素主要包含自由格式的名称,最小位数为1最大位数为60,超出这个范围则会报错。

除上述功能之外,EDI插件还支持VS Code的常用快捷键,例如:Shift + Alt +F,实现格式化等。点击弹窗最下面一行的 EDI Schema Reference,即可进入知行EDI规范查询平台,查看相应字段更加详细的信息。

VSCode-EDI-extension8.png

扩展阅读:EDI是什么?

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
EDI(Electronic Data Interchange)报文是一种基于ASCII字符集的电子数据交换标准格式。在Java,我们可以使用EDI解析器库来处理EDI报文。常见的EDI解析器库包括Smooks和jPOS。 在解析EDI报文时,我们可以将其转换成Java对象来方便地进行后续处理。这里给出一个示例: 假设我们有以下EDI报文: ```EDI ISA*00* *00* *12*3456789012 *08*9876543210 *200101*1200*U*00401*000000001*0*T*:~ GS*PO*4405197800*9876543210*20010101*1319*1*X*004010~ ST*850*0001~ BEG*00*SA*08292233294**20010101~ N1*BY*ABC COMPANY~ N1*SE*DEF COMPANY~ PO1*1*10*EA*19.95*UK*1234567890*VP*ABC123~ CTT*1~ SE*7*0001~ GE*1*1~ IEA*1*000000001~ ``` 我们可以定义以下Java对象来表示这些数据: ``` public class EDI { private ISA isa; private GS gs; private List<ST> sts; // getters and setters } public class ISA { private String authorizationInformationQualifier; private String authorizationInformation; private String securityInformationQualifier; private String securityInformation; private String senderIDQualifier; private String senderID; private String receiverIDQualifier; private String receiverID; private String date; private String time; private String interchangeControlStandardsIdentifier; private String interchangeControlVersionNumber; private String interchangeControlNumber; private String acknowledgementRequested; private String usageIndicator; private String componentElementSeparator; // getters and setters } public class GS { private String functionalIdentifierCode; private String senderID; private String receiverID; private String date; private String time; private String groupControlNumber; private String transactionTypeCode; private String versionNumber; // getters and setters } public class ST { private String transactionSetIdentifierCode; private String transactionSetControlNumber; private String implementationConventionReference; // getters and setters } public class BEG { private String transactionSetPurposeCode; private String purchaseOrderTypeCode; private String purchaseOrderNumber; private String releaseNumber; private String date; private String contractNumber; // getters and setters } public class N1 { private String entityIdentifierCode; private String name; // getters and setters } public class PO1 { private String lineNumber; private String quantityOrdered; private String unitOfMeasure; private String unitPrice; private String basisOfUnitPrice; private String productIDQualifier; private String productID; private String vendorPartNumber; // getters and setters } public class CTT { private String numberOfLineItems; // getters and setters } ``` 然后我们可以使用Smooks或jPOS等EDI解析器库将EDI报文解析成这些Java对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知行EDI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值