fix(ddic): Data Preview 400 报错携带 SAP 原文 + 纠正 SQL 方言结论(= 需两侧空格,非不支持)
This commit is contained in:
@@ -120,17 +120,19 @@ python main.py read-table --name ZSAPILOT_OBJ --max-rows 50
|
||||
- ❌ 把「S4T 演示机通过」表述为「CEM/生产验证通过」
|
||||
- ❌ 多会话并发操作同一批对象(派下一会话前先确认前一个已退出)
|
||||
|
||||
## 🚫 规则 9:read-table 的 `--where` 只能写 `IN` / `LIKE`
|
||||
## 🚫 规则 9:read-table 的 `--where` 运算符两侧必须留空格(推荐 `IN` / `LIKE`)
|
||||
|
||||
`read-table` 走 ADT Data Preview freestyle 解析器,只接受很窄的 SQL 子集。**用 `=` 会返回 400,并以未捕获异常打印堆栈**(不是友好报错)。
|
||||
`read-table` 走 ADT Data Preview freestyle 解析器。**运算符两侧无空格会 400**(`f='x'` 的 `=` 会被黏在值上,报 `A Boolean expression was expected`);有空格的 `=` 实测可用,但多值过滤仍推荐 `IN`。400 现已转为友好报错并携带 SAP 原文,不再打堆栈。
|
||||
|
||||
| 写法 | 实测结果 |
|
||||
|------|----------|
|
||||
| `--where "TABNAME IN ('ZMM_BIP_001_HEADER')"` | ✅ 200 |
|
||||
| `--where "OBJ_NAME LIKE 'ZMM_BIP%'"` | ✅ 200 |
|
||||
| `--where "TABNAME='ZMM_BIP_001_HEADER'"` | ❌ 400 `A Boolean expression was expected` |
|
||||
| `--where "TABNAME = 'ZMM_BIP_001_HEADER'"`(**有空格**) | ✅ 200(09-11 复测纠正旧结论) |
|
||||
| `--where "TABNAME='ZMM_BIP_001_HEADER'"`(无空格) | ❌ 400 `A Boolean expression was expected` |
|
||||
| `--fields "A,B"`(逗号分隔) | ✅ 200 |
|
||||
| `--fields "A B"`(空格分隔) | ❌ 400 要求逗号分隔 |
|
||||
| SELECT/WHERE 用不存在的列 | ❌ 400 `未知的列名称 "X" until runtime`(DD02T 无 `LANGUAGE`,语言列是 `DDLANGUAGE`) |
|
||||
|
||||
- 要按多个值过滤,**一次 `IN` 查完**,不要循环单点查。
|
||||
- 更多方言细节与元数据表对照见 `error-handling.md`「ADT Data Preview SQL 方言」。
|
||||
@@ -148,4 +150,4 @@ python main.py read-table --name ZSAPILOT_OBJ --max-rows 50
|
||||
7. ✅ 我按「本地改 → 同步 → 语法检查 → 循环至 0 错误 → 激活 → 测试」执行了吗?
|
||||
8. ✅ 我核实过被调函数/结构的存在性与签名了吗(E04/E05)?
|
||||
9. ✅ 同一任务只有一个开发者会话在跑吗?
|
||||
10. ✅ `read-table` 的 `--where` 我用的是 `IN` / `LIKE` 而不是 `=` 吗?`--fields` 是逗号分隔吗?
|
||||
10. ✅ `read-table` 的 `--where` 运算符两侧留空格了吗(`f = 'x'`,不是 `f='x'`)?多值过滤用 `IN` 了吗?`--fields` 是逗号分隔吗?
|
||||
|
||||
Reference in New Issue
Block a user