docs(log): @转义强制新OpenSQL语法新坑(字段逗号+INTO前置, 2026-08-07实测)
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "NW 7.40 Open SQL @ 转义一致性错误"
|
title: "NW 7.40 Open SQL @ 转义一致性错误"
|
||||||
created: 2026-08-05
|
created: 2026-08-05
|
||||||
updated: 2026-08-05
|
updated: 2026-08-07
|
||||||
type: error
|
type: error
|
||||||
tags: [adt, sap, error, nw740, open-sql, syntax]
|
tags: [adt, sap, error, nw740, open-sql, syntax]
|
||||||
adt_endpoint: syntax-check
|
adt_endpoint: syntax-check
|
||||||
@@ -87,3 +87,30 @@ SELECT * FROM ztable WHERE field = @lv_var INTO TABLE @lt_data. " 全部用@
|
|||||||
## 相关错误
|
## 相关错误
|
||||||
|
|
||||||
- [[adt-set-source-500]] — 传输请求无对象导致写入失败
|
- [[adt-set-source-500]] — 传输请求无对象导致写入失败
|
||||||
|
|
||||||
|
## 2026-08-07 实测补充:全 @ 场景强制 new OpenSQL 语法(新坑)
|
||||||
|
|
||||||
|
**症状**:已修复 @ 一致性(INTO 目标补 @)后,又报新错误:
|
||||||
|
```
|
||||||
|
If host variables are escaped using @, new OpenSQL must used
|
||||||
|
```
|
||||||
|
|
||||||
|
**根因**:@ 转义属于"新 OpenSQL"语法体系。一旦语句用了 @,整条语句必须完全遵循新 OpenSQL 语法规则:
|
||||||
|
- **字段列表必须逗号分隔**(旧式空格分隔报错):`SELECT carrid, connid, fldate FROM sflight`
|
||||||
|
- **INTO 子句前置**(在 FROM/WHERE 之前):`SELECT f1, f2 FROM tab INTO TABLE @lt_data WHERE ...`
|
||||||
|
- 旧式写法 `SELECT carrid connid fldate FROM sflight INTO TABLE lt_data`(无逗号)在全 @ 场景下报错
|
||||||
|
|
||||||
|
**验证示例(ZBC400_REVIEW_DEMO 2026-08-07 实测,syntax-check 全绿)**:
|
||||||
|
```abap
|
||||||
|
" ✅ 正确 — 新 OpenSQL 全 @:字段逗号分隔 + INTO 前置 + 全部 @
|
||||||
|
SELECT carrid, connid, fldate, seatsmax, seatsocc
|
||||||
|
FROM sflight
|
||||||
|
INTO TABLE @gt_result
|
||||||
|
WHERE carrid IN @s_carrid
|
||||||
|
AND fldate IN @s_date.
|
||||||
|
|
||||||
|
" ❌ 同语句 INTO 不带 @:When escaped, all host variables must be escaped using @
|
||||||
|
" ❌ 字段无逗号(旧式空格分隔):If host variables are escaped using @, new OpenSQL must used
|
||||||
|
```
|
||||||
|
|
||||||
|
**经验**:评审/优化代码时,只要目标系统是 7.40 SP05+ 且采用 @ 风格,直接按新 OpenSQL 规范写(字段逗号分隔 + INTO 前置 + 全 @),一次通过。质检判断"INTO TABLE 目标是豁免位置"**不成立**(2026-08-07 实测推翻),@ 必须全局一致。
|
||||||
|
|||||||
Reference in New Issue
Block a user