本文将以OTP项目为依托,对符合 X12 报文标准的 OTP 850 订单进行解读,并将其转换为更易处理的 XML 格式文件。
在此前的文章如何读懂 X12 中,我们对 X12 已经做了详细的解读,接下来开始深入了解 850 订单。
下图为 OTP EDI X12 850 示例报文转换前以及经知行之桥 EDI 系统转换后的效果对比图:
OTP X12 850 示例订单详解
OTP会给供应商发送 符合X12 国际标准的 EDI 850 订单,示例如下:
-
ISA*00* *00* *12*1234567890 *ZZ*GENERIC *160726*1505*U*00401*850002059*0*T*>
-
GS*PC*1234567890*GENERIC*20160726*1505*850002059*X*004010
-
ST*850*0001
-
-
BEG*00*BY*999262*ReleaseNumber*20160721*12345678
-
- 00 = 默认值
-
- BY:买方
-
- 999262 = 采购订单编号
-
- ReleaseNumber = 版本号
-
- 20160721 = 采购订单日期
-
- 12345678 = 供应商识别号
-
-
CUR*LZ*USD*VN*USD
-
- LZ = 当地连锁店
-
- USD = 美元
-
- VN = 供应商
-
- USD = 美元
-
-
REF*VN*VN123456*description
-
- VN = 供应商订单号限定符
-
- VN123456 = 供应商订单号
-
- description = 补充描述
-
-
REF*DP*DP123456*description
-
- DP = 部门编号限定符
-
- DP123456 = 部门编号
-
- description = 补充描述
-
-
REF*ZZ*ZZ123456*description
-
- ZZ = 买方名称限定符
-
- ZZ123456 = 买方名称
-
- description = 补充描述
-
-
REF*6P*6P123456*description
-
- 6P = 集团编号限定符
-
- 6P123456 = 集团编号
-
- description = 补充描述
-
-
REF*DB*Note1
-
- DB = 文本限定符
-
- Note1 = 文本信息
-
-
REF*7N*Note2
-
- 7N = 文本限定符
-
- Note2 = 文本信息
-
-
REF*7O*Note3
-
- 7O = 文本限定符
-
- Note3 = 文本信息
-
-
FOB*PP*PrepaidMessage*PrepaidNote
-
- PP = 预付模式
-
- PrepaidMessage = 预付信息
-
- PrepaidNote = 预付注释
-
-
FOB*CF*FullFreightAllowanceMessage*Note
-
- CF = 全额运费补贴模式
-
- FullFreightAllowanceMessage = 全额运费补贴
-
- Note = 全额运费补贴注释
-
-
SAC*A*A260*ZZ*98al*100**13%
-
- A = 津贴标识
-
- A260 = 广告津贴限定符
-
- ZZ = 默认字符
-
- 98al = 广告津贴编码
-
- 100 = 广告津贴数目
-
- 13% = 广告津贴百分比
-
-
SAC*C*A010*ZZ*98ch*100**3%
-
- C = 收费标识
-
- A010 = 最低收费限定符
-
- ZZ = 默认字符
-
- 98ch = 最低收费编码
-
- 100 = 最低收费数目
-
- 3% = 最低收费百分比
-
-
ITD***6%*20220302*31*20220402*for sale
-
- 6% = 定期折扣百分比
-
- 20220302 = 折扣到期日
-
- 31 = 折扣天数
-
- 20220402 = 销售条款到期日
-
- for sale = 销售条款描述
-
-
DTM*010*20221002
-
- 010 = 要求的发货日期限定符
-
- 20221002 = 要求的发货日期
-
-
DTM*037*20220930
-
- 037 = 发货不能早于限定符
-
- 20220930 = 发货日期不能早于20220930
-
-
DTM*038*20221010
-
- 038 = 发货不能晚于限定符
-
- 20221010 = 发货日期不能晚于
-
-
DTM*063*20221031
-
- 063 = 交付不能晚于限定符
-
- 20221031 = 交付日期不能晚于
-
-
DTM*064*20221025
-
- 064 = 交付不能早于限定符
-
- 20221025 = 交付日期不能早于
-
-
TD5***6547**shipmentdec
-
- 6547 = 常规运输路线
-
- shipmentdec = 运输路线描述
-
-
N1*ST*OTP RETAIL*92*0091
-
- ST = 发货限定符
-
- OTP RETAIL = 发货地名称
-
- 92 = 由买方指定
-
- 0091 = 发货地编码
-
-
N3*CHANGAN street*No.098
-
- CHANGAN street = 发货方地址信息1
-
- No.098 = 发货方地址信息2
-
-
N4*XIAN*YONGING*710111*CN
-
- XIAN = 发货地城市
-
- YONGING = 发货地址
-
- 710111 = 发货地邮编
-
- CN = 发货地国家编码
-
-
N1*BT*billto*92*0034
-
- BT = 付款方限定符
-
- billto = 付款方名称
-
- 92 = 由买方指定
-
- 0034 = 付款方编码
-
-
N3*wujiang street*No.011
-
- wujiang street = 付款方地址信息1
-
- No.011 = 付款方地址信息2
-
-
N4*Suzhou*shizi*215000*CN
-
- Suzhou = 付款方城市
-
- shizi = 付款方地址
-
- 215000 = 付款方邮编
-
- CN = 付款方国家编码
-
-
N1*VN*vender*92*0025
-
- VN = 供应商限定符
-
- vender = 供应商名称
-
- 92 = 由买方指定
-
- 0025 = 发货地编码
-
-
N3*longhua street*No.099
-
- longhua street = 供应商地址信息1
-
- No.099 = 供应商地址信息2
-
-
N4*Haikou*haian*571000*CN
-
- Haikou = 供应商城市
-
- haian= 供应商地址
-
- 571000 = 供应商邮编
-
- CN = 供应商国家编码
-
-
明细信息:
-
-
PO1**144*EA*7.6**VN*123456000201*SK*00012345*UP*990*ZZ*VENDOR-STYLE-123*CG*34
-
- 144 = 订购数量
-
- EA = 测量单位
-
- 7.6 = 单价
-
- VN = 供应商物料编号限定符
-
- 123456000201 = 供应商物料编号
-
- SK = 产品标识符(SKU)
-
- 00012345 = 产品编号(SKU)
-
- UP = 产品标识符(UCC-12)
-
- 990 = 产品编号(UCC-12)
-
- ZZ = 产品描述标识符
-
- VENDOR-STYLE-123 = 产品描述
-
- CG = 内包装数量标识符
-
- 34 = 内包装数量
-
-
SAC*A*A260*ZZ*98al*100**13%
-
- A = 津贴标识符
-
- A260 = 广告津贴限定符
-
- ZZ = 默认值
-
- 98al = 广告津贴编码
-
- 100 = 广告津贴数目
-
- 13% = 广告津贴比例
-
-
SAC*C*A010*ZZ*98ch*100**3%
-
- C = 收费限定符
-
- A010 = 最低收费限定符
-
- ZZ = 默认字符
-
- 98ch = 最低收费编码
-
- 100 = 最低收费数目
-
- 3% = 最低收费百分比
-
-
CTP**RTL*23
-
- RTL = 零售价格限定符
-
- 23 = 零售价格
-
-
SDQ*EA*92*XIAN*123*CHENGDU*345
-
- EA= 测量单位编码
-
- 92 = 由买方或者买方联系人制定
-
- XIAN= ID
-
- 123 = 数量
-
- CHENGDU = ID
-
- 345 = 数量
-
-
DTM*002*20221002
-
- 002 = 要求交付时间限定符
-
- 20221002 = 要求交付时间
-
-
CTT*1
-
- 1 = 物料号数量
-
-
SE*40*0001
-
-
GE*1*850002059
-
IEA*1*850002059
通过上述报文解读可以看到,我们接收到的 X12 850 报文可读性较差,无论是企业的业务人员还是 IT 人员都很难从以上订单中直接获取到有效的业务信息。因此需要对此 850 订单进行格式转换。
EDI 系统转换效果
利用知行之桥 EDI 系统可以将其转换为可读性更强的目标 XML 格式文件,以便于进一步处理,转换效果如下:
-
<?xml version="1.0" encoding="UTF-8"?>
-
<EDI_850 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
<Version>0.0.3
</Version>
-
<Mode>T
</Mode>
-
<!--采购订单编号-->
-
<PONumber>999262
</PONumber>
-
<!--版本号-->
-
<ReleaseNumber>ReleaseNumber
</ReleaseNumber>
-
<!--采购订单日期-->
-
<PODate>20160721
</PODate>
-
<!--供应商识别号-->
-
<ContractNumber>12345678
</ContractNumber>
-
<CurrencySpecification>
-
<!--当地连锁店货币代码-->
-
<LZCurrencyCode>USD
</LZCurrencyCode>
-
<!--供应商货币代码-->
-
<VNCurrencyCode>USD
</VNCurrencyCode>
-
</CurrencySpecification>
-
<!--供应商订单号-->
-
<VendorOrderNumber>VN123456
</VendorOrderNumber>
-
<VendorOrderNumberDescription>description
</VendorOrderNumberDescription>
-
<!--部门编号-->
-
<DepartmentNumber>DP123456
</DepartmentNumber>
-
<DepartmentNumberDescription>description
</DepartmentNumberDescription>
-
<!--买方名称-->
-
<MutuallyDefined>ZZ123456
</MutuallyDefined>
-
<MutuallyDefinedDescription>description
</MutuallyDefinedDescription>
-
<!--集团编号-->
-
<GroupNumber>6P123456
</GroupNumber>
-
<GroupNumberDescription>description
</GroupNumberDescription>
-
<!--文本信息1-->
-
<BuyerDebitMemoDescription>Note1
</BuyerDebitMemoDescription>
-
<!--文本信息2-->
-
<PiggybackDescription>Note2
</PiggybackDescription>
-
<!--文本信息3-->
-
<TriplebackDescription>Note3
</TriplebackDescription>
-
<ShipmentTransportationInstructions>
-
<!--预付模式-->
-
<ShipmentMethodOfPayment>PP
</ShipmentMethodOfPayment>
-
<!--预付信息-->
-
<LocationQualifier>PrepaidMessage
</LocationQualifier>
-
<!--预付注释-->
-
<Description>PrepaidNote
</Description>
-
</ShipmentTransportationInstructions>
-
<ShipmentTransportationInstructions>
-
<!--全额运费补贴模式-->
-
<ShipmentMethodOfPayment>CF
</ShipmentMethodOfPayment>
-
<!--全额运费补贴-->
-
<LocationQualifier>FullFreightAllowanceMessage
</LocationQualifier>
-
<!--全额运费补贴注释-->
-
<Description>Note
</Description>
-
</ShipmentTransportationInstructions>
-
<ServicePromotionAllowanceOrChargeInfo>
-
<!--津贴标识-->
-
<AllowanceOrChargeIndicator>A
</AllowanceOrChargeIndicator>
-
<!--广告津贴限定符-->
-
<ServicePromotionAllowanceChargeCode>A260
</ServicePromotionAllowanceChargeCode>
-
<!--广告津贴编码-->
-
<AgencyServicePromotionAllowanceChargeCode>98al
</AgencyServicePromotionAllowanceChargeCode>
-
<!--广告津贴数目-->
-
<Amount>100
</Amount>
-
<!--广告津贴百分比限定符-->
-
<AllowanceOrChargePercentQualifier>
</AllowanceOrChargePercentQualifier>
-
<!--广告津贴百分比-->
-
<Percent>13%
</Percent>
-
<Description>
</Description>
-
</ServicePromotionAllowanceOrChargeInfo>
-
<ServicePromotionAllowanceOrChargeInfo>
-
<!--收费标识-->
-
<AllowanceOrChargeIndicator>C
</AllowanceOrChargeIndicator>
-
<!--最低收费限定符-->
-
<ServicePromotionAllowanceChargeCode>A010
</ServicePromotionAllowanceChargeCode>
-
<!--最低收费编码-->
-
<AgencyServicePromotionAllowanceChargeCode>98ch
</AgencyServicePromotionAllowanceChargeCode>
-
<!--最低收费数目-->
-
<Amount>100
</Amount>
-
<!--最低收费百分比限定符-->
-
<AllowanceOrChargePercentQualifier>
</AllowanceOrChargePercentQualifier>
-
<!--最低收费百分比-->
-
<Percent>3%
</Percent>
-
<Description>
</Description>
-
</ServicePromotionAllowanceOrChargeInfo>
-
<TermsOfSaleOrDefferdTermsOfSale>
-
<!--定期折扣百分比-->
-
<DiscountPercent>6%
</DiscountPercent>
-
<!--折扣到期日-->
-
<DiscountDueDate>20220302
</DiscountDueDate>
-
<!--折扣天数-->
-
<DiscountDaysDue>31
</DiscountDaysDue>
-
<!--销售条款到期日-->
-
<NetDueDate>20220402
</NetDueDate>
-
<!--销售条款描述-->
-
<Description>for sale
</Description>
-
</TermsOfSaleOrDefferdTermsOfSale>
-
<RequestedShipDateTimeInfo>
-
<!--要求的发货日期-->
-
<Date>20221002
</Date>
-
</RequestedShipDateTimeInfo>
-
<ShipNotBeforeDateTimeInfo>
-
<!--发货日期不能早于-->
-
<Date>20220930
</Date>
-
</ShipNotBeforeDateTimeInfo>
-
<ShipNotAfterDateTimeInfo>
-
<!--发货日期不能晚于-->
-
<Date>20221010
</Date>
-
</ShipNotAfterDateTimeInfo>
-
<DoNotDeliverAfterDateTimeInfo>
-
<!--交付日期不能晚于-->
-
<Date>20221031
</Date>
-
</DoNotDeliverAfterDateTimeInfo>
-
<DoNotDeliverBeforeDateTimeInfo>
-
<!--交付日期不能早于-->
-
<Date>20221025
</Date>
-
</DoNotDeliverBeforeDateTimeInfo>
-
<CarrierDetails>
-
<!--常规运输路线-->
-
<IdentificationCode>6547
</IdentificationCode>
-
<!--运输路线描述-->
-
<Routing>shipmentdec
</Routing>
-
</CarrierDetails>
-
<ShipToInfo>
-
<!--发货地名称-->
-
<Name>OTP RETAIL
</Name>
-
<!--发货地编码-->
-
<CodeAssignedByBuyerOrAgentId>0091
</CodeAssignedByBuyerOrAgentId>
-
<AddressInfo>
-
<!--发货方地址信息1-->
-
<Address>CHANGAN street
</Address>
-
<!--发货方地址信息2-->
-
<Address2>No.098
</Address2>
-
</AddressInfo>
-
<GeographicLocation>
-
<!--发货地城市-->
-
<CityName>XIAN
</CityName>
-
<!--发货地址-->
-
<StateOrProvinceCode>YONGING
</StateOrProvinceCode>
-
<!--发货地邮编-->
-
<PostalCode>710111
</PostalCode>
-
<!--发货地国家编码-->
-
<CountryCode>CN
</CountryCode>
-
</GeographicLocation>
-
</ShipToInfo>
-
<BillToInfo>
-
<!--付款方名称-->
-
<Name>billto
</Name>
-
<!--付款方编码-->
-
<CodeAssignedByBuyerOrAgentId>0034
</CodeAssignedByBuyerOrAgentId>
-
<AddressInfo>
-
<!--付款方地址信息1-->
-
<Address>wujiang street
</Address>
-
<!--付款方地址信息2-->
-
<Address2>No.011
</Address2>
-
</AddressInfo>
-
<GeographicLocation>
-
<!--付款方城市-->
-
<CityName>Suzhou
</CityName>
-
<!--付款方地址-->
-
<StateOrProvinceCode>shizi
</StateOrProvinceCode>
-
<!--付款方邮编-->
-
<PostalCode>215000
</PostalCode>
-
<!--付款方国家编码-->
-
<CountryCode>CN
</CountryCode>
-
</GeographicLocation>
-
</BillToInfo>
-
<VendorInfo>
-
<!--供应商名称-->
-
<Name>vender
</Name>
-
<!--发货地编码-->
-
<CodeAssignedByBuyerOrAgentId>0025
</CodeAssignedByBuyerOrAgentId>
-
<AddressInfo>
-
<!--供应商地址信息1-->
-
<Address>longhua street
</Address>
-
<!--供应商地址信息2-->
-
<Address2>No.099
</Address2>
-
</AddressInfo>
-
<GeographicLocation>
-
<!--供应商城市-->
-
<CityName>Haikou
</CityName>
-
<!--供应商地址-->
-
<StateOrProvinceCode>haian
</StateOrProvinceCode>
-
<!--供应商邮编-->
-
<PostalCode>571000
</PostalCode>
-
<!--供应商国家编码-->
-
<CountryCode>CN
</CountryCode>
-
</GeographicLocation>
-
</VendorInfo>
-
<BaselineItem>
-
<!--订购数量-->
-
<QuantityOrdered>144
</QuantityOrdered>
-
<!--测量单位-->
-
<UOM>EA
</UOM>
-
<!--单价-->
-
<UnitPrice>7.6
</UnitPrice>
-
<!--供应商物料编号-->
-
<VendorItemNumber>123456000201
</VendorItemNumber>
-
<!--产品标识符(SKU)-->
-
<SKU>00012345
</SKU>
-
<!--产品编号(UCC-12)-->
-
<UPCConsumerPackageCode12>990
</UPCConsumerPackageCode12>
-
<!--产品描述-->
-
<MutuallyDefinedNumber>VENDOR-STYLE-123
</MutuallyDefinedNumber>
-
<!--内包装数量-->
-
<CommodityGrouping>34
</CommodityGrouping>
-
<PriceInfo>
-
<!--零售价格-->
-
<UnitPrice>23
</UnitPrice>
-
</PriceInfo>
-
<DestinationQuantity>
-
<!--ID-->
-
<IdentificationCode1>XIAN
</IdentificationCode1>
-
<!--数量-->
-
<Quantity1>123
</Quantity1>
-
<!--ID-->
-
<IdentificationCode2>CHENGDU
</IdentificationCode2>
-
<!--数量-->
-
<Quantity2>345
</Quantity2>
-
<IdentificationCode3>
</IdentificationCode3>
-
<Quantity3>
</Quantity3>
-
<IdentificationCode4>
</IdentificationCode4>
-
<Quantity4>
</Quantity4>
-
<IdentificationCode5>
</IdentificationCode5>
-
<Quantity5>
</Quantity5>
-
<IdentificationCode6>
</IdentificationCode6>
-
<Quantity6>
</Quantity6>
-
<IdentificationCode7>
</IdentificationCode7>
-
<Quantity7>
</Quantity7>
-
<IdentificationCode8>
</IdentificationCode8>
-
<Quantity8>
</Quantity8>
-
<IdentificationCode9>
</IdentificationCode9>
-
<Quantity9>
</Quantity9>
-
<IdentificationCode10>
</IdentificationCode10>
-
<Quantity10>
</Quantity10>
-
</DestinationQuantity>
-
<DeliveryRequestedDateTimeInfo>
-
<!--要求交付时间-->
-
<Date>20221002
</Date>
-
</DeliveryRequestedDateTimeInfo>
-
</BaselineItem>
-
</EDI_850>
可以看到,经 EDI 系统转换之后的目标 XML 文件中,我们将业务数据与业务字段联系起来,这样的文件可读性更强,并且更方便进行下一步数据处理。
工作流示例
通过上述的讲解想必大家已经了解了 OTP 850 订单在知行之桥 EDI 系统中的转换流程了,以下是上述工作流示例,您可以下载知行之桥EDI系统,导入【示例工作流】以及【X12 850 测试文件】,进行实战操作。
在知行之桥 EDI 系统中导入上述工作流以及测试文件。
如下图所示:
①先点击右上角的工作区齿轮图标,选择创建工作区,命名为OTP_850。
②然后选择导入工作区,选择OTP_850.arcflow。
③点开OTP_X12ToXML端口,点击上方 输入 ,在 更多 里点击上传文件,上传OTP_850_Sample.edi。
④点开OTP_XMLMap_850端口,点击上方 输出 ,点击 OTP_850_Sample_850002059.xml 即可下载文件,看到转换后的结果。
端口解读
以下端口是上述工作流的核心要素:
X12端口:即上文命名为OTP_X12ToXML的端口
X12端口可以将 XML 文档转换为 X12 文档,也可以将 X12 文档转换为 XML。本次示例中,需要将 XML Map 处理后的目标XML文件转换为X12 格式。生成 X12 文档时,X12 端口将 XML 转换为 X12 格式的文档,并生成适当的 X12 头,也就是我们上述报文讲解中出现的ISA字段。这个字段包含发送方ID以及接收方ID信息,您可以在X12 端口的设置选项卡中,根据您与文件接收方的实际情况设置以上信息。
XML MAP端口:即上文命名为OTP_XMLMap_850的端口
XML Map 端口提供了一种可视化设计器驱动的方式来将 XML 数据从一种结构转换为另一种结构。
XML Map 端口为转换 XML 结构提供了灵活且直观的界面。首先,应将源模板文件(包含所有输入文档的 XML 结构的文件)和目标模板文件(包含端口应输出的 XML 结构的文件)上传到端口。上述示例中我们已经提前将源模板以及目标模板文件设置好。 上传源和目标模板文件后,映射设计器将填充源和目标 XML 结构。然后,可以将源中的元素拖放到目标中的元素上,以建立映射关系。
以上是对接收 OTP 850 订单报文的解读以及转换的详细介绍,了解更多 OTP 的 EDI 报文信息,欢迎交流。
更多EDI信息,请参阅: EDI是什么?