You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:25:19