问题标签 [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 投票
2 回答
1359 浏览

reactjs - 我可以将 react-app 部署到 SAP Cloud Platform 吗?

是否可以将 react-redux 应用程序部署到 SAP Cloud Platform 的 Cloud Foundry 环境中,它是否是新的 SAP Cloud Application Programming Model 受支持的方式?

到目前为止,我找不到任何官方资源。

0 投票
0 回答
349 浏览

web-services - 从自定义 VDM 生成的 CDS 不包含注释

@sap/cloud-sdk-generator 1.6.1用于生成 VDM (YY1_SALESDOCUMENT_CDS),使用 edmx2csn 将其转换为 CSN,然后在 .CDS 文件中使用它以公开为 OData 服务(名为 CustomSales)。

目标是使用额外的字段 'foobar' 来增强原始 YY1_SALESDOCUMENT_CDS,该字段按预期工作。但它有一个缺点:CustomSales 不包含元数据的 sap:* 属性,如 YY1_SALESDOCUMENT_CDS 所具有的“sap:label”。

我的 custom-sales.CDS 服务文件:

YY1_SALESDOCUMENT_CDS 服务的元数据:

CustomSales Service 的元数据:

我希望 YY1_SALESDOCUMENT_CDS 服务中的所有属性都可以通过 CustomSales 复制,但事实并非如此。

有没有办法从现有服务生成 OData 服务并复制它的元数据属性?

值得一提的是,我使用 JS/TS 作为自定义逻辑的处理程序,使用 Cloud SDK for JS 调用原始后端服务。

0 投票
1 回答
1025 浏览

sap-cloud-sdk - CAP - 网关超时 - 如何增加传入请求的超时时间

我触发了一个后功能导入(CDS 中的操作),这通常需要大约 2 分钟的处理时间。POST 操作已在 JAVA 中成功完成,但出现网关超时。

如何增加传入请求的超时时间?我曾尝试在服务项目的 mta.yaml 中设置属性 INCOMING_CONNECTION_TIMEOUT: 0 以及使用命令

它也没有工作。你能帮忙吗?

0 投票
1 回答
225 浏览

sap-cloud-sdk - 如何覆盖通用 ODATA 扩展处理功能

我们目前正在处理我们提供的 OData 接口的性能问题,因为 UI5 发出带有多个扩展路径的读取请求。由于框架对请求的通用处理,这会导致每个扩展选项的额外处理,我们需要防止这种情况发生。

阅读有关此主题的博客似乎有一种方法可以以某种方式覆盖通用处理:

https://blogs.sap.com/2018/03/19/sap-cloud-platform-sdk-for-service-development-create-odata-service-7-more-navigation-read-create-expand-sqo/

在这种情况下,我们需要决定是否有能力依赖 FWK 功能。当然,这样的通用支持不可能是高性能的。但是对于少量数据,免费获得它是一件好事。请继续关注以了解如何使用自己的特定实现来覆盖此类通用 FWK 功能。

但是,没有关于此的进一步博客文章并查看框架,我唯一的想法是覆盖它是配置和使用自己的 com.sap.gateway.core.api.provider.data.IDataProvider 实现来处理请求以自定义方式,尽管这将是一个巨大的解决方法。

所以问题是是否有一些更精简或更简单的方法来覆盖我错过的这个功能?

更新: 我更新以创建自定义数据提供程序并在 servlet 初始化后将其注册到 RuntimeDelegate。然后,此自定义数据提供程序将检查映射方法处理程序上的自定义注释,以查看是否应处理扩展。如果不是,它只会读取实体,但不会执行通用扩展读取。这或多或少都很好,但当然缺少的是一种在 ReadRequest 中传递要扩展的属性的方法。到目前为止,只有一个静态实现可能解决我们的性能问题,但如果有另一个更好的解决方案,我很乐意提供提示......

0 投票
2 回答
846 浏览

node.js - 即使在调用 resolve() 之后,Promise 也没有解决

我在这里的问题可能听起来很少重复。但是我在stackoverflow上没有找到任何可以解决我的问题的答案。

我正在从我的一个功能中返回一个承诺。从数据库中获取一些数据后,承诺将得到解决。如果 db 表中没有数据,将被拒绝。此外,在解决承诺之前,我必须对获取的数据进行一些处理,这就是我使用回调的原因。

我的代码片段

ResourceModel.getById()

cds.transaction()是 SAP 提供的 cds 框架方法之一。

我期望它做的是在成功获取所有记录后,它应该调用提供的回调,我在其中编写了处理逻辑并resolve()在处理完成后调用。

我在回调中接收数据,能够打印Data available并且接收到的数据对象甚至Promise Resolved在控制台上结束。但令人惊讶的是,承诺没有得到解决

我可以说“承诺没有得到解决”,因为这个返回的承诺将由Promise.all()框架收集(如官方文档中所述 - https://cap.cloud.sap/docs/node.js/api#service -before ) 并在解决后返回响应。但我没有得到任何回应(既没有成功也没有失败)。邮递员永远处于加载状态。

上面的例子与setTimeout()例子一起工作得很好。

我哪里错了?

0 投票
1 回答
361 浏览

sapui5 - SAP Cloud 应用程序编程模型集成

我尝试将已经实现的SAPUI5应用程序集成到一起CAP以使用SQLite数据库。在我的模型中,我有一个名为的属性Order,您可能知道,Order它是SQLite.

当我尝试使用以下命令生成数据库时:

我收到语法错误:

当我在我定义的实体中使用引号时,我收到一个关于 SAPHANA数据库的错误:

我只是想知道有没有办法解决这个问题?

PS:我不想使用HANA数据库,所以请告诉我是否有禁用它的方法,因为我找不到这方面的任何信息。

我感谢任何帮助或建议:)

0 投票
1 回答
2149 浏览

javascript - 如何通过json服务在node中构建odata服务

我们需要读取服务并将其转换为 odata。我们的目标系统只了解 odata,而源无法交付 odata。所以我们正在尝试构建节点服务来促进同样的事情。

我尝试使用 CAP(https://cap.cloud.sap/docs/get-started/),但它似乎只能用于持久数据。

如果您可以为此提供任何见解或任何指导,那将非常有帮助。我们知道,我们必须在节点中间层处理所有 odata 操作。

0 投票
1 回答
1290 浏览

node.js - 为 SAP CAP 应用定义自定义 Express 端点

我正在尝试在 SAP Business Application Studio 中创建一个标准的 SAP CAP(云平台应用程序模型),并且除了 CDS 服务提供的端点之外,还使用其他 Express 端点对其进行扩展。我有以下项目结构:

项目结构

package.json 的内容:

服务器.js:

当我运行cds watch命令时,应用程序正确启动,但是当我打开 Fiori Elements 应用程序时,会出现以下错误消息:

Fiori 应用程序中的错误消息

如果我从 srv 文件夹中删除 server.js 文件,则该应用程序运行良好。什么可能导致错误消息?是否需要任何额外的配置?

0 投票
1 回答
346 浏览

time - 如何在 Odata V2 中将 Edm.String 类型的属性转换为数字

我正在查询 Odata V2 服务。实体 Foo 具有类型为 Edm.String 的属性 Bar 。Bar 是以毫秒为单位的时间,遗憾的是,它被定义为一个字符串。例如“1597091642312”。

如何查询 Foo 以获取 Bar 仅在特定时间点之后的结果?

我试着投射,像这样:

但后来我得到:

不支持功能:$filter 或 $orderby 查询选项中的表达式“5”

特别是“5”对我来说没有意义。

提供服务是 SAP CAP CDS 模拟服务,使用 V4 到 V2 代理。

0 投票
1 回答
213 浏览

node.js - 过程参数不传递给 SAP CAP 应用程序

我有一个正在调用程序的 SAP Cloud 应用程序。所有没有参数的过程都运行良好,但我无法让带参数的过程正常工作。我已将其范围缩小到我的 node.js 服务文件中的以下几行:

我得到的错误是:

当我 console.log ip 时,我得到:

我的程序定义是:

有任何想法吗?谢谢。