方向反转:此前 SKILL.md 是「模板渲染产物」、sap-cli 是源;现 sap-cli 归档, sap-cli-skill 承接开发与分发,SKILL.md 回归手工维护的正本。 迁移(来自 sap-cli,共 104 文件): - tests/ 692 例测试(15 个文件的内联 sys.path 改指 assets/) - openspec/ SDD 规格与归档变更(42 文件) - docs/ 开发文档与 ADT 原理(含 dev/CLAUDE.md、AGENTS.md) - .claude/ rules 副本 + settings.json(供 Claude Code) - .github/ .hermes/ .pre-commit-config.yaml .editorconfig CLAUDE.md - scripts/ 保持仅 setup.py(pack_skill.py 已随旧仓归档,不迁) 修复(迁移暴露的真实缺陷): - assets/pyproject.toml 的 build-backend 写作 `setuptools.backends._legacy:_Backend`, 该模块在 setuptools 中不存在 → `pip install -e` 从来装不上。改为 build_meta。 实测:临时 venv 安装成功,sap-cli --help 正常列出 31 个命令 - pyproject readme 指向不存在的 assets/README.md(editable 安装会失败)→ 改内联文本 - pyproject urls 改指 sap-cli-skill 机制调整: - .github/workflows/ci.yml 适配 assets/ 布局;顶部注明该工作流仅 GitHub 执行, 本仓在 Gitee 不会自动跑 - pre-commit 增本地测试门禁(Gitee 上真正生效的那道) - .gitignore 合并旧仓完整规则(保留 log/ 下 md 知识库入库,只忽略运行日志) - 大文件上限 100KB→1MB(架构图 512KB) 守卫测试 tests/unit/test_repo_guards.py(10 → 18 例): - SKILL.md 须记录 parser 全部 CLI 命令 / 铁律 1-5 须为真实小节标题 / 示例不得违反铁律 5 - references/ 规则齐备;.claude/rules 与 references 必须一致(实测抓到一次真实漂移) - VERSION == sapcli.__version__ == README 版本 - 仓内不得再出现 pack_skill.py / skill-src(防废弃流程回潮) 698 tests OK;editable 安装与 CLI 入口经临时 venv 实测通过。 docs/RELEASING.md 重写为单源开发流程。
73 lines
3.9 KiB
Markdown
73 lines
3.9 KiB
Markdown
# NW 7.40 兼容性矩阵
|
||
|
||
> 最后更新:2026-07-09
|
||
> 测试系统:support.learningleader.com.cn (NW 7.40)
|
||
> 测试方式:真实 SAP 系统端到端 create→info→delete→download→sync
|
||
|
||
## 背景
|
||
|
||
sap-cli 封装 SAP ADT REST API,但不同 SAP NetWeaver 版本的 ADT 端点覆盖范围差异显著。本文件记录 v2.2.0 在真实 NW 7.40 系统上的验证结果,供用户和开发者参考。
|
||
|
||
## 对象类型 × 操作 可用性矩阵
|
||
|
||
### ✅ 完整可用(全生命周期闭环)
|
||
|
||
| 类型 | create | info | delete | download | sync | 说明 |
|
||
|------|:------:|:----:|:------:|:--------:|:----:|------|
|
||
| report | ✅ | ✅ | ✅ | ✅ | ✅ | 报表程序 |
|
||
| class | ✅ | ✅ | ✅ | ✅ | ✅ | ABAP 类 |
|
||
| interface | ✅ | ✅ | ✅ | ✅ | ✅ | ABAP 接口 |
|
||
| function | ✅ | ✅ | ✅ | ✅ | ✅ | 函数模块(含函数组自动创建) |
|
||
| functiongroup | ✅ | ✅ | ✅ | — | — | 函数组(容器对象,无源码) |
|
||
| include | ✅ | ✅ | ✅ | ✅ | ✅ | Include 程序 |
|
||
|
||
> **这 6 种类型构成 NW 7.40 上 sap-cli 的核心价值闭环**:download → 本地编辑 → sync。
|
||
|
||
### ⚠️ 部分可用(仅 CRUD,无源码编辑)
|
||
|
||
| 类型 | create | info | delete | download | sync | 说明 |
|
||
|------|:------:|:----:|:------:|:--------:|:----:|------|
|
||
| domain | ✅ | ✅ | ✅ | ❌ | ❌ | 源码端点 /source/main 在 NW 7.40 不存在 |
|
||
| dataelement | ✅ | ✅ | ✅ | ❌ | ❌ | 同上 |
|
||
|
||
> DDIC 对象在 NW 7.40 上以 XML 形式存储于对象 URI 本身,没有独立的 source/main 端点。这是 NW 7.50+ 才引入的特性。即便 Eclipse ADT 在 7.40 上也无法编辑 DDIC 源码——这不是 sap-cli 的缺陷。
|
||
|
||
### ❌ 不可用(NW 7.40 端点缺失)
|
||
|
||
| 类型 | 失败原因 | HTTP 状态码 | 代码状态 |
|
||
|------|----------|:-----------:|----------|
|
||
| table | 集合端点 POST Content-Type 不匹配 | 415 | 代码已写,待更正 |
|
||
| structure | 集合端点 POST Content-Type 不匹配 | 415 | 代码已写,待更正 |
|
||
| tabletype | DDIC tabletypes 集合端点不存在 | 404 | 代码已写,端点缺失 |
|
||
| view | 媒体类型不支持 | 415 | 代码已写,端点限制 |
|
||
| messageclass | handler 未注册 | 404 | 代码已写,端点缺失 |
|
||
| searchhelp | 端点不存在 | 404 | 代码已写,端点缺失 |
|
||
| lockobject | 端点不存在 | 404 | 代码已写,端点缺失 |
|
||
| cdsview | DDL source 端点不存在 | 404 | 代码已写,端点缺失 |
|
||
|
||
> **判定原则**:这些类型的 `_build_create_body` XML 结构代码已就位,但 NW 7.40 的 ADT 端点层就不通。验证方式——如果是 XML 结构错误,SAP 会返回 400 校验消息;而这 8 种类型返回的都是 404/415(端点不存在/媒体类型不支持),请求未到达 XML 解析。需在 S/4HANA 或更高 NW 版本上验证。
|
||
|
||
## 其他命令的版本兼容性
|
||
|
||
| 命令 | NW 7.40 | 说明 |
|
||
|------|:-------:|------|
|
||
| list | ✅ | 对象列表 |
|
||
| whereused | ✅ | 引用查询 |
|
||
| search | ✅ | 源码搜索 |
|
||
| check (ATC) | ✅ | 代码检查 |
|
||
| format | ✅ | Pretty Printer |
|
||
| diff | ✅ | 本地 vs SAP 对比 |
|
||
| transport | ✅ | 传输请求管理 |
|
||
| package | ✅ | 包管理 |
|
||
| show-table | ✅ | 表结构查询(SE11) |
|
||
| read-table | ✅ | 表数据查询 |
|
||
| run-program | ✅ | 远程执行程序 |
|
||
| activate | ✅ | 对象激活 |
|
||
|
||
## 已知限制
|
||
|
||
1. **DDIC 对象 sync 不可用** — sync 流程依赖 `/source/main` 端点,NW 7.40 不支持。需 NW 7.50+。
|
||
2. **DDIC 对象 lock Accept 头** — `delete_object` 已修复(传 `application/vnd.sap.as+xml`),sync 流程未扩展(因 source/main 限制无意义)。
|
||
3. **table/structure create** — 返回 415(Content-Type 不匹配),需调研 NW 7.40 集合端点的正确 POST 方式。
|
||
4. **NW 7.40 激活空响应** — activate 可能返回空响应,已有 double-activate 变通机制,极端情况提示去 SE09 手动激活。
|