SQL截取NODENAME字段前8位后内容时报括号不允许错误如何解决
问题原因与解决方案
报错触发原因
- ABAP Open SQL 对内置函数的语法有严格要求:函数名和左括号之间不允许存在空格,你代码中
SUBSTRING (NODENAME...)里SUBSTRING和左括号中间的空格是触发本次报错的直接原因。 - 你的SQL语句顺序不符合ABAP Open SQL规范:
INTO子句需要放在FROM子句之后、WHERE子句之前,你当前将INTO写在WHERE筛选条件之后属于语法错误。 - 额外业务逻辑错误:你原有代码中
SUBSTRING的第三个参数写为LENGTH(NODENAME) - 1,不符合你剔除前8个字符的需求,会导致最终结果多截断了尾部7个字符。
修正后代码
SELECT SUBSTRING(NODENAME,9) FROM RSMHIERNODE INTO TABLE @lt_commentdata WHERE HIEID = 'HRJPUD'.
代码说明
ABAP Open SQL 的SUBSTRING函数支持省略第三个长度参数,省略后会默认从指定的起始位置(这里是第9位)截取到字符串末尾,不需要手动计算剩余长度,写法更简洁也不会出现长度计算错误。
内容的提问来源于stack exchange,提问作者emilie
相关产品推荐
相关产品推荐

