富士康是全球3C代工领域最大又成长最快的国际科技集团,在全球共取得超过15300件专利,主要从事游戏机、笔记本电脑、液晶电视、光驱、数码相机、投影机、散热系统及组件、LED光照明、新型界面材料、镁铝合金产品、印刷电路板等产品的研发与生产,是全球最大的消费性电子产品研发制造商。
本文主要介绍富士康如何通过EDI为国内某知名公司供货?初次了解EDI时,可能觉得它很陌生,下文将带您深入分析富士康的EDI需求。
EDI (Electronic Data Interchange),即电子数据交换,旨在实现两个企业之间业务系统数据的交换。比如,一家公司可以通过电子数据交换平台,向另一家公司发送订单、查询库存、通知发货等信息。帮助企业整合供应链、降低库存、实现精益生产。查看更多关于EDI的介绍。
富士康EDI项目需求
1. EDI项目需求概览
1.1 项目需求
- 传输协议:AS2 on Internet
- 报文标准:X12
- 实施方案:支持本地/云端部署
报文代码 | 业务含义 | 传输方向 |
X12 856 | 提前发货通知 | 富士康发送 |
2. EDI项目需求分析
先了解下什么是AS2?AS2目的在于通过Internet安全可靠地传输商业文档。首先通过数据加密和数字签名生成数据包,然后基于HTTP(或HTTPS)通过互联网或任何TCP/IP网络进行安全可靠的数据交换。查看更多关于AS2的信息。
AS2自动化传输的实现比较容易,需先下载知行EDI系统,借助AS2 端口操作手册,通过简单配置即可完成。
需要注意的是:安装EDI系统的服务器,必须具有固定的外网IP地址,同时需要暴露指定端口(默认8001,可修改)便于富士康连接到您的EDI系统,传输856报文。
通过AS2自动化接收的文件是856格式文件。856是ANSI X12国际标准报文规范下发货通知报文类型代码。
856 X12报文,全名Ship Notice/Manifest,即发货通知。在富士康与采购商的EDI项目中,856报文用于说明货物信息、发货信息及货运相关的信息,例如:订单信息,产品说明,物理特性,货物类型、包装,承运人信息以及运输设备中的货物配置。在发货之前,富士康通过EDI系统发送856报文给采购商,告知采购商具体的出货信息,采购商可以根据此报文检查信息并提前准备货物的接收。
先看一个856的示例报文,了解下X12标准报文的结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
ISA*00* *00* *16*Sender *12*Receiver *200121*0735*U*00401*000034398*0*P*@~ GS*SH*Sender*Receiver*20200121*0735*000034398*X*004010~ ST*856*0001~ BSN*00*BSN00001*20200121*0735~ DTM*011*20200121*0640~ HL*1**S~ PRF*Order0001*000001~ N1*ST*ADDR*92*ADDR~ N1*SF*SF01*92*SF01~ N1*SU*SU01*92*SU01~ HL*2*1*I~ LIN**BP*BYITEM001*VP*SUITEM001*MF*MFITEM01~ ...... |
看到上面的856标准报文,您可能会一头雾水吧,实际上就算是专业的EDI人员,也需要参考EDI报文规范文档来逐行解读,那么作为一个非EDI专业人士,如何来了解报文中的业务数据呢?正确的解读上述 EDI 856示例报文,通过项目实施获取核心业务数据,并将其转换为业务人员可以看懂的数据格式,便是这个项目实施的关键点。
对于有ERP系统的企业,EDI项目实施过程中还需要考虑将以上EDI 856(发货通知)文件转换为什么格式文件,才可以在内部ERP系统中展现,以便业务查看。知行EDI系统支持上百种数据源,可以通过任意方式将数据同步到ERP系统。 对于业务单据量较小的成长型企业,可以选择将EDI 856(发货通知)转为Excel文件,然后通过邮件方式自动发送到指定人员的邮箱。
本次EDI项目实施,因为客户使用的是SAP系统,接下来将详细介绍如何实现EDI 856报文的解析以及EDI系统与SAP系统的集成?
2. EDI实施方案
通过上述需求分析,确定该项目的实施方案为:AS2直连,本地化部署EDI,集成SAP系统。可以借助下面富士康与合作伙伴EDI项目的数据传输过程,直观的了解整个EDI项目的实施场景:
在SAP系统中,IDoc是信息系统之间(通常是ERP) 进行事务性或数据交换使用的标准数据格式,其中比较公认的是符合EDI标准的IDoc,它一般是整个的消息报文,包含了事务数据、主数据、控制数据,用以控制数据的整个交换流程,其中主数据一般是XML格式。知行EDI系统通过TRFC方式连接SAP,然后发送标准的IDoc到SAP系统。
不同的IDoc类型(IDoc type)用于处理不同类型的信息。比如IDoc格式ORDERS01可用于采购订单、SHPMNT05可用于发货通知(856),更多的IDoc类型对应业务报文类型可参考SAP IDOC 报文。
在进行项目实施之前,需先与SAP顾问确认清楚,解析的EDI 856报文需要对应SAP系统的哪个IDOC类型?或者可以与SAP顾问沟通,放弃标准IDoc规范,自定义一个新的IDoc规范。小编本次完成的富士康项目,就是自定义的IDoc规范。接下来详细介绍小编的实施过程。
EDI报文解析
1. 856报文解析工作流
报文的解析需要借助知行EDI系统中的各种类型的端口,搭建工作流来完成。那么知行EDI系统中都有哪些端口,这些端口是用来实现什么功能的呢?比如有AS2端口,用来配置双方的AS2信息,连接外部EDI系统,自动化收发文件;数据库端口用来连接指定的业务数据库,如下图在EDI系统的FLOWS页面左侧有一些常用端口的列表:
知行EDI系统左侧展示的端口,可以通过拖拽的方式在右侧工作间创建工作流,详细操作可参考工作流创建。
下图是小编已创建好的用于解析EDI 856(发货通知)报文的工作流:
上面工作流借助了四个不同类型的端口来实现上述856报文的解析:
- AS2:是一个AS2端口,通过简单的页面配置,对接富士康的EDI系统,搭建AS2传输,接收EDI 856报文; AS2端口配置参考,点击查看更多。
- X12ToXML:是一个X12端口,通过知行EDI系统内置的Schemas将标准EDI 856报文转换为XML格式,这种XML相对于EDI格式具有更好的可读性; X12 端口配置参考,点击查看更多。
- Parse856 :是一个Script端口,通过定制化开发,将标准XML格式文件转换成指定的IDoc格式文件。
- IDoc:是一个SAP IDoc端口,用来连接SAP系统,将生成的IDoc文件发送给SAP系统,完成与业务系统的集成。SAP IDoc端口配置参考,点击查看更多。
2. 856报文解析过程
报文解析这部分是该项目的重点,采购商接收富士康的856 报文后,需要翻译成业务人员能够直观看懂的数据格式,才可以了解详细的业务信息。
2.1 标准EDI报文
首先从读懂标准 856 X12(发货通知)报文开始,如下是一个示例报文,供参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ISA*00* *00* *16*Sender *12*Receiver *200121*0735*U*00401*000034398*0*P*@~ GS*SH*Sender*Receiver*20200121*0735*000034398*X*004010~ ST*856*0001~ BSN*00*BSN00001*20200121*0735~ DTM*011*20200121*0640~ HL*1**S~ PRF*Order0001*000001~ N1*ST*ADDR*92*ADDR~ N1*SF*SF01*92*SF01~ N1*SU*SU01*92*SU01~ HL*2*1*I~ LIN**BP*BYITEM001*VP*SUITEM001*MF*MFITEM01~ SN1**500*EA~ HL*3*2*P~ REF*SE*TEST~ CTT*3~ SE*15*0001~ GE*1*000034398~ IEA*1*000034398~ |
那么如何快速看懂这个标准的856 X12报文呢?首先需要知道标准X12报文的组成:
- Segment段标识:如上示例报文中ISA、GS、ST、BSN、DTM等
- Segment段分隔符:如上示例报文中的~(波浪字符)
- Element元素:每个Segment段都包含着多个Element元素
- Element元素分隔符:每个Segment段中的多个Element元素被Element元素分隔符分隔,如上示例报文中的*(星号)
- Component元素:Element元素的下一层
- Component元素分隔符:每个Segment段中的Component元素被Component元素分隔符分隔,比如:(冒号)
了解X12标准报文的组成后,接下来小编带您来分析下上述856 X12标准报文。
先引入一个名词,比如ISA06,ISA就是上述X12标准报文组成介绍中的第一个Segment段标识,06指的是ISA后的第六个Element元素,即报文中ISA的第六个和第七个Element分隔符(*)之间的数据,即下面ISA段中ISA06的值为Sender。
1 |
ISA*00* *00* *16*Sender *12*Receiver *200121*0735*U*00401*000034398*0*P*@~ |
现在来看下示例报文中的数据具体都是哪些业务值:
- ISA:在ISA Segment段中我们需要关注的是ISA06/08/09/10/12/13/15:ISA06/08表示Sender/Receiver Identifier,即发送方/接收方身份标识(Sender/Receiver Identifier);ISA09和ISA10表示EDI报文创建的日期与时间(示例中的日期格式是YYMMDD,即读取的日期与时间为2020年1月21日,7点三十五分);ISA12是报文的版本号(示例中版本号为00401,);ISA13表示ISA Control number(000034398),可以是流水码,但必须唯一,可以根据ISA Control number查找该文件;ISA15是使用标识符,用于区分EDI报文是正式报文(P)还是测试报文(T)。 其他的 Segment段的业务值如上ISA一样,一一对应即可,具体的业务含义如下:
- GS:GS02/03表示Sender/Receiver Identifier 发送方/接收方身份标识;GS04和GS05表示该EDI报文创建的日期与时间;GS08表示报文执行的EDI标准,与ISA12一致。
- ST:ST01表示EDI 报文类型,比如示例报文中的856表示发货通知。
- BSN:BSN02表示发货通知单号,BSN03和BSN04表示发货通知创建的日期与时间。
- DTM:DTM02和DTM03表示发货日期和时间。
- PRF:PRF01表示采购订单单号。
- N1:是对采购商、供应商、站点等实体信息的说明,N101表示是实体类型,其中ST是采购商、SU是供应商、SI是站点,N102表示实体名称,N104表示实体编号。
- LIN:是对物料明细信息的说明,LIN03/LIN05/LIN07分别表示采购商、供应商、制造商的物料编号。
- SN1:是对发货数量信息的说明,SNI02和SNI03分别表示发货数量和数量单位。
- REF:REF02是对包装编号的说明。
2.2 将标准X12文件转换成标准XML文件
接收富士康的标准X12报文后,接下来就是将其转换为标准XML格式文件了,这部分我们可以借助知行EDI软件中的X12端口,通过设置X12 to XML的文件转换类型便可以实现。
将标准X12报文转换成标准XML文件,便可以更清晰直观的了解每个Segment段的信息了,下面是将示例856 X12报文转换成的标准XML格式文件及业务含义:
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 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 |
<Interchange Delimiters=":*. ^~" xmlns="http://www.rssbus.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Meta /> <!--Authorization Information Qualifier--> <ISA01> <!--No Authorization Information Present (No Meaningful Information in I02)-->00</ISA01> <!--Authorization Information--> <ISA02> </ISA02> <!--Security Information Qualifer--> <ISA03>00</ISA03> <!--Security Information--> <ISA04> </ISA04> <!--Interchange ID Qualifier--> <ISA05> <!--Duns Number With 4-Character Suffix-->16</ISA05> <!--Interchange Sender ID--> <ISA06>Sender </ISA06> <!--Interchange ID Qualifier--> <ISA07> <!--Phone (Telephone Companies)-->12</ISA07> <!--Interchange Receiver ID--> <ISA08>Receiver </ISA08> <!--Interchange Date--> <ISA09>200121</ISA09> <!--Interchange Time--> <ISA10>0735</ISA10> <!--Interchange Control Standards Identifier--> <ISA11>U</ISA11> <!--Interchange Control Version Number Code--> <ISA12> <!--Standards Approved for Publication by ASC X12 Procedures Review Board through October 1997-->00401</ISA12> <!--Inter Control Number--> <ISA13>000034398</ISA13> <!--Acknowlegment Requested Code--> <ISA14>0</ISA14> <!--Interchange Usage Indicator Code--> <ISA15> <!--Production Data-->P</ISA15> <!--Component Element Separator--> <ISA16>@</ISA16> </Meta> <FunctionalGroup> <Meta /> <!--Functional Identifier Code--> <GS01> <!--Ship Notice/Manifest (856)-->SH</GS01> <!--Application Sender's Code--> <GS02>Sender</GS02> <!--Application Receiver's Code--> <GS03>Receiver</GS03> <!--Date--> <GS04>20200121</GS04> <!--Time--> <GS05>0735</GS05> <!--Group Control Number--> <GS06>000034398</GS06> <!--Responsible Agency Code--> <GS07> <!--Accredited Standards Committee X12-->X</GS07> <!--Version / Release / Industry Identifier Code--> <GS08> <!--Standards Approved for Publication by ASC X12 Procedures Review Board through October 1997-->004010</GS08> </Meta> <TransactionSet> <TX-00401-856 type="TransactionSet"> <Meta /> <!--Transaction Set Identifier Code--> <ST01> <!--Ship Notice/Manifest-->856</ST01> <!--Transaction Set Control Number--> <ST02>0001</ST02> </Meta> <BSN type="Segment"> <!--Transaction Set Purpose Code--> <BSN01> <!--Original-->00</BSN01> <!--发货通知单号--> <BSN02>BSN00001</BSN02> <!--发货通知创建日期--> <BSN03>20200121</BSN03> <!--发货通知创建时间--> <BSN04>0735</BSN04> </BSN> <DTM type="Segment"> <!--Date/Time Qualifier--> <DTM01> <!--Shipped-->011</DTM01> <!--发货日期--> <DTM02>20200121</DTM02> <!--发货时间--> <DTM03>0640</DTM03> </DTM> <HLLoop1 type="Loop"> <HL type="Segment"> <!--Hierarchical ID Number--> <HL01>1</HL01> <!--Hierarchical Parent ID Number--> <HL02 xsi:nil="true"/> <!--Hierarchical Level Code--> <HL03> <!--Shipment-->S</HL03> </HL> <PRF type="Segment"> <!--采购订单单号--> <PRF01>Order0001</PRF01> <!--Release Number--> <PRF02>000001</PRF02> </PRF> <N1Loop1 type="Loop"> <N1 type="Segment"> <!--采购商--> <N101> <!--Ship To-->ST</N101> <!--采购商名称--> <N102>ADDR</N102> <!--Identification Code Qualifier--> <N103> <!--Assigned by Buyer or Buyer's Agent-->92</N103> <!--采购商编号--> <N104>ADDR</N104> </N1> </N1Loop1> <N1Loop1 type="Loop"> <N1 type="Segment"> <!--站点--> <N101> <!--Ship From-->SF</N101> <!--站点名称--> <N102>SF01</N102> <!--Identification Code Qualifier--> <N103> <!--Assigned by Buyer or Buyer's Agent-->92</N103> <!--站点编号--> <N104>SF01</N104> </N1> </N1Loop1> <N1Loop1 type="Loop"> <N1 type="Segment"> <!--供应商--> <N101> <!--Supplier/Manufacturer-->SU</N101> <!--供应商名称--> <N102>SU01</N102> <!--Identification Code Qualifier--> <N103> <!--Assigned by Buyer or Buyer's Agent-->92</N103> <!--供应商编号--> <N104>SU01</N104> </N1> </N1Loop1> </HLLoop1> <HLLoop1 type="Loop"> <HL type="Segment"> <!--Hierarchical ID Number--> <HL01>2</HL01> <!--Hierarchical Parent ID Number--> <HL02>1</HL02> <!--Hierarchical Level Code--> <HL03> <!--Item-->I</HL03> </HL> <LIN type="Segment"> <!--Assigned Identification--> <LIN01 xsi:nil="true"/> <!--Product/Service ID Qualifier--> <LIN02> <!--Buyer's Part Number-->BP</LIN02> <!--采购商物料编号--> <LIN03>BYITEM001</LIN03> <!--Product/Service ID Qualifier--> <LIN04> <!--Vendor's (Seller's) Part Number-->VP</LIN04> <!--供应商物料编号--> <LIN05>SUITEM001</LIN05> <!--Product/Service ID Qualifier--> <LIN06> <!--Manufacturer-->MF</LIN06> <!--制造商物料编号--> <LIN07>MFITEM01</LIN07> </LIN> <SN1 type="Segment"> <!--Assigned Identification--> <SN101 xsi:nil="true"/> <!--发货数量--> <SN102>500</SN102> <!--数量单位--> <SN103> <!--Each-->EA</SN103> </SN1> </HLLoop1> <HLLoop1 type="Loop"> <HL type="Segment"> <!--Hierarchical ID Number--> <HL01>3</HL01> <!--Hierarchical Parent ID Number--> <HL02>2</HL02> <!--Hierarchical Level Code--> <HL03> <!--Pack-->P</HL03> </HL> <REF type="Segment"> <!--Reference Identification Qualifier--> <REF01> <!--Serial Number-->SE</REF01> <!--包装编号--> <REF02>TEST</REF02> </REF> </HLLoop1> <CTT type="Segment"> <!--Number of Line Items--> <CTT01>3</CTT01> </CTT> </TX-00401-856> </TransactionSet> </FunctionalGroup> </Interchange> |
2.3 将标准XML文件转为IDoc文件
最后一步就是将上面的标准XML文件转成IDoc文件,与SAP系统集成了,这部分在实施过程中是需要定制化开发的。首先需要将标准XML中的字段和IDoc中的字段对应,字段对应时我们可以参考标准XML的每一个字段的业务含义与IDoc中每个字段代表的业务数据含义来对应,最后通过读取XML中的数据将其写入到IDoc字段中即可。
将上面标准的XML文件数据写入IDoc文件后,数据格式及业务含义如下,供参考:
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 |
<IDOC> <EDI_DC40> //IDoc文件头部信息 <TABNAM></TABNAM> <MANDT></MANDT> <DOCNUM></DOCNUM> <DOCREL></DOCREL> <STATUS></STATUS> <DIRECT></DIRECT> <OUTMOD></OUTMOD> <EXPRSS></EXPRSS> <TEST></TEST> <IDOCTYP>ASN</IDOCTYP> //IDoc Type <CIMTYP></CIMTYP> <MESTYP>ASN</MESTYP> <MESCOD></MESCOD> <MESFCT></MESFCT> <STD></STD> <STDVRS></STDVRS> <STDMES></STDMES> <SNDPOR></SNDPOR> <SNDPRT></SNDPRT> <SNDPFC></SNDPFC> <SNDPRN></SNDPRN> <SNDSAD></SNDSAD> <SNDLAD></SNDLAD> <RCVPOR></RCVPOR> <RCVPRT></RCVPRT> <RCVPFC></RCVPFC> <RCVPRN></RCVPRN> <RCVSAD></RCVSAD> <RCVLAD></RCVLAD> <CREDAT></CREDAT> <CRETIM></CRETIM> <REFINT></REFINT> <REFGRP></REFGRP> <REFMES></REFMES> <ARCKEY></ARCKEY> <SERIAL></SERIAL> </EDI_DC40> <ZFBSN> <ASNNUM>BSN00001</ASNNUM> //发货通知单号 <ASNDATE>202001210735</ASNDATE> //发货通知创建时间 </ZFBSN> <ZFDTM> <DELDATE>202001210640</DELDATE> //发货时间 </ZFDTM> <ZFPRF> <ORDNUM>Order0001</ORDNUM> //采购订单单号 <RELNUM>000001</RELNUM> </ZFPRF> <ZFRFF> <RFFINFO></RFFINFO> </ZFRFF> <ZFN1> <STNAME>ADDR</STNAME> //采购商名称 <STCODE>ADDR</STCODE> //采购商编号 <SINAME>SF01</SINAME> //站点名称 <SICODE>SF01</SICODE> //站点编号 <SUNAME>SU01</SUNAME> //供应商名称 <SUCODE>SU01</SUCODE> //供应商编号 </ZFN1> <ZFLIN> <LINEITEM></LINEITEM> //订单行号 <BPNUM>BYITEM001</BPNUM> //采购商物料编号 <SPNUM>SUITEM001</SPNUM> //供应商物料编号 <MRNUM>MFITEM01</MRNUM> //制造商物料编号 </ZFLIN> <ZFSNI> <SHIPQTY>500</SHIPQTY> //发货数量 <QTYUNIT>EA</QTYUNIT> //数量单位 </ZFSNI> <ZFSE> <SERNUM>SE</SERNUM> <PACKNUM>TEST</PACKNUM> //包装编号 </ZFSE> <ZFCTT> <LTOTALNUM>3</LTOTALNUM> </ZFCTT> </IDOC> |
以上便是在协助的客户对接富士康EDI系统时,对于EDI需求的分析、提供给客户的实施方案,以及如何解析856报文将数据写入客户SAP业务系统的说明,希望可以帮助到您。
注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。