java解析edi报文_EDI报文内容详解实例之EDI 850

有850,855,860,865这四种,这里就介绍850,因为其他的类似,明白了一个就明白了其他。

先看850,850是指EDI的采购订单定义,它对一个采购订单进行了传输定义,例如,你是客户那么就可以用850这个EDI采购订单来对供应商进行采购,按照前面我们讲过的,EDI是一种协议和约定好的格式,那么只要我的系统支持EDI,那么我就可以将我的订单转换成约定好的EDI代码,然后我发给供应商,供应商根据我们约定好的EDI协议,对EDI代码进行翻译,从里面提取出来采购信息,就可以在自己的系统内生成订单。

现在的问题是供应商的系统收到了EDI代码,它如何判断出EDI代码的类型,是采购订单850,还是其他的EDI信息呢?

答案还在于事先的约定,先看下面这段代码:

ST*850*0001^

BEG*00*NE*092123456**20010331^

CUR*SE*USD^

REF*PR*ABC-12345-1^

PER*BD*JANE SMITH*TE*3121234567^

*

*

*

SE*37*0001^

我详细的解释这段代码的含义:

ST*850*0001^

ST代码代表要开始传送一段EDI的控制代码,那么后边的850就是指有采购订单来了,如果此处的850变成了855,那么就是指后边的代码就是855定义的内容,也即采购订单确认的内容。

继续看850的代码,我把前边几行解释一下:

ST*850*0001^

BEG*00*NE*092123456**20010331^

BEG指示开始订单号和订单日期信息的定义,此例中*00*指明是原始订单,*NE*指明是新的订单,*092123456*是订单号,**20010331是订单日期,也就是2001年3月31号,

^指示此行结束。

CUR*SE*USD^

CUR指明开始定义货币单位,*SE*是说明使用卖方的货币单位,USD指明了货币单位是美元。

REF*PR*ABC-12345-1^

RFE开始定义一些参考信息,此处PR代表定义的参考信息是采购报价单号,也就是ABC-12345-1

PER*BD*JANE SMITH*TE*3121234567^

PER指明开始定义一些客户的联系信息等内容,BD代表采购部门或者联系人,此处联系人即为Jane

Smith,TE指明是电话号码,如果此处TE被FX代替,那么就代表后边的是传真,后边的是电话号码我应该就不用解释了吧。

*

*

*

省略的内容即为EDI 850定义的其他内容,比如采购订单的line内容,零件号,价格信息等等。。。

SE*37*0001^

SE代表这一段EDI代码结束。

以此类推,下面是855(采购订单确认)的报文内容:

ST*855*0001^

BAK*00*AC*092123456*20010331****0798765*20010331^

CUR*SE*USD^

REF*PR*ABC-12345-1^

REF*CO*554433^

*

*

SE*40*0001^

相信不用再讲解了吧,因为这些报文的格式不同,但是通讯的模式是一样的,只要明白每个代码的含义,看EDI的内容就很容易了,不过话又说过来,代码是不需要记得,这里只是想通过这个例子来说明一下EDI传输的一个过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值