1、U8EAI培训案例培训案例U8U8平台开发部平台开发部李静李静2009年年1月月4 4日日 应用篇应用篇 案例背景案例背景 需求分析需求分析 解决方案解决方案 开发步骤开发步骤 提高篇提高篇 深入分析深入分析 解决方案解决方案 开发步骤开发步骤一、案例背景一、案例背景 A公司是一家专业办公设备经销商。在企业创建之初,公司是一家专业办公设备经销商。在企业创建之初,由于规模和业务量都不大,在管理上并没有出现多大问题。由于规模和业务量都不大,在管理上并没有出现多大问题。随着公司的发展,在财务上采用传统手工处理的方式逐渐随着公司的发展,在财务上采用传统手工处理的方式逐渐暴露出越来越多的问题。于是公司引
2、进了一套暴露出越来越多的问题。于是公司引进了一套U8财务系统财务系统来有效管理企业的应收账款和出入现金流。来有效管理企业的应收账款和出入现金流。为了更好的拓展和辐射外地市场,提高市场占有率和为了更好的拓展和辐射外地市场,提高市场占有率和客户服务水平,公司逐步在全国许多城市建立了自己的经客户服务水平,公司逐步在全国许多城市建立了自己的经销网点和客服中心,为了提高运营效率,降低成本,加强销网点和客服中心,为了提高运营效率,降低成本,加强管控,公司决定为整个分销网络部署一套综合业务系统,管控,公司决定为整个分销网络部署一套综合业务系统,通过资源共享与实时调度提高整个销售网络的灵活度和有通过资源共享与
3、实时调度提高整个销售网络的灵活度和有效应对市场变化的能力,并为客户提供一流的服务水平。效应对市场变化的能力,并为客户提供一流的服务水平。应用篇应用篇-案例背景案例背景 但问题随之产生,由于但问题随之产生,由于A公司的外地营销网点规模普公司的外地营销网点规模普遍很小,不具备独立核算能力,而且公司即将部署的综合遍很小,不具备独立核算能力,而且公司即将部署的综合业务系统并不具备专业的财务管理功能,在财务上仍然必业务系统并不具备专业的财务管理功能,在财务上仍然必须由公司集中管控。而且,多年来,公司在须由公司集中管控。而且,多年来,公司在U8财务软件的财务软件的帮助下已逐步形成了一套严谨高效的财务管理流
4、程和制度,帮助下已逐步形成了一套严谨高效的财务管理流程和制度,如果摈弃如果摈弃U8,去开发和部署新的能连接业务系统的财务软,去开发和部署新的能连接业务系统的财务软件,不仅会浪费公司现有的件,不仅会浪费公司现有的IT资产,增加资产,增加IT投资成本,更投资成本,更重要的是会浪费公司积累起来的适合自己实情的宝贵管理重要的是会浪费公司积累起来的适合自己实情的宝贵管理经验。经验。A公司老总认为,如果能将综合业务系统与现有的公司老总认为,如果能将综合业务系统与现有的U8财务软件实现整合,必将带来双赢的利益:一方面降低了财务软件实现整合,必将带来双赢的利益:一方面降低了IT投资成本,节约了时间;另一方面促
5、进了公司财务管理投资成本,节约了时间;另一方面促进了公司财务管理的持续完善和创新。的持续完善和创新。应用篇应用篇-案例背景案例背景二、需求分析二、需求分析 A公司的综合业务系统能有效管理经销网点的销售和公司的综合业务系统能有效管理经销网点的销售和售后业务帐以及仓库台帐:能开具发票,进行收款结算;售后业务帐以及仓库台帐:能开具发票,进行收款结算;能管理发货和收货,进行商品盘点和结存;能统计和分析能管理发货和收货,进行商品盘点和结存;能统计和分析销售状况;能处理退货、维修等售后业务。销售状况;能处理退货、维修等售后业务。这些业务活动为公司带来的盈利或亏损,必须要通过这些业务活动为公司带来的盈利或亏
6、损,必须要通过公司总部的会计系统(公司总部的会计系统(U8财务系统)进行记账、核算、以财务系统)进行记账、核算、以及财务报表分析,才能正确反映公司的经营状况和业绩。及财务报表分析,才能正确反映公司的经营状况和业绩。这就是说,综合业务系统和这就是说,综合业务系统和U8财务系统的连接必须要财务系统的连接必须要能实现自动记账功能。具体来说就是要将综合业务系统的能实现自动记账功能。具体来说就是要将综合业务系统的结算凭证结算凭证销售发票转换成销售发票转换成U8的记账凭证,并传递给的记账凭证,并传递给U8系统进行会计记账。系统进行会计记账。应用篇应用篇-需求分析需求分析三、解决方案三、解决方案 要实现自动
7、记账功能,首先需要将业务系统的结算凭要实现自动记账功能,首先需要将业务系统的结算凭证证销售发票转换成销售发票转换成U8的记账凭证;随后还要能将转换后的记账凭证;随后还要能将转换后的记账凭证传递到的记账凭证传递到U8。解决方案是使用解决方案是使用U8EAI数据交换接口。数据交换接口。U8EAI数据交数据交换接口提供了换接口提供了U8与外部系统进行交流的与外部系统进行交流的“窗口窗口”,U8EAI定义了一套标准的数据交换格式,外部系统只要遵循此格定义了一套标准的数据交换格式,外部系统只要遵循此格式,在数据一致的前提下,便能与式,在数据一致的前提下,便能与U8进行交互。进行交互。数据一致的意思是要保
8、证各种数据依赖条件的一致,数据一致的意思是要保证各种数据依赖条件的一致,在本项目中就是指凭证中所记录的经济活动核算对象和要在本项目中就是指凭证中所记录的经济活动核算对象和要素要一致,比如:凭证中所反映的客户、部门等核算对象素要一致,比如:凭证中所反映的客户、部门等核算对象信息在业务系统和信息在业务系统和U8中要保持一致,如果不一致,需要进中要保持一致,如果不一致,需要进行数据同步或映射转换。行数据同步或映射转换。遵循遵循U8的凭证格式是指需要采用某种方式将业务系统的凭证格式是指需要采用某种方式将业务系统的销售发票转换成的销售发票转换成U8的凭证格式,这一般需要进行二次开的凭证格式,这一般需要进
9、行二次开发。发。应用篇应用篇-解决方案解决方案四、开发步骤四、开发步骤1、将业务系统结算凭证转换为、将业务系统结算凭证转换为U8记账凭证。记账凭证。2、将凭证传递给、将凭证传递给U8并记账。并记账。应用篇应用篇-开发步骤开发步骤1、将业务系统结算凭证转换为、将业务系统结算凭证转换为U8记账凭证记账凭证 U8EAI的数据交换格式由数据模板描述,的数据交换格式由数据模板描述,EAI的模的模板统一放在板统一放在U8SOFTEAIXMLTemplate目录下,以文目录下,以文件的形式存储。件的形式存储。其中凭证的模板为其中凭证的模板为Voucher.xml,在此文件中描述了,在此文件中描述了凭证所包含
10、的表头字段以及表体的分录字段、辅助核算凭证所包含的表头字段以及表体的分录字段、辅助核算字段等,对字段的数据类型、大小、取值规则也做了规字段等,对字段的数据类型、大小、取值规则也做了规定。定。要将外部系统的销售发票格式转换成要将外部系统的销售发票格式转换成U8凭证的格式,凭证的格式,一般采用二次开发编程的方式进行,也可以采用比较通一般采用二次开发编程的方式进行,也可以采用比较通用的用的XSLT进行转换。进行转换。由于外部系统的格式是未知的,在本实践项目中假由于外部系统的格式是未知的,在本实践项目中假定已经做了转换,我们只需要事先准备好转换完成的数定已经做了转换,我们只需要事先准备好转换完成的数据
11、即可,凭证数据的准备可以直接依据模板来手工构造据即可,凭证数据的准备可以直接依据模板来手工构造凭证的凭证的XML文件,也可以采用一下简便方法:文件,也可以采用一下简便方法:应用篇应用篇-开发步骤开发步骤 先在先在U8中录一个收款凭证作为范例中录一个收款凭证作为范例 应用篇应用篇-开发步骤开发步骤随后使用随后使用EAI将其导出,注意要用刚才建的凭证号设置将其导出,注意要用刚才建的凭证号设置导出过滤条件。导出过滤条件。登录登录EAI:“开始开始”-“程序程序”-“用友用友ERP-U8”-“企业应用集成(企业应用集成(EAI)”-“企业应用集成企业应用集成”;左树左树“系统菜单系统菜单”-“设置设置
12、”-“系统注册系统注册”,为,为 U8的某个帐套注册一个数据交换编码,表明与外部系统的的某个帐套注册一个数据交换编码,表明与外部系统的对应关系;对应关系;应用篇应用篇-开发步骤开发步骤应用篇应用篇-开发步骤开发步骤左树“系统菜单”-“数据交换”-“数据交换”,先设置凭证过滤条件,然后导出为一个XML文件:应用篇应用篇-开发步骤开发步骤设置凭证过滤条件:点“保存”后“退出”回到上一个界面,点“执行”即可。假设导出的凭证文件为假设导出的凭证文件为“简单凭证简单凭证.xml”,用编辑工具,用编辑工具(比如:记事本)打开此文件,将根节点修改一下:(比如:记事本)打开此文件,将根节点修改一下:根节点根节
13、点ufinterface的两个属性含义如下:的两个属性含义如下:proc=add:表示操作类型,表示操作类型,add表示新增。表示新增。renewproofno=y:表示凭证导入表示凭证导入U8后是否重新编码,后是否重新编码,应该填应该填y。修改完后保存。这样,我们的凭证文件就制作好了(示例修改完后保存。这样,我们的凭证文件就制作好了(示例凭证详见凭证详见SAMPLES简单凭证简单凭证.xml)。随后就可以使用)。随后就可以使用EAI数据交换接口将其导入数据交换接口将其导入U8并记账。并记账。应用篇应用篇-开发步骤开发步骤2、将凭证传递给、将凭证传递给U8并记账并记账 将凭证传递给将凭证传递给
14、U8并记账其实就是调用并记账其实就是调用EAI数据交换接口将凭数据交换接口将凭证导入证导入U8。首先需要配置首先需要配置EAI接口:接口:“开始开始”-“程序程序”-“用友用友ERP-U8”-“企业应用集成(企业应用集成(EAI)”-“U8EAI接口设置接口设置”;应用篇应用篇-开发步骤开发步骤随后就可以调用随后就可以调用EAI接口将凭证导入接口将凭证导入U8,以,以VB代码为例:代码为例:Dim xmlhttp As Object Set xmlhttp=CreateObject(“MSXML2.XMLHTTP”)创建XMLHTTP对象 Call xmlhttp.open(“POST”,“h
15、ttp:/u8appsrv/u8eai/import.asp”,False)使用XMLHTTP对象打开网络连接,URL中的u8appsrv填U8应用服务器 xmlhttp.send requestXml 发送Request消息 Dim responseXml As String responseXml=xmlhttp.responseText 获取返回Response消息.处理返回结果凭证接口的返回格式如下:凭证接口的返回格式如下:succeed=“0”表示成功保存;u8voucher_id=“19”返回凭证号。应用篇应用篇-开发步骤开发步骤 应用篇的详细示例见应用篇的详细示例见SAMPLES
16、包,其中包,其中“简单凭证简单凭证.xml”为应用篇的凭证示例,为应用篇的凭证示例,Code目录为代码示例,目录为代码示例,“工程工程1.exe”为代码编译后的测试程序。为代码编译后的测试程序。应用篇应用篇-开发步骤开发步骤一、深入分析一、深入分析 对于客户往来的应收款凭证,一般包含有客户、部门对于客户往来的应收款凭证,一般包含有客户、部门等辅助核算项。等辅助核算项。而客户、部门、人员等这些基础资料在企业的业务系而客户、部门、人员等这些基础资料在企业的业务系统和统和U8财务系统中很有可能不一致,不一致的情况一般有财务系统中很有可能不一致,不一致的情况一般有以下几种:以下几种:1、A公司的综合业
17、务系统由于直接面向市场客户,故公司的综合业务系统由于直接面向市场客户,故其包含的客户资料比其包含的客户资料比U8财务系统更多。财务系统更多。2、由于两个系统的基础资料编码规则可能不一致,、由于两个系统的基础资料编码规则可能不一致,对于同一个客户资料,可能在业务系统中的编码是对于同一个客户资料,可能在业务系统中的编码是C-01,在在U8系统中可能是系统中可能是001。以上两种情况的存在,都会导致相关的客户往来凭证以上两种情况的存在,都会导致相关的客户往来凭证无法导入无法导入U8记账。记账。提高篇提高篇-深入分析深入分析二、解决方案二、解决方案 解决这个问题的思路是:在上传凭证之前要保证业务解决这
18、个问题的思路是:在上传凭证之前要保证业务系统和系统和U8的客户档案等基础资料一致。的客户档案等基础资料一致。如果是第一种情况,即客户档案的编码可以相同,但如果是第一种情况,即客户档案的编码可以相同,但业务系统中的客户多于业务系统中的客户多于U8系统中的客户。如果数量不大且系统中的客户。如果数量不大且不会经常变化,则可以采用手工录入的方式进行补平;如不会经常变化,则可以采用手工录入的方式进行补平;如果数量很大且经常变化,则最好采用自动的方式:业务系果数量很大且经常变化,则最好采用自动的方式:业务系统中如果增加了客户,则将此客户自动导入到统中如果增加了客户,则将此客户自动导入到U8系统中,系统中,
19、导入的方式是调用导入的方式是调用U8EAI接口进行客户档案导入,具体实接口进行客户档案导入,具体实现与凭证自动导入类似,需要遵循现与凭证自动导入类似,需要遵循U8EAI客户档案数据交客户档案数据交换格式。换格式。对于第二种情况,即双方系统的编码规则不一致,对于第二种情况,即双方系统的编码规则不一致,如如果两边档案完全相同,只是编码不一致,则可以采用编码果两边档案完全相同,只是编码不一致,则可以采用编码映射的方式进行对照转换;如果编码不一致的情况下客户映射的方式进行对照转换;如果编码不一致的情况下客户档案数量也不相同,业务系统多于档案数量也不相同,业务系统多于U8系统,则需要按第一系统,则需要按
20、第一种情况的做法将客户档案同步到种情况的做法将客户档案同步到U8,同步的同时还需要进,同步的同时还需要进提高篇提高篇-解决方案解决方案行编码规则转换,这种情况较为复杂,需要找出编码转换行编码规则转换,这种情况较为复杂,需要找出编码转换规律。规律。在本实践项目中只考虑以下两种情况:在本实践项目中只考虑以下两种情况:1、编码相同情况下,需要将业务系统中的新增客户档、编码相同情况下,需要将业务系统中的新增客户档案导入案导入U8。2、客户档案完全一样,只是编码不相同,需要进行编、客户档案完全一样,只是编码不相同,需要进行编码映射。码映射。提高篇提高篇-解决方案解决方案三、开发步骤三、开发步骤 第一种情
21、况的开发步骤:第一种情况的开发步骤:1、将业务系统的客户档案转换成、将业务系统的客户档案转换成U8客户档案。客户档案。2、将转换后的客户档案使用、将转换后的客户档案使用U8EAI接口导入接口导入U8。3、将业务系统结算凭证转换为、将业务系统结算凭证转换为U8记账凭证。记账凭证。4、调用、调用U8EAI接口将凭证传递给接口将凭证传递给U8并记账。并记账。提高篇提高篇-开发步骤开发步骤1、将业务系统的客户档案转换成、将业务系统的客户档案转换成U8客户档案客户档案U8EAI客户档案的模板文件为:客户档案的模板文件为:U8SOFTEAIXMLTemplateCustomer.xml,依据此模板文件将外
22、部系统的客户档案格式转换成依据此模板文件将外部系统的客户档案格式转换成U8客客户格式,可以采用二次开发编程的方式进行,也可以采户格式,可以采用二次开发编程的方式进行,也可以采用比较通用的用比较通用的XSLT进行转换。进行转换。在本实践项目中假定已经做好了客户档案转换,我在本实践项目中假定已经做好了客户档案转换,我们只需要事先准备好转换后的客户档案数据即可,准备们只需要事先准备好转换后的客户档案数据即可,准备的方法跟应用篇中准备凭证相同,可以在的方法跟应用篇中准备凭证相同,可以在U8中建一个客中建一个客户档案并使用户档案并使用EAI导出。假定文件名为导出。假定文件名为“客户档客户档案案.xml”
23、。打开此文件,修改根节点的。打开此文件,修改根节点的proc属性值属性值为为”add”:ufinterface sender=“001”receiver=“u8”roottag=“customer”proc=“add“(示例详见(示例详见SAMPLES客户档案客户档案.xml)。)。提高篇提高篇-开发步骤开发步骤2、将转换后的客户档案使用、将转换后的客户档案使用U8EAI接口导入接口导入U8 代码示例同凭证导入,详见代码示例同凭证导入,详见SAMPLESCode。3、将业务系统结算凭证转换为、将业务系统结算凭证转换为U8记账凭证记账凭证 主要过程和应用篇相同,但凭证内容应该是带客户辅助核算主要
24、过程和应用篇相同,但凭证内容应该是带客户辅助核算的应收款凭证,其中客户为前两个步骤导入的应收款凭证,其中客户为前两个步骤导入U8的新客户:的新客户:先通过应收款系统录一个收款单先通过应收款系统录一个收款单提高篇提高篇-开发步骤开发步骤 随后制单生成凭证随后制单生成凭证 提高篇提高篇-开发步骤开发步骤接着使用接着使用EAI导出,详见应用篇。导出,详见应用篇。这里导出的凭证分录中就包含客户辅助核算项:这里导出的凭证分录中就包含客户辅助核算项:1 C007 另外要注意凭证另外要注意凭证Xml数据的数据的ufinterface节点的控制属性的设节点的控制属性的设置(同应用篇):置(同应用篇):根节点根
25、节点ufinterface的两个属性含义如下:的两个属性含义如下:proc=add:表示操作类型,表示操作类型,add表示新增。表示新增。renewproofno=y:表示凭证导入表示凭证导入U8后是否重新编码,后是否重新编码,应该填应该填y。提高篇提高篇-开发步骤开发步骤带辅助核算项的凭证数据准备好后,就可以调用带辅助核算项的凭证数据准备好后,就可以调用EAI接口接口导入了。导入了。4、调用、调用U8EAI接口将凭证传递给接口将凭证传递给U8并记账并记账 详见应用篇。详见应用篇。提高篇提高篇-开发步骤开发步骤 第二种情况的开发步骤:第二种情况的开发步骤:1、在、在U8EAI中配置客户档案编码
26、映射。中配置客户档案编码映射。2、将业务系统结算凭证转换为、将业务系统结算凭证转换为U8记账凭证。记账凭证。3、调用、调用U8EAI接口将凭证传递给接口将凭证传递给U8并记账,在此过程并记账,在此过程中自动进行客户档案编码转换。中自动进行客户档案编码转换。提高篇提高篇-开发步骤开发步骤1、在、在U8EAI中配置客户档案编码映射中配置客户档案编码映射登录登录EAI:“开始开始”-“程序程序”-“用友用友ERP-U8”-“企业企业应用集成(应用集成(EAI)”-“企业应用集成企业应用集成”;左树左树“系统菜单系统菜单”-“设置设置”-“系统注册系统注册”,为,为 U8的某的某个帐套注册一个数据交换
27、编码,表明与外部系统的对应关系;个帐套注册一个数据交换编码,表明与外部系统的对应关系;左树左树“系统菜单系统菜单”-“数据交换数据交换”-“数据映射数据映射”,为,为U8客客户档案与业务系统客户档案设置编码映射关系:户档案与业务系统客户档案设置编码映射关系:提高篇提高篇-开发步骤开发步骤2、将业务系统结算凭证转换为、将业务系统结算凭证转换为U8记账凭证记账凭证同第一种情况的第同第一种情况的第3步,主要目的是为了制作导入步,主要目的是为了制作导入U8的凭证数据。的凭证数据。另外要注意凭证另外要注意凭证Xml数据的数据的ufinterface节点的控制属性设置:节点的控制属性设置:根节点根节点uf
28、interface的三个属性含义如下:的三个属性含义如下:proc=add:表示操作类型,表示操作类型,add表示新增。表示新增。renewproofno=y:表示凭证导入表示凭证导入U8后是否重新编码,应该填后是否重新编码,应该填y。codeexchanged=y:表示辅助核算项进行编码转换,应该填表示辅助核算项进行编码转换,应该填y。凭证数据准备好后,就可以调用凭证数据准备好后,就可以调用EAI接口导入了。接口导入了。3、调用、调用U8EAI接口将凭证传递给接口将凭证传递给U8并记账,在此过程中自动进行并记账,在此过程中自动进行客户档案编码转换。调用方法详见应用篇。客户档案编码转换。调用方法详见应用篇。提高篇提高篇-开发步骤开发步骤小结小结 通过一个完整的案例使得我们对企业应用集成有了通过一个完整的案例使得我们对企业应用集成有了更深的理解和认识,更深的理解和认识,并初步了解了并初步了解了U8与外部业务系统与外部业务系统进行财务整合的基本思路和做法,进行财务整合的基本思路和做法,并通过由浅入深的并通过由浅入深的亲手实践和体验初步了解和掌握了使用亲手实践和体验初步了解和掌握了使用U8EAI数据交换数据交换接口进行企业应用集成开发的基本流程。接口进行企业应用集成开发的基本流程。TEL:010-62435316MAIL:Thanks!联系方式联系方式演讲完毕,谢谢观看!