ABAP CDS视图字段全为主键如何设为非键?CAST引发SE11键异常
解决CDS视图中CAST转换字段自动设为键的问题
核心原因
当在CDS视图里使用CAST转换字段时,ABAP CDS默认会将这些转换后的字段标记为键字段——因为系统无法自动识别转换后字段的原始键属性。如果不主动指定非键属性,所有经过CAST处理的字段都会被默认设为主键,最终导致SE11中所有字段显示为键字段。
具体解决步骤
- 在CDS视图的DDL代码里,给需要设为非键的字段(包括CAST转换后的字段)显式添加
@Key: false属性。 - 示例代码:
@EndUserText.label: '示例CDS视图' define view ZMY_CDS_VIEW as select from sflight { key carrid, // 保留原始表的键字段 key connid, // 保留原始表的键字段 cast(fldate as char(10)) as fldate_char @Key: false, // 转换后字段设为非键 price @Key: false, // 原始非键字段显式标记 currency @Key: false } - 注意:如果CDS视图基于多表关联,同样需要对每个非键字段(无论是否经过转换)显式声明
@Key: false,避免系统自动将其判定为键字段。
验证方式
修改DDL代码后激活视图,再通过SE11查看字段属性,此时只有你指定key的原始键字段会保留键属性,其他字段(包括CAST转换后的)都会显示为非键。
内容的提问来源于stack exchange,提问作者Arun Kamath
相关产品推荐
相关产品推荐

