首页 » Web前端 » php编译安装sapnwrfc技巧_还用SQL做SAP二开RFC调用NetWeaver让HANA数据库操作更靠得住

php编译安装sapnwrfc技巧_还用SQL做SAP二开RFC调用NetWeaver让HANA数据库操作更靠得住

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

(通过ODBC操作HANA)

首先,我们须要在开拓环境、测试环境和生产环境的做事器上,配置SAP供应的ODBC数据源。
在安装有SAP Client(推举x64)之后,打开系统的odbc数据源管理程序(把稳区分64为和32位,须要和SAP Client保持同等)。
在“系统DSN”选项卡中点击“添加”,选择HDBODBC,之后按照界面提示输入数据源的名称,如“HANA-测试库”、做事器IP地址、用户名和密码就可以了。

php编译安装sapnwrfc技巧_还用SQL做SAP二开RFC调用NetWeaver让HANA数据库操作更靠得住

配置完成后,我们就可以像操作其他数据库一样,对 SAP HANA的数据进行读写了。
回到活字格里面,我们利用“连接到外联表”功能,引入HANA中须要操作的所有数据表。
之后就可以用拖拽的办法完成数据绑定,或者在做事端拼接和实行SQL语句了。

php编译安装sapnwrfc技巧_还用SQL做SAP二开RFC调用NetWeaver让HANA数据库操作更靠得住
(图片来自网络侵删)

(在活字格低代码平台中引入ODBC数据源)

如果仅仅是读取元数据或者一些大略的单据,这种方案确实是一个大略的办法。
但是,SAP的数据表构造繁芜,且缺少有效的数据库脚本跟踪能力,我们很难确定一个单据创建过程须要操作哪几张表的哪些字段。
以是,在涉及到轻微繁芜一点的运用处景时,通过ODBC直接操作原始数据的做法的风险较高。

(纯代码,通过ODBC操作HANA的数据表)

基于多年的技能支持履历,我们常日不会推举客户采取这个方案。

方案2:调用NetWeaver API,操作业务工具

SAP显然也清楚开拓者直连HANA,操作原始数据带来的可靠性风险。
以是,SAP推出了NetWeaver集成平台,给开拓者供应了一个原厂级二开办理方案,“只管即便”确保写入的数据不会对SAP系统运行造成威胁。
然而,这个平台的开拓本钱依然不如人意,以至于大多数开拓者在二开项目之初就放弃了这个方案。
不过,NetWeaver中对数据表中原始数据的操作封装成对业务工具的操作,并加入了一些必要的校验逻辑,这一点对付二开来说还是非常故意义的。
更主要的是,这些封装的接口是开放的,即便我们采取了其他的二开方案,依然可以通过RFC协议,调用NetWeaver供应的HANA操作能力,从而避免直接读写原始数据带来的风险。

引入NetWeaver后,二开模块可以不再直接操作HANA数据库,而是通过位于二创办事器上的RFC桥(如果对可掩护性哀求不高,也可直接集成到二开模块中)和位于SAP集群中的NetWeaver来完成。
二开模块通过HTTP等协议调用RFC桥,RFC桥则通过RFC协议转调NetWeaver,NetWeaver则卖力在HANA上直接对应的SQL语句。

之以是我们将RFC调用部分抽象成一个专门的RFC桥模块,紧张是考虑到这部分采取了一个第三方组件库(SAP原厂的.NET SDK口碑不佳),将其与二开模块进行隔离,可有效降落掩护风险。
由于客户采取的是低代码的开拓办法,这个RFC桥的实现办法为基于活字格做事端编程接口开拓的自定义WebAPI。
对付纯代码开拓者来说,RFC桥常日是一个ASP.NET MVC或Java SpringBoot的Web做事。
在实现逻辑和架构事理上,低代码与纯代码大同小异,都须要通过写代码的办法完成。

(通过RFC + NetWeaver操作HANA)

步骤一:利用C#开拓调用NetWeaver的RFC桥

在这一步中,我们须要利用到Visual Studio(截屏是VS2021)、活字格做事端编程接口(截屏是活字格V7.0 Update1)、SAP NetWeaver RFC SDK(截屏是7.5)和开源项目SapNwRfc(https://github.com/huysentruitw/SapNwRfc)。
个中SAP的SDK须要客户利用SAP账号,从SAP官网下载。

首先,我们在VS2021中创建.NET 4.7.2的类库工程,引用RFC SDK中lib文件夹的sapnwrfc.dll;然后通过nuget查找并安装SapNwRfc包和Microsoft.AspNetCore.Http.Abstractions包(活字格做事端编程接口须要依赖这个包);末了引用活字格做事器程序安装目录中的GrapeCity.Forguncy.ServerApi.dll。
为了确保RFC SDK的正常运行,简化支配操作,我们更建议将RFC SDK的文件直接拷贝到系统盘下的某个目录,并且在系统的PATH变量中追加这个目录下面的lib文件夹,以确保运行时可以准确找到所引用的sapnwrfc.dll。

(Nuget中的SapNwRfc包)

然后,我们须要根据SAP的文档解释,创建RFC的传入和传出参数所对应的类。
SAP为每一个NetWeaver接口准备一个Excel文件,记录了方法名,传入参数和传出参数的类型和构造。
我们只须要找到所需调用的那个接口对应的Excel文件,根据文档哀求创建入参和出参对应的class即可。
须要把稳的是,属性的名称、SapName标签的值须要和文档中的参数名严格保持同等。
以创建供应商为例,我们须要创建传入参数类:CreateVendorParameters和传出参数类:createVendorParametersObj。

(NetWeaver中创建供应商的接口所对应的参数构造)

然后,我们在工程中创建WebAPI,一个继续自ForguncyApi的类GetSAPInfo,然后创建POST要求的相应方法CallRFCFunction(方法名和类名组成了URL的Path部分)。
在代码中,我们从要求中读取连接字符串、须要利用的方法和参数,调用SapConnection类的对应方法进行处理,末了把结果序列化后返回给该WebAPI的调用者。
和属性名称一样,调用SapConnection时传入的方法名也须要和文档中的笔墨严格保持同等,如创建供应商的方法名为ZLIFNR_CREATE。

(RFC桥的WebAPI实现)

根据既往履历,为了降落调用RFC桥的开拓者的学习门槛,让他们也可以参照SAP供应的文档直接进行操作,我们推举将所有用到的接口统合到一个WebAPI中,在代码中通过SAP的方法名进行switch分支。

步骤二:在活字格中调用RFC桥

利用活字格做事端编程接口开拓出的WebAPI与纯代码开拓出的WebAPI的利用方法完备同等。
在利用活字格开拓业务系统的时候,都可以通过“发送HTTP要求”命令来调用。

首先,开拓和测试的环境下,我们常日会连接不同的SAP数据库,以是,我们须要将连接NetWeaver所需的必要信息存储到数据库中,随程序一同发布,而不是写去世在代码或全局配置文件中。

(存储在数据库中的NetWeaver连接信息)

在须要操作SAP的数据时,我们须要先利用“设置变量命令”,从数据库中读取当前环境所利用的HANA数据库的参数,拼接成连接字符串;然后利用“发送HTTP要求命令”,通过调用RFC桥的WebAPI。

按照步骤一中RFC桥的实现,其URL地址是customapi/{类名}/{方法名}。
我们还须要在HEAD中设置连接字符串和方法名(来自SAP供应的Excel文档,如ZLIFNR_CREATE)。

(配置NetWeaver的连接字符串和方法名)

而详细的要求参数则须要在BODY中进行设置,将二开系统的业务数据作为参数通报给HANA,实行对应的数据操作,终极达到系统集成的效果,如这里举例的创建供应商档案。

(配置通报给NetWeaver的业务数据)

下面是我们帮助客户进行技能评估时,快速构建的活字格与SAP NetWeaver集成的Demo。

(利用活字格集成SAP HANA的效果)

谈论

为了帮助开拓者做二次开拓,SAP和用友等主流厂商大多供应了直连数据库和封装业务接口两种开拓模式。
在纯代码开拓办法下,两种模式最大的差异在于前者性能上限更高,后者可靠性更强。

进入低代码时期后,封装业务接口的模式表示出了更强的竞争上风。
比如本日的例子中,在RFC桥的帮助下,业务运用的开拓者能通过可视化配置,轻松实现对HANA数据库的读取和写入操作,而这统统,无需节制任何一门编程措辞。
专业程序员借助平台的编程接口扩展平台能力,非专业程序员通过利用这些能力,可视化完成系统开拓,这种“稠浊模式”正在成为低代码开拓的主流。

标签:

相关文章