ABAP SQL子查询报错:‘SELECT’未在ABAP字典中定义为表/视图
错误原因排查与解决方法
错误原因
ABAP SQL要求内联子查询(括号中的SELECT语句)必须指定别名,你当前的SQL里子查询没有别名,系统会误将括号内的SELECT识别为要查询的表/视图名称,而ABAP字典里不存在名为SELECT的对象,因此抛出该错误。另外你还存在笔误:where sire = 1中的sire应该是子查询里的row字段,这也是后续会触发的错误。
解决方法
- 给内联子查询添加别名(比如
sub) - 修正
where条件里的字段名,将sire改为子查询的别名字段;同时row是ABAP关键字,建议换个字段名(比如rn)避免语法冲突
修正后的SQL语句
select * from ( select fleet_num , cntrr , row_number() over (partition by fleet_num order by cntrr desc) as rn from zmbs_v_km ) as sub where sub.rn = 1
补充说明:如果你的ABAP版本支持最新语法,as关键字可以省略,但为了可读性和兼容性,建议保留。用非关键字作为字段别名能避免不必要的语法报错。
内容的提问来源于stack exchange,提问作者En TPZ
相关产品推荐
相关产品推荐

