在文章《一起读懂采埃孚ZF EDI项目中的DELFOR报文》中,我们一起看了采埃孚ZF EDI DELFOR(长期物料需求计划)报文的详细解读,了解了采埃孚ZF的EDI DELFOR报文中包含的数据以及一些实际业务的特点。当我们和采埃孚ZF建立了EDI连接,直接收到的便是采埃孚ZF的EDI DELOFR报文,虽然我们已经一起了解了DELFOR报文中各个字段的含义,但是如何对EDI报文进行业务处理,同时短时间内将所有的数据进行精准提取呢?我们将针对您目前的业务处理方式进行定制开发,将DELFOR报文中的数据进行提取,输出各种不同的格式,比如Excel,CSV,XML等,来满足您的业务处理需求。
现在我们以数据库方案为例,看如何将一个采埃孚ZF的EDI DELFOR报文的数据进行提取解析。因为该项目中客户已具备ERP系统,故采用数据库方案,我们将解析的DELFOR数据按照实际业务字段对应关系插入到数据库中,客户的ERP系统直接从数据库中抓取所需数据,实现EDI与ERP系统的对接集成。在数据库方案中,我们支持MySQL、SQLsever、SQLite以及Oracle等不同类型的数据库。
让我们一起来看如何通过4个步骤将EDI的DELFOR报文进行华丽变身。
1. 通过AS2接收如下采埃孚ZF的EDIFACT标准的DELFOR原始报文,AS2是目前EDI传输中应用最广泛的一种通讯协议,详情可参考我们的文章《AS2 (APPLICABILITY STATEMENT 2) 定义》以及《AS2安全基础知识》进一步了解。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
UNB+UNOC:3+SENDER:OD+RECEIVER:OD+050216:1023+0049900500' UNH+1+DELFOR:D:97A:UN' BGM+241+506+5' DTM+137:20050419:102' DTM+158:20050419:102' DTM+159:20060419:102' FTX+AAI+++free text 1:free text2:free text 3:free text 4:free text 5' NAD+MI+1001::92++ZF' CTA+PD+:Purchasing contact' COM+0123456789:TE' COM+0123456789:FX' COM+XXX@zf.com:EM' NAD+SU+1234::92++Toolsupplier Ltd+Street+City++12345+Country Code' GIS+37' NAD+ST+1000::92++ZF Ship To Ltd+Street+City++12345+Country Code' LIN+1++112233:IN' PIA+1+445566:SA+EC1:EC' IMD+++:::Article description' LOC+11+Place of discharge ID:::Description of unloading point' LOC+159+X12' FTX+AAI+++free text 1:free text2:free text 3:free text 4:free text 1' RFF+ON:11111:00010' RFF+AAN:191' DTM+137:20050419:102' RFF+AIF:190' DTM+137:20050419:102' QTY+48:270:C62' DTM+50:20050418:102' RFF+SI:211734' QTY+70:270:C62' DTM+51:20050101:102' DTM+52:20050418:102' SCC+1++Y' QTY+1:180:C62' DTM+2:20050419:102' PAC++1+Pack111' QTY+52:90:C62' UNT+37+1' UNZ+1+0049900500' |
面对这一堆犹如天文般的报文,我们将用到神奇的“EDIFACT”端口,让DELFOR的EDI报文数据现行。
2. 利用EDIFACT端口将DELFOR报文转化得到标准XML格式的长期物料需求计划
在文章《采埃孚ZF EDI解决方案》中,可以通过文尾的视频看到我们在收到采埃孚的EDI报文后,会让他们先进入EDIFACT端口中来个变身,每个数据的头上都会出现只属于他的光环(特定注释),让你在众多数据中能知晓出他的归类及大概意思。由于他们增加光环之后过分耀眼,我们只展示报文中从BGM及其后3个DTM的标准XML格式。可以看到在BGM的1004的位置中,506这个数据的头顶加了一个注释“Document/message number”,我们可以看出506是这个DLEFOR报文的编号,作为唯一标识,可用于DELFOR的唯一定位追溯,方便双方查询数据;在DTM的2380位置中,20050419头顶的“Date/time/period“告诉我们这是一个日期。但是对于业务来说,不仅要知道这个20050419是一个日期,更需要知道这是一个具体的什么日期?这个时候,我们机智的XML Map端口就出动了,让我们接着看,XML Map是如何让这些数据更加精准显示原意的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
<BGM type="Segment"> <!--DOCUMENT/MESSAGE NAME--> <C002 type="Composite"> <!--Document/message name, coded--> <_1001> <!--Delivery schedule-->241</_1001> </C002> <!--DOCUMENT/MESSAGE IDENTIFICATION--> <C106 type="Composite"> <!--Document/message number--> <_1004>506</_1004> </C106> <!--MESSAGE FUNCTION, CODED--> <_1225> <!--Replace-->5</_1225> </BGM> <DTM type="Segment"> <!--DATE/TIME/PERIOD--> <C507 type="Composite"> <!--Date/time/period qualifier--> <_2005> <!--Document/message date/time-->137</_2005> <!--Date/time/period--> <_2380>20050419</_2380> <!--Date/time/period format qualifier--> <_2379> <!--CCYYMMDD-->102</_2379> </C507> </DTM> <DTM type="Segment"> <!--DATE/TIME/PERIOD--> <C507 type="Composite"> <!--Date/time/period qualifier--> <_2005> <!--Horizon start date-->158</_2005> <!--Date/time/period--> <_2380>20050419</_2380> <!--Date/time/period format qualifier--> <_2379> <!--CCYYMMDD-->102</_2379> </C507> </DTM> <DTM type="Segment"> <!--DATE/TIME/PERIOD--> <C507 type="Composite"> <!--Date/time/period qualifier--> <_2005> <!--Horizon end date-->159</_2005> <!--Date/time/period--> <_2380>20060419</_2380> <!--Date/time/period format qualifier--> <_2379> <!--CCYYMMDD-->102</_2379> </C507> </DTM> |
3. 利用XML Map端口实现DELFOR标准XML转为自定义XML
我们要最后让这些数据整整齐齐的进入数据库,就需要给他们指明归属,给他们加上在数据库中的名称,在XML Map端口中,只需准备一个完整的标准XML(包含所有可能出现字段)和一个他们所属数据库中表的模板,通过拖拽,即可实现一一对应,完成字段和数据库表中所在列的映射,我们即可传入需要得到数据库表张“姓名“的标准XML,便会在输出端下载得到如下实例中拥有“姓名”的数据。尤其对于BEM后的3个DTM,看一看到3个日期对应的具体含义,应当存在数据库表中的哪一列明明白白。
1 2 3 4 |
<delfor_number>506</delfor_number> <document_datetime>2005-04-19 00:00:00</document_datetime> <horizon_end_date>2006-04-19 00:00:00</horizon_end_date> <horizon_start_date>2005-04-19 00:00:00</horizon_start_date> |
4. 由数据库自定义XML格式长期交货计划转化将数据插入数据库
有了来路清楚的数据,我们就可以利用Database端口,将这些数据整整齐齐的送到它要去的数据库,完美实现精准对接。
至此,我们的数据解析入库就完成了,ERP系统需要哪些数据,直接去数据库抓取即可。在数据库方案中,我们会尽可能的保留完整的原始数据,采埃孚ZF发来的DELFOR数据尽可能按照需求保留在数据库中,给予ERP系统选择权,也方便后期数据溯源。
如果你有任何关于EDI的疑问,欢迎联系我们,一起携手走入EDI的世界。
注:文案部分内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。