问题标签 [sap-cap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
127 浏览

sql - HANA 中的 Select Query 是否支持 execBatch()?

我正在使用 VSCODE 中的 Nodejs 项目为 SAP CAP 进行本地开发。我已连接到 XSA 服务器。我正在尝试在 XSA 环境中创建 hana 数据库用户。我想首先检查我的应用将创建的用户列表是否已经存在。为此,我正在尝试使用 where 子句执行选择查询。它是一个准备好的语句,我试图用 execBatch(array) 执行它。下面是代码。

查询执行失败并出现以下错误 - 错误

我想知道选择查询/语句是否支持 Hana 中的 execBatch() 功能,因为相同的选择语句在没有任何占位符的情况下工作,即在 where 子句中直接提供 user_name 的值并且使用 exec() 而不是 execBatch() , 还是我在这里遗漏了一些要点?

0 投票
2 回答
2898 浏览

sap-cloud-platform - 如何在 SAP Business Application Studio 中提供目标以在 CAP Java 项目中使用 Cloud SDK 访问本地 OData API

我正在按照下面的教程使用 CAP Java 项目中的 SAP Cloud SDK 来调用 S/4HANA 本地系统的 OData API。与 Cloud SDK Spring 原型项目相比,在 CAP Java 项目中使用 VDM 没有太大区别。

https://developers.sap.com/tutorials/cloudsdk-integrate-cap.html

这是 CAP Java 项目中的一些代码片段。

我遇到的问题是在 Business Application Studio 中提供目标“s4x011”来进行本地测试。由于它将通过云连接器连接本地 OData API,我需要提供在 SAP Cloud Foundry 环境中定义的目标名称。

以下博客中描述了一个解决方案。我需要在 .env1 文件中提供“目的地”。例如,

https://blogs.sap.com/2020/06/02/how-to-reach-on-premise-odata-from-the-business-application-studio/

目的地“s4x011”在 sap 云平台中定义。这是在 SAP Cloud Platform 中定义目标的博客。 https://help.sap.com/viewer/9d1db9835307451daa8c930fbd9ab264/Cloud/en-US/e72930c96b664e3ea4ce5288eb84075f.html

这是我在子账户级别的目标“s4x011”配置。

在此处输入图像描述

一切准备就绪后,我使用 mvn 命令启动了我的应用程序。它仍然找不到目的地“s4x011”。

这是错误堆栈。

=============更新===============

我在default-env.jsonCAP Java 项目的根文件夹中创建了一个带有目的地的文件夹。然后我无法启动我的应用程序。

然后我在 default-env.json 中添加了“VCAP_SERVICES”。可以启动应用程序,但仍未找到目的地。

0 投票
1 回答
1495 浏览

sapui5 - 无法将 CAP 应用程序部署到 Cloud Foundry

我一直在按照本教程使用云应用程序编程模型(Node.js)开发应用程序: https ://github.com/SAP-samples/cloud-cap-nodejs-codejam

不幸的是,我无法将它部署到 Cloud Foundry。我还从上面的教程中创建了应用程序(书店),以检查我是否遇到了同样的错误,我确实遇到了。

错误如下所示,当我尝试执行npm run build:mta练习 10 中的命令时发生。

完整的调试日志:

mta.yml 文件 - 与教程中的完全相同

有没有人也遇到过这个问题?任何帮助将不胜感激。

0 投票
2 回答
230 浏览

sap-cloud-sdk - 无法将 VDM 生成器与 CAP 一起用于 GWSAMPLE_BASIC 服务

我使用 CAP NG 创建了一个项目,我使用 VDM 从位于https://sapes5.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/的 ES5 后端提取 BusinessPartners 。我成功导入了 EDMX,并且类也是用 VDM 生成的。但是,如果我尝试从 BusinessPartner 类中获取方法,许多“设置”方法都没有公开,正如您从这张图片中看到的那样: 在此处输入图像描述

如果我尝试像在这段代码中那样手动创建 BusinessPartner 实体:

他们根本没有检索。我只是得到一个空白页: 在此处输入图像描述 我的项目在这里https://github.com/simfer/myspringbootapp我正在试用版环境中使用 SAP Business Application Studio。

西马科

0 投票
1 回答
303 浏览

sqlite - 未找到面对 SQlite3 模块 - SAP CAP 示例

从 SAP trail business app studio 为其中一个示例运行 CDS WATCH 时出现错误。

我尝试npm i sqlite3 -d了不同的选择,但没有一个能给我带来好运......

下面是控制台堆栈错误日志。

任何帮助表示赞赏

谢谢拉杰什

控制台堆栈错误日志:

  • node-pre-gyp WARN 使用 node-pre-gyp https 下载请求 \
  • node-pre-gyp WARN 尝试下载(403):https ://mapbox-node-binary.s3.amazonaws.com/sqlite3/v5.0.1/napi-v6-linux-x64.tar.gz \
  • node-pre-gyp WARN 未找到 sqlite3@5.0.1 和 node@10.23.0 (node-v64 ABI, glibc) 的预构建二进制文件(回退到使用 node-gyp 进行源代码编译)
  • 制作:进入目录'/home/user/projects/bookshop/node_modules/sqlite3/build'
  • CC(目标)发布/obj.target/nothing/../node-addon-api/nothing.o
  • 制作:cc:找不到命令
  • make: *** [../node-addon-api/nothing.target.mk:99: Release/obj.target/nothing/../node-addon-api/nothing.o] 错误 127
  • 制作:离开目录'/home/user/projects/bookshop/node_modules/sqlite3/build'
  • 吉普错误!构建错误
  • 吉普错误!堆栈错误:make失败,退出代码:2
  • 吉普错误!ChildProcess.onExit 的堆栈(/opt/nodejs/node-v10.23.0-linux-x64/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:191:23)
  • 吉普错误!ChildProcess.emit (events.js:198:13) 的堆栈
  • 吉普错误!堆栈在 Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
  • 吉普错误!系统 Linux 5.4.0-4-cloud-amd64
  • 吉普错误!命令“/opt/nodejs/node-v10.23.0-linux-x64/bin/node”“/opt/nodejs/node-v10.23.0-linux-x64/lib/node_modules/npm/node_modules/node-gyp/bin /node-gyp.js" "build" "--fallback-to-build" "--module=/home/user/projects/bookshop/node_modules/sqlite3/lib/binding/napi-v6-linux-x64/node_sqlite3 .node" "--module_name=node_sqlite3" "--module_path=/home/user/projects/bookshop/node_modules/sqlite3/lib/binding/napi-v6-linux-x64" "--napi_version=7" "-- node_abi_napi=napi" "--napi_build_version=6" "--node_napi_label=napi-v6"
  • 吉普错误!cwd /home/user/projects/bookshop/node_modules/sqlite3
  • 吉普错误!节点-v v10.23.0
  • 吉普错误!节点gyp -v v5.1.0
  • 吉普错误!不好
  • 节点预gyp错误!构建错误
  • 节点预gyp错误!堆栈错误:无法执行'/opt/nodejs/node-v10.23.0-linux-x64/bin/node /opt/nodejs/node-v10.23.0-linux-x64/lib/node_modules/npm/node_modules/node- gyp/bin/node-gyp.js build --fallback-to-build --module=/home/user/projects/bookshop/node_modules/sqlite3/lib/binding/napi-v6-linux-x64/node_sqlite3.node - -module_name=node_sqlite3 --module_path=/home/user/projects/bookshop/node_modules/sqlite3/lib/binding/napi-v6-linux-x64 --napi_version=7 --node_abi_napi=napi --napi_build_version=6 --node_napi_label =napi-v6' (1)
  • 节点预gyp错误!ChildProcess 的堆栈。(/home/user/projects/bookshop/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
  • 节点预gyp错误!ChildProcess.emit (events.js:198:13) 的堆栈
  • 节点预gyp错误!堆栈在可能关闭(内部/child_process.js:982:16)
  • 节点预gyp错误!堆栈在 Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
  • 节点预gyp错误!系统 Linux 5.4.0-4-cloud-amd64
  • 节点预gyp错误!命令“/opt/nodejs/node-v10.23.0-linux-x64/bin/node”“/home/user/projects/bookshop/node_modules/.bin/node-pre-gyp”“安装”“--fallback-建造”
  • 节点预gyp错误!cwd /home/user/projects/bookshop/node_modules/sqlite3
  • 节点预gyp错误!节点-v v10.23.0
  • 节点预gyp错误!节点预gyp -v v0.11.0
  • 节点预gyp错误!不好
  • 执行失败'/opt/nodejs/node-v10.23.0-linux-x64/bin/node /opt/nodejs/node-v10.23.0-linux-x64/lib/node_modules/npm/node_modules/node-gyp/bin /node-gyp.js build --fallback-to-build --module=/home/user/projects/bookshop/node_modules/sqlite3/lib/binding/napi-v6-linux-x64/node_sqlite3.node --module_name= node_sqlite3 --module_path=/home/user/projects/bookshop/node_modules/sqlite3/lib/binding/napi-v6-linux-x64 --napi_version=7 --node_abi_napi=napi --napi_build_version=6 --node_napi_label=napi- v6' (1)
  • npm 错误!代码生命周期
  • npm 错误!错误号 1
  • npm 错误!sqlite3@5.0.1 安装:node-pre-gyp install --fallback-to-build
  • npm 错误!退出状态 1
  • npm 错误!
  • npm 错误!sqlite3@5.0.1 安装脚本失败。
  • npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。
  • npm 错误!可以在以下位置找到此运行的完整日志:
  • npm 错误!/home/user/.npm/_logs/2021-01-15T19_20_11_562Z-debug.log
0 投票
1 回答
753 浏览

sap-fiori - 在 CAP 中显示与 SAP Fiori 注释的“一对多”关联

我尝试用 SAP cap 做一个数据库项目。我想显示与父实体关联的所有实体。如果协会是一对一的,它工作得很好。但如果它是一对多,它不会显示任何东西。

--我有以下架构定义:

--并遵循 fiori 注释:

管理服务只是给定实体的投影。
有谁知道我必须改变什么才能pers.Name显示在列表或类似的东西中?
如前所述,如果我将模式定义“与多个关联”更改为“与一个关联”,它会起作用。但我希望它关联多个实体。

0 投票
0 回答
170 浏览

sapui5 - SAP CAP:OData.Draft.enabled 实体的 PATCH 调用返回 404

对于我的 SAP CAP Bookstore 应用程序,我正在尝试通过服务任务 (PATCH) 从我的工作流应用程序进行 PATCH 调用。

这工作得很好。现在我们更改了目标应用程序@OData.Draft.Enabled,将附件添加到目标 URL。正如您在屏幕截图中看到的那样,PATCH 调用不再起作用。

之前OData.Draft.Enabled→ 字段“标题”更改成功

在此处输入图像描述

包括OData.Draft.Enabled- 该场景中的 GET 请求运行良好并响应了所需的数据。

在此处输入图像描述

有人知道吗?

对于潜在解决方案的任何想法/提示,我将不胜感激。

0 投票
0 回答
48 浏览

node.js - 如何将不属于实体的附加数据发送到后端(例如,通过 URL 查询)

我想通过 OData V2 协议将其他信息从我的 SAPUI5 前端发送到我的 CAP 后端。这些信息不是请求发送到的实体的一部分。我该如何解决这个问题?

我已经尝试添加方法urlParameters的属性。这似乎适用于传出请求 URL(我正在使用批处理请求):ODataModel.create

但是,我在后端找不到它们。我正在使用srv.before请求处理程序,但找不到访问查询的方法:

你对如何解决这个问题有什么建议吗?

编辑:

经过一番反复试验,我发现我尝试在后端访问查询的方式确实有效,但前提是您禁用了批处理请求。但是,我认为必须有另一种方法来获取查询,因为如果您运行cds watch命令并向服务发送带有查询的请求,它们会在控制台中记录:

所以我只需要知道 CDS 框架如何访问查询,或者更确切地说,它如何或是否将它们传递给Handler Registration API

0 投票
0 回答
81 浏览

java - SAP CAP - 错误:在 Business Application Studio 上创建新数据时没有元素“DraftAdministrativeData”

在 Business Application Studio (BAS) 上创建新数据时,我面临 1 个问题。在 2021 年 5 月 24 日星期一之前,它仍然可以正常工作。

详细错误:“purchaseorder”中没有名称为“DraftAdministrativeData”的元素(服务“PersistenceService$Default”,事件“CREATE”,实体“PoService.PurchaseOrders_drafts”)

我已启用odata(@odata.draft.enabled)fiori(@fiori.draft.enabled)草稿模式(也适用于数据模型和服务定义中的实体采购订单。

但是,当我将源代码下载到设备并尝试在 VScode 上本地运行时。采购订单可以正常创建,不会出现上述错误。

在这种情况下你能帮我建议吗?从 2021 年 5 月 24 日起,BAS 的任何更新都会导致此错误?

今天之前在云上为我的应用程序部署的最后一个版本仍然可以正常工作。

谢谢

0 投票
1 回答
162 浏览

sap-cloud-foundry - sap-cf-mailer VError:没有服务匹配目标

我有一个 SAP CAP Nodejs 应用程序,我正在尝试使用sap-cf-mailer包从 CAP 应用程序发送电子邮件。

如示例中所述,我在 BTP 中创建了一个目标服务,当我尝试将应用程序部署到 BTP 时它失败了。

当我使用本地运行应用程序时cds watch,它会出现以下错误

VError:没有服务匹配目的地

这是我的 mta.yaml

这是CDS服务的js文件

我正在关注以下示例

从 nodejs 应用程序发送电子邮件

将电子邮件集成到 CAP 应用程序