扩展SAP资源功能梳理
Posted 数通畅联
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展SAP资源功能梳理相关的知识,希望对你有一定的参考价值。
ESB产品是企业信息系统的“龙骨”,近期升级扩展了SAP相关资源。SAP大量业务都有对应的bapi函数,如创建客户、创建订单、修改订单、删除订单、新建物料等,所以可以通过bapi导入数据。导入数据快且稳定,没有模拟屏幕操作,本次扩展功能可以自行建立bapi资源,在ESB设计器程序进行调用。
BAPI技术对ERP软件的开发商来说,是非常重大的进步。从MRPII到ERP,系统功能越来越多,一个软件公司无论多么强大,也无法独自开发包括企业全部专业的全部管理功能软件,在技术上必须有能力把第三方软件接到自己的核心软件上。
1总体概述
Business Application Programming Interface (BAPI,中文:业务应用程序编程接口) 用于 mySAP 实现业务相关功能。它是一个远程功能模块,由 SAP 提供。BAPI允许通过正式,稳定且无对话框的界面访问SAP功能。客户和补充软件合作伙伴开发的外部应用程序以及其他SAP应用程序可以使用这些接口。这些对象类型被定义为SAP Business Object Types的API方法,在Business Framework中用于在组件之间实现基于对象的通信。
通过业务对象及其BAPI,可以在公司的中央信息处理中使用面向对象。例如,可以重复使用现有功能和数据,可以实现无故障的技术互操作性,并且可以实现非SAP组件。应用程序可以使用BAPI直接访问R/3系统的应用程序层,并且作为客户端,应用程序可以使用R/3系统的业务逻辑。BAPI为客户端提供了应用程序对象的面向对象视图,而无需了解实现细节,始终通过定义用于映射和实施系统范围的业务流程的方案来开发BAPI。
1.1SAP说明
SAP即“System Applications and Products in Data Processing”是“系统应用和产品”的缩写,是SAP公司的产品,企业管理解决方案软件的名称。SAP是其ERP(Enterprise-wide Resource Planning)软件名称,它是ERP解决方案的先驱,也是全世界排名第一的ERP软件,可以为各种行业、不同规模的企业提供全面的解决方案。
SAP的核心业务是销售其研发的商业软件解决方案及其服务的用户许可证。SAP解决方案包括标准商业软件及技术以及行业特定应用,主要用途是帮助企业建立或改进其业务流程,使之更为高效灵活,并不断为该企业产生新的价值。
SAP从企业后台到公司决策层、从工厂仓库到商铺店面、从电脑桌面到移动终端—SAP助力用户和企业高效协作,获取商业洞见,并从竞争中脱颖而出。SAP的主要功能有商业智能、客户关系管理、企业信息管理、企业绩效管理、企业资源规划、管理和合规、人力资本管理、产品生命周期管理、服务和资产管理、供应链管理、可持续性、制造和移动性。
1.2需求分析
考虑到在实际项目集成对接过程中涉及到与SAP-ERP进行对接,SAP中有本身获取的约定数据相关协议为BAPI,通过JCO实现与BAPI间的通信,获取SAP下业务单据的数据,实现SAP对外界的互联互通。为实现ESB与SAP平台进行连接,需要扩展SAP资源配置功能。
1.3实现思路
接下来,对SAP开发思路进行介绍。
1.明确SAP配置连接参数:
1)SAP服务器IP地址;
2)系统编号;
3)客户端编号;
4)用户名;
5)密码;
6)语言;
7)最大空闲连接数;
8)最大活动连接数。
2.创建数据库表res_bapi。
3.在sqlmap中新增BapiRescource.xml,新增增删改查SQL,确认BAPI资源相关字段都有,且GenResourceManager里Bapi对应的SQL里select字段as后的字段要跟截图保持一致,另外密码要DES加密,使用JCO_USER值作为密钥。
4.在bizmoduler/sysres中新增接口BapiRescourceManage及实现类BapiRescourceManageImpl。
5.在controller/sysres中新增列表页面控制器BapiRescourceManageListHandler,详情页面控制器BapiRescourceManageEditHandler。
6.在jsp/sysres中新增列表页面BapiRescourceManageList,详情页面BapiRescourceManageEdit。
7.在HandlerContext.xml、ServiceContext.xml、SqlMapConfig.xml中添加相应配置。
1.4功能说明
对于SAP、BAPI等这几个概念的理解上容易有障碍,或者概念模糊的情况。本篇文档将以较为浅显易懂的方式,简单地介绍一些相关概念与使用方法,便于使用ESB产品的人进行理解。
BAPI业务应用程序接口(Business Application Programming Interface,简称BAPI)是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/3专有产品。为了完成一些特殊的商业任务,比如上传交易数据等,系统中内置了BAPI。
BAPI业务应用程序接口是一个标准化的开放接口。有了BAPI,用户可以通过浏览器、Exchange电子邮件来使用ERP系统,用户可以将这些软件模块与非ERP软件混合匹配使用。
用户可以按需求单独更新某个模块,而没有必要为了增强某个功能对系统进行全面升级。用户用逐个模块更新、增强系统的功能,而不必更换整个系统。
业务对象类型是业务对象的定义和描述,面向对象架构的实现基础,也就是SAP系统中的‘类’,它封装了业务功能和数据,一个业务对象即为一个业务实体,其中不仅包含业务对象本身的数据,还包含其功能的实现,根绝业务规则来组织数据和业务过程。
2功能设计
接下来我会进一步说明在扩展SAP资源功能过程中的具体设计细节。这一步十分重要,一个好的设计会让开发变得事半功倍。
2.1前期准备
在开始开发前,需要对所开发的内容进行思路的疏通,对于开发出来的功能所需要的实现过程在脑子里有一个大致的思路。有了大致思路后进行设计,进一步细化功能,思考到每一个可能出现的情况。由于此次功能是对原有页面基础上进行的功能添加,所以也要对于之前存在的页面代码进行熟悉,熟悉页面布局以及代码规范,要确保在添加新的代码后,之前的代码功能不被破坏。
2.2数据库设计
在esb数据库中,创建SAP资源表“res_bapi”,具体创建的sql语句如下:
此时,应该预置至少一条数据,作为样例模板,方便使用,具体添加的sql语句如下。
2.3功能介绍
接下来分别对Bapi资源功能的设计样式和特点进行简单说明。
下图为设计的资源列表页面样式,可以新增或查看bapi资源,对已有bapi资源进行编辑,还可复制资源进行编辑。
下图为具体呈现的详情页面样式,相关属性预置默认值、添加非空校验。
2.4技术要点
此模块的“重新加载”功能,需要对底层代码进行调整,添加缓存:
在底层esb_runtime.jar包中,需要调整的底层文档:
1.包含为 package com.agileai.esb.core,文件名为SoakerContants的class文件,新增Bapi资源。
2.包名为 package com.agileai.esb.component.manager,文件名为GenResourceManager的class文件,在initRecord和loadConfigs方法里添加Bapi资源。
initRecord()方法,具体添加资源内容如下:
loadConfigs()方法,具体添加资源内容如下:
3开发过程
接下来就开始进行实际开发了,一个好的设计会让开发更便捷,下面将介绍本次扩展SAP资源的实际开发过程。
3.1开发步骤
对于开发时的步骤进行规划并整理,细化开发思路。
1.动手前先标记出注释,虽然代码里面注释越少越好,但是前期,注释可以代替我们的逻辑思维;
2.因为之前已经做了具体的功能设计,所以整体构思已经基本清楚了,只需要根据自己的设计进行逐步功能开发即可;
3.在开发过程中,优化代码,需要提取的一定要提取,需要总结的一定要总结,为了未来开发累计经验。
3.2功能测试
在开发功能完毕后,对开发的功能进行测试。虽然开发过程中一直都在开发测试修改问题,但开发者往往具有个人操作习惯,无法真正测试到深层问题。具体测试的步骤:
1.查看系统管理,共享资源,SAP资源标签:
2.列表页面、详情页面字段内容是否显示,基础功能验证,重新加载功能测试。
3.进行环境测试,多种操作模式进行不断尝试。
3.3功能完善
针对测试出的问题,需要进行功能完善。在测试中,会有操作步骤的逻辑跟设计逻辑不一样的情况,这时就需要完善逻辑思路,对于所有可能出现的逻辑进行头脑风暴,为产品功能进行不断完善。而代码的简洁来自于逻辑的清晰,而并非代码量少就是简洁。
4功能展示
接下来对于在ESB管理控制台和ESB设计器中添加SAP资源相关功能开发成果进行展示说明。
4.1共享资源
接下来,对新增的共享资源中SAP资源功能模块进行展示说明。
点击“新增”按钮,进入编辑页面如下。
当需要编辑修改资源时,可以双击资源或者点击“SAP资源”页面的“编辑”按钮,就会跳转到资源的编辑详情页,对资源进行修改。
每次对于一个资源新增或者修改时,都需要对资源进行重新加载。
4.2资源同步
在系统管理的资源同步中扩展了“SAP资源”,可以对与共享资源中的SAP资源进行导出导入。
4.3bapi调用
在ESB设计器中,设置了Bapi调用的组件,可以对Bapi进行配置。“Bapi”调用组件在协议适配器中。
双击组件,可对Bapi调用进行配置。
Bapi连接选择的是我们在共享资源中的Bapi资源信息。
操作类型选择“读对象”、“写对象”、“读列表”、“写列表”都会有不同的入参和出参配置,其中“xx”是为命名的地方。
如果我们之前在全局变量配置中设置了两个变量如下:
那么我们可以映射参数这里选择对应类型的变量作为映射参数,如下图。
同理,DataSet也这样选择对应的变量。
点击“Next”,刷新入参概要就可以刷出刚刚选中的参数,然后就可以对字段进行映射配置,从而完成Bapi的配置。
5心得体会
接下来我会从技能收获、个人总结、心得总结三个方面介绍本次学习以及部署K8S集群的感受。
5.1使用心得
对于一个全新没有用过的bapi,它的用法,一是要找准需要输入的参数并且正确输入,二是要能及时解决bapi报错。找参数的话,每个bapi里一般都有getDetail的方法,这个方法带出来的参数基本跟使用bapi时的参数一样,也可以参考bapi最终在标准表里应该生成的正确结果,比对对应的字段值,看看有没有对应的参数需要输入,还可以参考bapi文档里的例子,以及网上的例子,或者参考系统里bapi的调用,查看别人是怎么用这个bapi的,这样基本参数都可以找到,剩下的一些比较特殊的参数可能要多研究尝试下了。
5.2个人总结
本次SAP的面向对象架构通过业务组件、业务对象类型、BAPI等元素共同完成。每个SAP业务组件都提供相对独立的功能,其中包含业务对象类型、实例。开发产品的时候,敲代码都是把所有的代码放在了主方法里,但随着代码越来越多,主方法里的代码越来越多,后续开发起来就不太方便了;然后进行改进,将实现了一个功能的代码包装成其他方法,主方法减少了代码量,需要用的时候直接调用其他方法。经过本次开发锻炼了我的代码逻辑,编程技巧得到了提高。
5.3心得总结
编码是软件开发过程中最基本、最底层的技能,然而也是最重要的技能。任何一个领域的专家都需要花费大量时间来进行基本技能的锻炼,程序员也是一样,对我们来说,语言的各种特性必须要了然于胸,对软件的管理也需要从代码做起。
不要为了实现自己想实现的功能而去编写程序,作为程序员在编写程序时要综合考虑,比如功能上的用户需求、后续维护、程序扩展性等。软件开发的过程是一个缓和矛盾的过程,在软件开发过程中要缓和各种矛盾,在这些矛盾中获取平衡。
以上是关于扩展SAP资源功能梳理的主要内容,如果未能解决你的问题,请参考以下文章