如何与B&S建立EDI连接?

B&S致力于将世界领先品牌的食品和饮料分销到免税渠道、餐饮服务商以及各商超。B&S的采购、仓储和分销解决方案可让供应商专注于核心业务,同时扩大业务范围。为了更好的管理来自全球各地的供应商,B&S选择通过EDI来处理与其供应商们之间订单、订单确认、发货通知以及发票的传输。

B&S EDI需求分析

1.传输协议

B&S 支持的传输协议为AS2或者SFTP。

2.报文标准

报文标准采用EDIFACT

3.业务单据类型

ORDERS采购订单(D96A):B&S发送给供应商 APERAK应用程序错误和确认信息(D96A):供应商发送给B&S DESADV发货通知(D01B):供应商发送给B&S INVOIC发票(D96A):供应商发送给B&S

以上信息就是与B&S建立EDI连接需要掌握的基本需求了。在开始EDI项目之前,B&S还向供应商提出要求,需要供应商整理以下问题并通过邮件发送给B&S:

  • 供应商是否已经在使用EDI解决方案?
  • 供应商是否有单独的系统用于生产和测试环境?
  • 供应商什么时候能够开始与B&S的EDI项目?
  • 谁将是供应商的技术联系人?
  • 谁将是供应商方的项目经理联系人?
  • 供应商支持哪种传输协议?
  • 供应商支持哪种文件格式?
  • 请提供所有GLN(全球定位号码)的清单。

如何通过知行之桥EDI系统实现与B&S的EDI对接?

结合以上需求,我们提出解决方案如下:

搭建EDI传输通道

通过知行之桥EDI系统与交易伙伴建立EDI连接,只需要使用一个可控文件传输端口即可完成。针对B&S的需求,可以通过知行之桥EDI系统的AS2端口实现EDI传输通道的搭建。

AS2具有安全连接、数字签名、文件加密、能够接收文件处理状态(MDN消息应答)、灵活的数据传输等优点。进行AS2连接,需要准备如下的信息配置在AS2端口中:

  • AS2 ID(你的AS2身份标识符)
  • Private Certificate (私钥证书)
  • Certificate Password(私钥证书密码)
  • Public Certificate(与私钥证书成对的公钥证书)
  • Receiving URL (你的数据接收URL地址)

实现EDI文件的格式转换(映射)

根据上文报文标准以及业务单据类型中提到的内容,B&S使用的是EDIFACT报文标准。对企业而言,EDIFACT报文的处理难度较大,因此需要在EDI系统中进行格式转换,将EDI报文转换为更易处理的XML文件。以便进行进一步地处理。在知行之桥EDI系统中,可以使用EDIFACT端口以及XMLMap端口快速实现由EDI报文到XML文件的相互转换。

系统集成

所谓系统集成就是实现EDI系统与供应商内部业务系统的集成,实现数据传输与数据处理的自动化。供应商搭建EDI传输通道以及实现EDI文件的格式转换这两步都需要与B&S配合完成,到系统集成部分则是EDI系统与供应商内部业务系统的配合了。

供应商搭建EDI,最理想的方式便是实现EDI系统与供应商内部业务系统的集成,这样才能最大程度上实现业务数据处理的自动化。

知行之桥EDI系统支持多种集成方式:中间数据库方式、API 方式等,实现与ERP、SAP、SRM等系统的无缝集成。

注意事项

1.ORDERS采购订单

收到来自B&S的采购订单中会包含有一个FTX+AAI字段,用于存放供应商关于交货、证书的指示信息。

2.APERAK采购订单回复

在B&S EDI项目中,APERAK报文更多的是被用做采购订单回复。B&S发来采购订单之后,供应商根据订单内容进行判断,是否接受订单。如果接受订单则会给B&S回复APERAK。

扩展阅读:什么是APERAK报文?

3.DESADV发货通知

基于采购订单发货,B&S要求供应商在24小时内确认该订单,并报告物料短缺或数量的变化。

4.INVOIC 发票

请对所有行的总和进行四舍五入,使小计中最多有两位小数,并且数值需要等于增值税金额的小计。

了解更多零售行业的EDI项目需求以及项目案例,欢迎联系我们。

更多 EDI 信息,请参阅: EDI 是什么?

本文转载于网络 如有侵权请联系删除

相关文章

  • Android Framework学习(九)之Binder概述

    Android系统中,每个应用程序是由Android的Activity,Service,Broadcast,ContentProvider这四大组件的中一个或多个组合而成,这四大组件所涉及的多进程间的通信底层都是依赖于BinderIPC机制。不仅于此,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信)方案,当然也存在部分其他的IPC方式,比如Zygote通信便是采用socket。IPC原理每个Android的进程,只能运行在自己进程所拥有的虚拟地址空间。对应一个4GB的虚拟地址空间,其中3GB是用户空间,1GB是内核空间,当然内核空间的大小是可以通过参数配置调整的。对于用户空间,不同进程之间彼此是不能共享的,而内核空间却是可共享的。Client进程向Server进程通信,恰恰是利用进程间可共享的内核内存空间来完成底层通信工作的,Client端与Server端进程往往采用ioctl等方法跟内核空间的驱动进行交互。Binder原理Binder通信采用C/S架构,从组件视角来说,包含Client、Server、ServiceManager以及binder驱动,其

  • 【elasticsearch系列】安装elasticsearch-head插件

    目录环境安装node安装gruntelasticsearch-head运行修改elasticsearch.yml排查问题环境安装elasticsearch-head插件,需要依赖nodeJs环境,故首先我们先搭建nodeJs环境; 此part先将此篇文章需要的各个官网列出来: node官网:https://nodejs.org/en/download/ node中文网:http://nodejs.cn/download/current/ elasticsearch-headGitHub:https://github.com/mobz/elasticsearch-head安装node进入node官网,依据自己的系统选择需要的安装包; 等待node.msi下载完成,双击,next一路安装。安装完成,输入node-version 安装grunt全局安装grunt grunt构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动的。因此需要安装grunt: 注意:路径切到nodejs安装目录下 此外执行下面的安装grunt命令之前,先配置阿里镜像,否则安装速度特

  • LeetCode笔记:Weekly Contest 225 比赛记录

    0.赛后总结今天总算是又一次把4道题全部搞定了,虽然前两题错了三次简直是不能忍,但是好歹算是都做出来了……说起来,上一次全部做出来已经是什么时候了啊,唉……1.题目一给出题目一的试题链接如下:5661.替换隐藏数字得到的最晚时间1.解题思路这一题没啥好多说的,就是分类讨论一下,然后给出结果就行了。唯一的问题就是注意一下一些边界条件就行了。2.代码实现给出python代码实现如下:classSolution: defmaximumTime(self,time:str)->str: s=list(time) foridx,cinenumerate(s): ifc!='?': continue ifidx==0: iftime[idx+1]in"0123?": s[idx]='2' else: s[idx]="1" elifidx==1: ifs[idx-1]=="2": s[idx]="3" else: s[idx]="9" elifidx==3

  • 智慧园区可视化设计思路

    智慧园区可视化设计思路前言随着物联网技术的不断发展,推动了园区的智能化管理与服务不断升级。科技的进步激发市场诉求,智能化园区的市场规模也越来越大。 在经济快速发展和政府政策的推动下,伴随着国内智慧城市建设步伐的加快,园区规划建设整体性越来越强,更加注重各种基础配套设施,以更好的服务促进高新产业的发展。尤其是注意产业园区的信息化建设,构建互联互通、资源共享的信息资源化网络。 智慧园区是在园区搭建的IT基础设施之上,运用物联网、云计算、多媒体等现代信息技术,帮助园区在信息化建设方面构建统一的组织管理协调架构、业务管理平台和对外服务平台,为园区管理者以及企业提供创新管理与运营服务。 我们团队对于智慧园区可视化项目做的已非常成熟,在本文中我会采用一些我们团队做过的比较通用又具有代表性的智慧园区项目来阐述我的设计思路。一、确认风格园区项目大致可以区分为科技风和写实风。 以下都是我们团队做过的项目案例,可以很明显的看出风格上的差异。风格的确立至关重要,直接影响了后期的UI设计以及建模。 科技风格更能抓住用户眼球,给人带来酷炫的感觉。写实风格更加追求场景的真实性和还原性,两者没有优劣,根据需求的不同

  • 利用easyui实现增删改查(四):搜索数据

    界面展示 具体jsp代码我们在jsp页面画出搜索的页面<divid="datagridtoorbar"> <ahref="javascript:void(0)">添加</a> <ahref="javascript:void(0)">删除</a> <inputid="keywords"type="text"name="keywords"/>搜索的按钮 </div> //搜索按钮的easyUI的样式 $("#keyword").textbox({ buttonIcon:"icon-search", buttonText:"搜索", })复制以上的搜索框就有easyui的样式,现在给这个搜索框一个点击事件:在写easyui样式的代码里面加一个点击事件//搜索按钮的easyUI的样式 $("#keywords").

  • 10,类和对象

    一,POP和OOP1,什么是面向对象编程?POP:ProcessOrientedProgramming.程序被看成一系列命令的依次执行。基本封装形式为函数。设计函数的基本要点是IPO:输入Input——>处理Process——>输出Output.OOP:ObjectOrientedProgramming.程序被看成一系列对象的相互作用。基本的封装形式是类。设计类的基本要点是RPM:关系Relation,属性Property,方法Method. 2,面向对象基本概念?类:class,抽象数据结构,数据和算法的封装。如:定义一个类:dog。对象:object,类的实例。如:dog类的一个实例:点点dot。属性:properties,和对象关联的数据部分。如:weight体重,breed品种。方法:methods,和对象关联的算法部分。如:run(),eat(),bark()。 3,面向对象编程的优点?容易使用:封装,奇妙的句点符号。容易扩展:继承,多态。二,创建类和对象三,获取对象信息三,思考练习19,给ATMUser类添加一个新的方法transfer_money,实现转账

  • 谈一谈|电脑(Windows系统)隐藏神技

    问题描述 在使用电脑进行学习和工作时,如何让操作更灵活,使用更便捷,工作更高效呢?接下来介绍几种电脑隐藏神技,方便大家的日常操作。 解决方案 1.快速定位关键词打开一个网页的时候,想要快速定位到精确内容,只需要按下F3(Fn+F3),在弹出框中输入关键词,文章高亮部分即精确查找内容。2.网站图片、视频获取快速存图:想要保存网页中的某张图片时,一般操作是单击右键另存为,但这个操作有一点繁琐,而win10系统中有一个小技巧,只需要按住鼠标左键,拖动图片到页面右下角,就能将其快速保存在桌面。无限制批量下载:在网页中,很多时候都无法获得网页内部的视频音频和图片,这种情况只需按下键盘上的F12(Fn+F12),右侧会出现一栏代码,找到【network】,点击下方的【img】就能获得图片文件地址(点击【media】获得视频地址),选中需要的文件后,单击右键下载文件即可。3.多桌面工作虚拟桌面是一种窗口任务的虚拟分组方式,每个桌面就是一个分组。每创建一个虚拟桌面,就好像重新打开了一个Windows,能够在一个全新的桌面环境下工作或学习。使用快捷键Ctrl+Windows+D,快速新建一个桌面,这种情

  • JavaScript 的简洁之道

    译者:前端小智 原文:https://devinduct.com/blogpost/22/javascript-clean-code-best-practices为了保证可读性,本文采用的音译而非直意。简介如果你关注代码本身和代码的编写方式,而不是只关心它是否能工作,那么你写代码是有一定的水准。专业开发人员将为未来的自己和“其他人”编写代码,而不仅仅只编写当前能工作就行的代码。在此基础上,简洁代码可以定义为自解释的、易于人理解的、易于更改或扩展的代码。以下列表一些好编写方式,仅供参考,当然,如果你有更好的方式,欢迎留言。1.强类型检查用===代替==//如果处理不当,它会极大地影响程序逻辑。这就像,你想向左走,但由于某种原因,你向右走 0==false//true 0===false//false 2=="2"//true 2==="2"//false //例子 constvalue="500"; if(value===500){ console.log(value); //条件不成立,不会进入 } if(value===

  • XGBOOST从原理到实战:二分类 、多分类

    XGboost完整系统的原理+实战:课程直通车数据topKa=np.array([1,4,3,5,2]) K=4 #返回索引 print(a[np.argpartition(-a,K)][:3]) #返回排序后的结果 print(a[np.argsort(-a)][:3])复制1.XGBoostxgboost是大规模并行boostedtree的工具,它是目前最快最好的开源boostedtree工具包,比常见的工具包快10倍以上。在数据科学方面,有大量kaggle选手选用它进行数据挖掘比赛,其中包括两个以上kaggle比赛的夺冠方案。在工业界规模方面,xgboost的分布式版本有广泛的可移植性,支持在YARN,MPI,SungridEngine等各个平台上面运行,并且保留了单机并行版本的各种优化,使得它可以很好地解决于工业界规模的问题。 下载地址:直通车2.XGBoost的优点2.1正则化XGBoost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。从Bias-variancetradeoff角度来讲,正则项

  • 多款iPhone遭遇中国禁售令!福建法院判决高通胜诉苹果 !

    文章转载自量子位|公众号ID:QbitAI特殊的时间,苹果在中国遭遇大麻烦。但并非是苹果CFO在巴基斯坦意外被捕,而是与另一家美国公司高通的全球专利诉讼,在中国率先宣判了。福州市中级人民法院作出初步裁定:禁止苹果公司在中国市场进口和销售涉嫌专利侵犯的部分型号手机。按照判决禁令,包括iPhone6S、iPhone6SPlus、iPhone7、iPhone7Plus、iPhone8、iPhone8Plus和iPhoneX等在内的苹果在售机型,统统会受影响。虽然苹果马上官方回应称,中国消费者仍然可以继续购买相关iPhone,因为苹果将“通过法院寻求所有法律选项。”但受此影响,苹果盘中股价一度应声下跌2.22%,高通盘中股价上涨2.55%。而就在此次判决结果出炉时,另一桩全球瞩目的保释案审理,在加拿大展开。有评价说,这是一次“围魏救赵”的裁决。也有评价说,这是一次“以夷制夷”的策略。总之,判决意义,远超事件本身。高通全球首胜苹果或许你会好奇,为啥两家美国公司的专利诉讼,竟由中国法院作出判决裁定?事情先从去年年底说起。当时高通以苹果侵犯专利为由,在全球6个国家向苹果发起了50多场官司。而福州市中

  • Python写ARP局域网主机存活扫描与ARP欺骗工具

    專欄 ❈exploit,Python中文社区专栏作者,入坑Python一年。希望与作者交流或者对文章有任何疑问的可以与作者联系:QQ:1585173691Email:15735640998@163.com❈——起源最近一直在研究网络协议,为了加深理解就自己构造了数据包发送并用抓包工具进行分析,在研究arp协议时顺便写了一个简单的类似网络剪刀手的小脚本用于测试,下面开始我们的arp研究吧。简单协议分析网络协议大致分为应用层•传输层•网路层•链路层,以http为例,传输层封装tcp头,网络层封装ip头,链路层封装以太头(如下图所示),而arp报文就是包含在链路层以太帧的数据包里面,下面我们来讲讲以太帧格式。 以太帧以太帧工作在链路层,以太帧格式多达五种,但今天的tcp/ip应用都是用EthernetV2格式,下面我们分析EthernetV2格式(如图),各数据段的解释图上也标出来了,其中“类型”是指明上层协议,0x800代表网际协议,0x0806代表arp协议 下面我用wireshark抓一个arp回复包来分析一下是否能与上面数据格式对应上(如下面截图)此处wireshark把前导码与CR

  • GridView的RowCommand事件中获取每行控件的值

                   //获取当前行               GridViewRowgvr=(GridViewRow)((Control)e.CommandSource).Parent.Parent;                //获取文本框的值               TextBoxtbox_memo=(TextBox)gvr.Cells[1].FindControl("tb

  • Java8_00_资源帖

    一、官方资料 JavaPlatformStandardEdition8Documentation TheJava™Tutorials Java8API 二、精选资料 三、参考资料

  • React Native 快速入门之认识Props和State

    眼下ReactNative(以后简称RN)越来越火,我也要投入到学习当中。对于一个前端来说,还是有些难度。因为本人觉得这是一个App开发的领域,自然是不同。编写本文的时候,RN的版本为0.21.0。我们马上以代码进入今天的学习。 'usestrict'; importReact,{ AppRegistry, Component, StyleSheet, Text, View }from'react-native'; classHelloextendsComponent{ render(){ return( <View> <Text>{this.props.title}</Text> <Text>{this.props.text}</Text> </View> ); } } classHelloComponentextendsReact.Component{ constructor(props){ super(props); this.state={ appendText:'' }; } _setText(){t

  • swoole

    php# 我们用的PHP主要用于web开发,通过nginx、apache等服务端程序调用php-fpm处理服务端的业务逻辑,处理完后php撤消内存并后回结果,由此可见,一个http就要加载一次php的全部文件,这也是目前php-fpm的缺点之一,并且php-fpm不合适service端的开发。 下面是我随便在网上找的php-fpm运行流程,各位参考理解一下 http://www.test.cc | Nginx | 路由到http://www.test.cc/index.php | 加载nginx的fast-cgi模块 | fast-cgi监听127.0.0.1:9000地址 | www.test.com/index.php请求到达127.0.0.1:9000 | php-fpm监听127.0.0.1:9000 | php-fpm接收到请求,启用worker进程处理请求 | php-fpm处理完请求并撤消内存,返回给nginx | nginx将结果通过http返回给浏览器复制 总结一下我理解php-fpm的优缺点 优点: 部署简单 调试方便 基于传统php的项目非常多,易于参考

  • MySQL数据库学习目录

    MySQL数据库阶段学习目录 MySQL数据库初识 MySQL的库表详细操作 MySQL行(记录)的详细操作 MySQL之单表查询 MySQL之多表查询 Navicat工具、pymysql模块 MySQL之视图、触发器、事务、存储过程、函数 MySQL之索引原理与慢查询优化 MySQL之创建用户和授权 MySQL之mysqldump数据备份还原 MySQL之锁、事务、优化、OLAP、OLTP 数据库设计(第一范式,第二范式,第三范式

  • 【Python学习之四】递归与尾递归

      看完廖雪峰老师的教程,感觉尾递归函数是一个相对难点。于是复习一下,思考了一下,发表一些见解,记录一下。 1、递归函数   在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 例如,阶乘的实现:f(n)=n!=1x2x3x4......xn=f(n-1)xn。因此,f(n)用递归函数写出来是: deff(n): ifn==1: return1 returnf(n-1)*n复制   f(5)的计算过程如下: ===>f(5) ===>5*f(4) ===>5*(4*f(3)) ===>5*(4*(3*f(2))) ===>5*(4*(3*(2*f(1)))) ===>5*(4*(3*(2*1))) ===>5*(4*(3*2)) ===>5*(4*6) ===>5*24 ===>120复制   递归函数可以把复杂的循环,写成逻辑上容易理解的结构。但是,使用递归函数需要注意防止栈溢出。递归对系统内存的消耗是很大的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由

  • SQL语句整理

     

  • Golang 传递任意类型的切片

    肯定有这样的一种场景,写一个函数,该函数可以接收任意类型的切片,完成相应的功能。 就好比这种情况 intSlice:=[]int{1,2,3,4,5,6,7,8} strSlice:=[]string{"a","b","c","d"} boolSlice:=[]bool{true,true,false,true} 复制 还有很多类型的切片,但是我对这些切片的使用,只是for循环每一个元素,执行Print操作就可以了。 那就定义一个函数,函数的接收参数就是这个切片就行了,但是切片类型太多了,你要根据不同的切片类型,写不同从接收参数类型,但是函数体的代码都是一样,for循环,然后Print就可以。那么有没有一种类型,可以接收所有类型的参数呢? interface{}:空接口这个类型,他可以接收任意类型的数据 funcfaa(arginterface{}){ fmt.Println(arg) } funcmain(){ faa(intSlice) faa(strSlice) faa(boolSlice)//能够成功输出,不会报错 } 复制 但是将faa的函数体改下,执行for操作 fun

  • 悲观锁与乐观锁

    悲观锁与乐观锁都是数据库相关的锁乐观锁心理:这次操作应该不会有问题,我先完成计算,在插入前判断一下就好由用户实现,而非数据库1、操作数据库数据时不加锁(乐观锁其实不加锁。。)2、更新计算结束后,再去判断是否冲突 通常实现:1、操作前,获取数据表的版本号version2、完成自己的计算,afterafewmoments...3、插入前,判断数据表的version是否和存储的version相同(如果不同则表示在计算期间其他线程已更新了数据库),若相同,则插入,并且version+1----------------------- 悲观锁心理:这次操作极有可能引发冲突,使用每次操作得先获得锁由数据库实现,类似于synchronized

  • 健康

    饮食清淡、少盐、少油、少调料、少辣椒、注重饮食健康、运动

相关推荐

推荐阅读