点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好!
在尝试在启用了CRUD操作的CAP服务之上构建列表报告前端时,我遇到了问题。 我假设@ odata.draft.enabled为CRUD启用了实体,所以我的服务就是这样(我能弄清楚的最简单的服务):
schema.cds:
命名空间p4; 实体Ent1 { 密钥ID:整数; 说明:String(100); }
cat-service.cds:
使用'../db/schema'中的{p4作为我的}; @path:'/catalog' 服务CatalogService { @ odata.draft.enabled 实体Ent1作为my.Ent1上的投影; }
当我在本地运行它并启动" Fiori中的预览"时,我具有所有CRUD按钮。 我可以更新和删除条目。 但是当我尝试创建一个条目时,会发生以下情况:
这是"标题"部分中的数据:
请求网址: http://localhost:4004/catalog/$ batch 推荐人政策: 降级时无推荐人 请求标头接受: 多份/混合 接受编码: gzip,放气,br 接受语言: 苯丙氨酸 连接: 活着 内容长度: 330 内容类型: 多份/混合 boundary = batch_id-1594208238132-51 主办: 本地主机:4004 MIME版本: 1.0 OData-MaxVersion: 4.0 OData版本: 4.0 起源: http://本地主机:4004 推荐人: http://localhost:4004/$ fiori-preview/?service = CatalogService&entity = Ent1 秒提取目标: 空的 安全提取模式: 科尔斯 安全提取站点: 同源 用户代理: Mozilla/5.0(Windows NT 6.3; Win64; x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/83.0.4103.116 Safari/537.36 X-CSRF令牌: 空值 X-Requested-With: XMLHttpRequest 请求有效负载--batch_id-1594208238132-51 内容类型:应用程序/http 内容传输编码:binaryPOST Ent1 HTTP/1.1 接受:application/json; odata.metadata = minimal; IEEE754Compatible = true 接受语言:pt-BR X-CSRF令牌: 内容类型:应用程序/json;字符集= UTF-8; IEEE754Compatible = true {} --batch_id-1594208238132-51-
这个$ batch请求对我来说有点令人困惑,但是列表报告似乎发送了大括号内没有任何数据的POST,而这被CAP服务拒绝了。 在我看来,这很奇怪。 在控制台上,我们得到了:
POST/catalog/$ batch > NEW Ent1空 [2020-07-08T11:37:18.170Z | 错误| 1788582]:无法将未定义或null转换为对象 [2020-07-08T11:37:18.170Z | 错误| 1788582]:错误堆栈跟踪:TypeError:无法将未定义或null转换为对象 在removeDraftUUID(C:\ Dev \ Estudo \ Cds \ ws1 \ p4 \ node_modules \ @sap \ cds-runtime \ lib \ cds-services \ services \ utils \ draftUtils.js:224:5)在C:\ Dev \ Estudo \ Cds \ ws1 \ p4 \ node_modules \ @sap \ cds-runtime \ lib \ cds-services \ services \ handlers \ onCreateDraft.js:96:14 [内部错误] TypeError:无法将未定义或null转换为对象 在removeDraftUUID(C:\ Dev \ Estudo \ Cds \ ws1 \ p4 \ node_modules \ @sap \ cds-runtime \ lib \ cds-services \ services \ utils \ draftUtils.js:224:5) 在C:\ Dev \ Estudo \ Cds \ ws1 \ p4 \ node_modules \ @sap \ cds-runtime \ lib \ cds-services \ services \ handlers \ onCreateDraft.js:96:14 请报告此错误。
我也曾尝试将(类似的服务,真正的)服务部署到CF,并使用Fiori-Tools在V2上运行一个"真正的"应用程序(server.js方法),但是对于这一点,我却有所不同 同一点出现错误:
502错误的网关:注册的端点无法处理该请求。
我发现在这种情况下失败的请求是这样的:
### POST http://localhost:8080/v2/adm/Ingredientes 内容类型:application/json {" __metadata":{" type":" AdmService.Ingredientes"}}
,响应如下:
HTTP/1.1 502错误的网关
x-powered by:快递
内容类型:文本/纯文本; 字符集= utf-8
x-cf-routererror:endpoint_failure
x-content-type-options:nosniff
日期:2020年7月8日,星期三,格林尼治标准时间
内容长度:67
连接:关闭
严格运输安全性:max-age = 31536000; includeSubDomains; 预紧
有所不同:接受编码
502错误的网关:注册的端点无法处理该请求。
这与其他问题有点类似:
但是,在我的情况下,我没有收到SAML2消息,并且manifest.json(由fiori工具生成)中没有SAML2参数。
我还尝试使用WebIDE向导生成列表报告。 这个生成了SAML2参数,但是我删除了它,结果是相同的。
好吧,我在这里已经写了很多东西……概括地说,我要做的就是在一个简单的CAP服务上建立一个功能列表报告CRUD。 我正在尝试使用具有@ odata.draft.enabled的批注,但没有成功,无论是本地预览(odata v4)还是云上的应用程序(odata v2)。 如果有人可以向我说明一下,我将非常感谢您!
谢谢! 埃里克
(200.1 kB)
我遇到了同样的问题,但是您可以通过更改键ID来实现:UUID; 那么您就可以创建操作了。
感谢详细的报告。 我现在不确定这是客户端Fiori问题还是服务器中的问题。 但是,我确实知道Fiori预览使用的是较旧的SAP UI5版本(1.73.1),这可能会出现问题。 在CAP July版本中,它将再次使用最新版本。 同时,您可以尝试通过自己的html启动UI(请参见样本)来检查最新的UI5是否表现更好。
感谢Christian的回复! 这里还不算幸运。 我通过Fiori-Tools生成了自己的前端,它的后端拒绝了它的创建(空POST)请求,响应为" 502错误的网关:注册的端点无法处理该请求"。 我还尝试使自己的index.html像在您给我的示例中一样,但是从磁贴启动应用程序时却遇到了不同的错误。 也许情况与我根据样本制作的设置不太吻合。 但是让我们暂时搁置这一点,然后等待新版本发布。 再次感谢。 一般来说,我在使用CAP时会很开心。非常感谢! 你让我开心!
一周热门 更多>