问题标签 [cds]
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.
authorization - 通过 ASPECT pfcg_auth 通知用户不允许的结果?
在“经典”ABAP 权限检查中,您有时会遍历结果列表。如果至少有一项检查失败,您将通知用户并仅显示他有权使用的项目。我的问题是:您将如何使用 pfcg_auth 方面在 CDS 中执行此操作?例如:
您如何判断选择找到了 50 个销售订单,但用户只被授权显示其中的 40 个?
odata - 如何访问 OData V2 服务的两级深度嵌套关联?
我已经通过基于 CDS 视图的 ABAP 服务网关 (SEGW) 公开了 OData V2 服务。该视图包含与其他两个视图的间接关联(entity_1 > entity_2 > entity_3 - entity_1 和 entity_3 之间没有直接连接)。我的问题是我无法通过 entity_2 从 entity_1 访问 entity_3。通过使用访问 entity_2 可以正常工作,/service_name/entity_1?$expand=to_entity_2
但之后我无法更深入地研究。我尝试使用/service_name/entity_1?expand=to_entity_2($expand=to_entity_3)
,但是一旦我在第一个查询之后将第二个查询放在括号中,我就会收到一条错误消息。
是我使用了错误的语法还是 OData V2 不支持这些嵌套调用?如果它不受支持,我该如何解决我的问题?该服务用于 SAPUI5 应用程序,它应该与树表绑定,因此我的服务需要(三个)不同的级别。
odata - 重命名通过引用的 CDS 视图生成的 OData 服务的实体?
我在 SAP NETWEAVER 7.5 SP 19 (09/2020) 系统上实现了一些带有关联的 CDS 视图。
我在 SEGW 事务中使用数据源引用功能自动从 CDS 视图创建 ODATA 类型和关联,并将它们添加到现有的 SEGW ODATA 项目中。
然后我在 SAPUI5 应用程序中使用该 ODATA 服务。
这是我使用的指南之一:https ://www.saplearners.com/create-odata-service-abap-cds-views-segw/
CDS 视图
CDS 视图的名称类似于/ID/VIEW_NAME_CDS。
关联用as重命名,并在名称前加上下划线。然后名称为_assication_name。下划线似乎是 SAP 使导航属性可读的约定。
结果
在 SEGW 项目中,向导会创建一个实体类型,其名称为:x id x view_name_cds类型 每个斜线都将替换为x并在末尾添加类型。
导航属性名为to_assication_name。
该关联的名称类似于assoc_0D6ADC4B279EADE543738376111F7216。
目标
我想更改实体类型、关联和导航属性的名称,因为我想要 sapui5 应用程序中的一些可读名称
澄清 2020/11/30:SEGW 事务本身中的名称也应更改,以便它们在 SEGW 和 SAPUI5 中相同,因为在未来几个月内,另一个开发人员不会认为我更改了 MPC_EXT 类中的名称。至少我不会这么想。:-)
CDS 视图中的注释可以做到这一点吗?还是有什么其他方式?
例子
实体类型:xabcxsystem_result_cdsType
这是骆驼案风格和蛇纹案的混合体。不太可读。
导航属性:to_monitoring_results
没关系,但我想有机会重命名它。
关联:assoc_0D6ADC4B279EADE543738376111F7216
不可读。只有当您单击它时,您才会看到关联所属的 2 个实体。
odata - CDS 年份类型/从整数类型中删除千位分隔符
我想在我的 Fiori 元素列表报告 - 对象页面中显示一个带有年份的列。我尝试使用日期格式,但如果您尝试创建新条目,您还必须选择日期和月份。情况不应该如此。目前,我为该列分配了整数类型,但这导致年份被格式化为千位分隔符(例如,2,020 而不是 2020)。
你能提供这个问题的解决方案吗?通过调整日期选择器以仅选择一年或从输出中删除千位分隔符?或者解决我的问题的不同答案。
编辑:
我找到了@Common.isCalendarYear
注释,但该注释要求相应的字段是一个字符串。因此,如果我在我的 Fiori Elements 应用程序中编辑或创建条目,我可以输入我想要的任何字符串(允许使用字符,长度不限于 4,除非我将字段定义为 String(4))。情况不应该如此。理想情况下,应用程序应仅使用带有年份选择的日期选择器。
abap - 根据优先级从 JEST 表中获取单个主要状态?
对于 JEST 表中的每个对象编号,我想获得一个我认为是主要状态的状态。
主要问题是,在我的情况下,我认为像 I0076 (删除标志)这样的独特状态可以与创建的其他状态(I0001)同时处于活动状态。在这种情况下,我想使用 GROUP BY objnr,然后在 I0076 始终覆盖任何其他状态的状态下使用 CASE。
ABAP CDS 或 SQL 有可能吗?还是我必须编写 ABAP 代码(AMDP 或后处理)来解决这个问题?
输入:
输出:
sql - 从 CDS 获取不同键字段值的计数
我想问一下是否可以使用 ABAP 动态获取不同字段的计数。
我们的 CDS 中的 key 有 9 个字段,数量很多,但由于历史决定,无法拆分。我需要的是如下代码:
或者
我知道可以将选择读入内存并获取sy-dbcnt
,但我想确保没有其他选项。
abap - BPOSB 和 EBELP 在 CDS 关联中没有兼容的类型
我是 CDS 的新手,我正在尝试制作我的第一个视图。
问题是,当我尝试以下代码时,我收到错误:
关联 _Purchase_Order:BPOSB 和 EBELP 没有兼容的类型。
是否可以在协会的任何领域进行演员表以使其发挥作用?
提前致谢
python - 为什么我从 QuantLib 中的不同信用定价引擎得到不同的结果
我正在尝试使用三个信用定价引擎:IsdaCdsEngine
,但是我从它们中得到了不同的 NPV 结果MidPointCdsEngine
。IntegralCdsEngine
情况是这样的:当我cds
为不同的期限输入相同的点差值时,这些npv
值是不同的,而当cds
不同期限的点差值不同时,npv
结果是相似的(仍然不一样)。
如果有人能给我解释这三个引擎之间有何不同,我将不胜感激。
abap - 仅在 CDS 中的数字字段中添加前导零?
在我的 AS ABAP 7.50 系统中,我有一个材料长度为 18 的表,我需要通过 CDS 将其公开,就像在 S/4 中材料长度为 40 一样。系统中的材料 ID 可以是数字(带有前导零)或字母数字。材料字段需要强制转换为MATNR40,如果ID是数字,则需要前导零添加最多40个字符。
首先,我尝试了`lpad. 但当然,它也会在字母数字值中添加前导零:
然后我添加了一个case
,但我无法使条件按我预期的那样工作。正如康斯坦丁在评论中确认的那样,我尝试在这里使用正则表达式是不可能的:
CDS 本身是否有解决此问题的方法?
源表:
MATNR18 | 描述 |
---|---|
000000000000000142 | 数字 ID 材料 |
MATERIAL_2 | 字母数字 ID |
预期结果:
MATNR40 | 描述 |
---|---|
00000000000000000000000000000000000000142 | 数字 ID 材料 |
MATERIAL_2 | 字母数字 ID |
sap-basis - 查找授权对象 S_SERVICE(参数 SRV_NAME)所需的核心数据/OData 服务的 (usob)Hash
要访问从 SAP R/3 中的核心数据服务 (CDS) 公开数据的 OData Web 服务,用户需要分配一个包含授权对象的授权角色S_SERVICE
。
授权对象S_SERVICE
需要两个参数:
- 在我的情况下,服务类型(
SRV_TYPE
) 设置为HT
= "TADIR Object" - 服务哈希( )
SRV_NAME
。
使用我发现的调试器,功能模块AUTHORITY_CHECK_TADIR_SERVICE
将来自S_SERVICE
授权对象的哈希与存储在 table 记录中的哈希进行比较usobhash
:
我还发现,该功能模块AUTH_TRACE_CALC_HASH
使用来自 columns 的数据PGMID
,OBJECT
并OBJ_NAME
在 tableusobhash
作为输入来生成哈希,然后将其存储在 column 中NAME
。
到目前为止,每当我想授予用户/角色访问 OData 服务的权限时,我都需要知道这个哈希值。要获取哈希,我要么检查 usobhash 表,要么手动执行AUTH_TRACE_CALC_HASH
,然后在我将授权对象分配给 transaction 中的授权角色时输入哈希pfcg
。我想必须有一种更简单、更“官方”的方式来做到这一点。我的方法感觉像是一种肮脏的解决方法,但我找不到任何有关如何正确执行此操作的文档。
tl;dr如何在不调试或搜索相关条目的情况下设置S_SERVICE
授权对象?AUTH_TRACE_CALC_HASH
usobhash