基于 ABAP Fundamental Library 应用支持的几种 Connectivity 方式
创始人
2024-01-20 22:52:33
0

Fundamental Library for ABAP 运行时组件支持下列的 Connectivity Provider 技术:

Java

  • SAP Java Connector (JCo), SAP closed source, free of charge
  • SAP Cloud Connector, SAP closed source

NodeJS

  • node-rfc package, SAP open source, based on SAP NWRFC SDK

Python

  • PyRFC package, SAP open source, based on SAP NWRFC SDK

SAP NWRFC SDK 是封闭源代码的预构建 C++ 二进制文件,可通过 SAP 客户、合作伙伴或开发人员帐户在 SAP Service Portal 上免费获得。

上述三种 Connectivity 技术的一个根本区别是,NodeJS 和 Python RFC 客户端连接在默认情况下是有状态的,而 SAP Java 连接器在默认情况下是无状态的,因此如果需要实现有状态的连接(stateful connection),开发人员必须付出一些努力。 因此,NodeJS 和 Python 默认编程模型就像在 ABAP 中一样,调用 Update-BAPI 或其他将中间结果存储在当前用户的 ABAP 会话内存中的 RFM 就行了。例如,NodeJS 或 Python 程序只调用 BAPI 或函数模块,如果成功,只需在同一连接上调用 BAPI_TRANSACTION_COMMIT,在后端的同一用户会话中提交事务即可。
其中 BAPI_TRANSACTION_COMMIT 和 BAPI_TRANSACTION_ROLLBACK 在 SAP 框架应用的事务处理中使用,用于提交或回滚正在进行的 ABAP 会话。

SET/GET 参数由 ABAP 事务 SU3 维护,并定义 ABAP 表单输入字段的默认值。打开表单时,如果将 SET/GET 参数分配给输入字段,则该字段会自动预填充 SET/GET 参数值,从而避免用户输入始终相同的输入(即固定销售区代码)。

因此我们的 Fundamental/ABAP 应用程序应该以相同的方式运行,并自动填充其默认值(SET/GET 参数)在后端维护的字段。

独立于前端库,我们应用程序的中间件代码可以用 NodeJS、Java 或 Python 实现。 代码看起来差不多,所以让我们以 Python 和 Flask 服务器为例。 备选方案包括用于 Python 的 Pyramid、bottle、tornado 等,或用于 NodeJS 或 Java 中可用的大量其他服务器的 express、Koa 等。

代码如下:

import json
from flask import Flask, Response, jsonify
from pyrfc import Connectiondef to_json(content, simple=False):if simple:js = simplejson.dumps(content, default=json_serial)return Response(js, status=200, mimetype='application/json')return jsonify(content)app = Flask(__name__)abap_client = Connection(dest="MME)# Equipment
@app.route('/equipment/', methods=['POST'])
def equipment(path):try:to_abap = json.loads(request.data)if path == 'get':from_abap = abap_client.call('/COE/RBP_PAM_EQUIPMENT_GET', to_abap)elif path == 'getlist':from_abap = abap_client.call('/COE/RBP_PAM_EQUIPMENT_GETL', to_abap)elif path == 'change':from_abap = abap_client.call('/COE/RBP_PAM_EQUIPMENT_CHANGE', to_abap)elif path == 'install':from_abap = abap_client.call('/COE/RBP_PAM_EQUIPMENT_INSTALL', to_abap)elif path == 'dismantle':from_abap = abap_client.call('/COE/RBP_PAM_EQUIPMENT_DISMTLE', to_abap)else:raise Exception ('not implemented: %s' % path)return to_json(from_abap)except Exception, e:return serverError(e), 50if __name__ == '__main__':app.run(host='127.0.0.1', port=8123)

上面的代码显示了设备的中间件服务器路由。 为 DMS 实现了类似的路由处理程序,并且没有单独的路由用于特征,这是设备 API 的可选部分。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...