一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

JavaScript 消費 ABAP Remote Enabled Function Module

 汪子熙 2024-12-07 發(fā)布于上海

筆者前一篇文章,介紹了下圖所示的技術(shù)解決方案,適用于那些雖然后臺 ABAP 系統(tǒng)版本低于 NetWeaver 7.0, 無法使用 OData,但仍計劃使用 Angular,React 和 Vue 等主流前端開發(fā)框架,消費 ABAP 后臺 BAPI 的客戶們。

如果不用 OData,Web 應(yīng)用如何消費 ABAP 系統(tǒng)的 BAPI 等業(yè)務(wù)邏輯?

SAP 官方對主流的編程語言和工具,比如 C#,Java,Python 和 Node.js,都提供了完備的 SDK,開箱即用。

應(yīng)用開發(fā)人員運用這些 SDK,能很容易地選擇自己熟悉的技術(shù)棧,通過 RFC 調(diào)用的方式,消費 ABAP 后臺的 API.

本文介紹如何使用 JavaScript 這門編程語言,連接 ABAP 系統(tǒng)。

JavaScript 包含瀏覽器端和服務(wù)器端執(zhí)行兩種場景。瀏覽器端運行的 JavaScript,可以使用 HTTP 協(xié)議,消費 ABAP 系統(tǒng)通過 ICM(Internet Communication Manager) 暴露出來的后臺服務(wù)。

筆者之前工作中的很多原型開發(fā),均采取了這種方案。因為不需要額外的 OData 建模和實現(xiàn),開發(fā)速度非常快。

一些具體的例子:

運行在服務(wù)器端的 JavaScript,即 Node.js.

SAP 提供了連接 SAP ABAP 系統(tǒng)的 Node.js SDK,名叫 node-rfc.

https://github.com/SAP/node-rfc

使用這個庫之前,需要按照上述文檔介紹的步驟,先下載 SAP NW RFC SDK zip 包,解壓后,將 lib 文件夾的路徑,配置到操作系統(tǒng)的 PATH 環(huán)境變量中。

下面通過一個實際的例子來介紹這個 SDK 的用法。測試用的 Function Module 是 SAP 標(biāo)準發(fā)布的 STFC_STRUCTURE.

這個 Function Module 專門用來演示,在 RFC 過程中如何傳遞 ABAP Structure和 Table 這種結(jié)構(gòu)的參數(shù)。

其參數(shù)定義如下,接受一個輸入?yún)?shù) IMPORTSTRUCT 和 TABLE 參數(shù) RFCTABLE. 

其內(nèi)部邏輯只是把調(diào)用方通過這兩個參數(shù)傳遞進來的數(shù)據(jù),再直接返回給調(diào)用方。

Node.js 完整代碼如下:

const noderfc = require("node-rfc");const client = new noderfc.Client({ dest: "MME" });(async () => {    try {        await client.open();        const abap_structure = {            RFCINT4: 345,            RFCFLOAT: 1.23456789,            RFCCHAR4: "ABCD",            RFCDATE: "20180625",         };        let abap_table = [abap_structure];        const result = await client.call("STFC_STRUCTURE", {            IMPORTSTRUCT: abap_structure,            RFCTABLE: abap_table,        });        console.log(result);    } catch (err) {        console.error(err);    }})();

代碼第一行,通過 require 導(dǎo)入 node-rfc, 因此需要在 package.json 的 dependencies 區(qū)域?qū)胍蕾?,然后使?npm install 安裝依賴。

代碼第二行,通過 Destination 拿到連接 ABAP 系統(tǒng) MME 的客戶端實例。在 ABAP On-Premise 和 SAP BTP 上都有這個 Destination 的概念。

ABAP On-Premise 系統(tǒng)通過事務(wù)碼 SM59 創(chuàng)建指向遠端 ABAP 或者第三方系統(tǒng)的 Destination.

在基于 node-rfc 的應(yīng)用里,通過文件來定義 Destination. 

在項目文件夾里新建一個 sapnwrfc.ini 文件,維護如下內(nèi)容,就定義了一個指向 ABAP 系統(tǒng) MME 的 Destination. 

DEST=MMEUSER=用戶名PASSWD=密碼ASHOST= ABAP 系統(tǒng)的消息服務(wù)器地址SYSNR=78CLIENT=504LANG=EN

這個 ini 文件里的值,都可以從 SAPGUI 登錄系統(tǒng)的選項里獲得。

代碼中的兩個 JavaScript 變量,abap_structure 和 abap_table, 分別用來維護準備傳遞到 ABAP Function Module Importing 和 Table 參數(shù)的內(nèi)容。最后調(diào)用 client 實例方法 call,就能通過 RFC 方式,向名為 MME 的 Destination 指向的 ABAP 系統(tǒng),發(fā)起 RFC 調(diào)用了。

將上面的代碼保存成一個 .js 文件,用命令行 node 執(zhí)行,看到下列從 ABAP 后臺系統(tǒng)返回的輸出:

執(zhí)行之后,在當(dāng)前項目文件夾內(nèi),自動生成了一個 log 文件:dev_rfc.log,其中提到了一個名叫 CPIC library 的庫及其版本。

ABAP 應(yīng)用開發(fā)人員不會直接和這個庫打交道。CPIC 是 Common Programming Interface for Communication 的縮寫。ABAP RFC 基于 CPIC,但提供了更高級別的抽象,使得 ABAP 開發(fā)人員可以更方便地實現(xiàn)遠程調(diào)用。

換言之,CPIC 是底層的通信接口,而 RFC 則是在 CPIC 之上構(gòu)建的更高級的通信機制。

筆者后續(xù)的文章,會介紹更多使用這些 SDK 去調(diào)用 ABAP RFC 的相關(guān)開發(fā)細節(jié)。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章

    91在线播放在线播放观看| 人妻一区二区三区在线| 亚洲一区二区三区精选| 富婆又大又白又丰满又紧又硬| 日韩和欧美的一区二区三区| 91插插插外国一区二区婷婷| 国产精品一区二区传媒蜜臀| 男人把女人操得嗷嗷叫| 欧美精品在线播放一区二区| 久久99青青精品免费观看| 亚洲国产一级片在线观看| 欧美一级片日韩一级片| 狠狠做深爱婷婷久久综合| 亚洲另类女同一二三区| 国产91色综合久久高清| 后入美臀少妇一区二区| 久久经典一区二区三区| 国产精品人妻熟女毛片av久| 老司机精品国产在线视频| 日本加勒比系列在线播放| 日韩精品少妇人妻一区二区| 偷拍美女洗澡免费视频| 欧美一区二区三区十区| 日韩人妻免费视频一专区| 国产小青蛙全集免费看| 青青操在线视频精品视频| 成人精品网一区二区三区| 中文字幕乱码免费人妻av| 亚洲欧洲一区二区中文字幕| 日本黄色高清视频久久| 夫妻性生活动态图视频| 在线日本不卡一区二区| 国产91麻豆精品成人区| 午夜福利国产精品不卡| 老司机精品国产在线视频| 91精品国产品国语在线不卡| 亚洲天堂精品在线视频| 亚洲天堂男人在线观看| 午夜精品黄片在线播放| 黄片免费观看一区二区| 日韩欧美综合在线播放|