Files
sap-cli-skill/docs/差距分析报告.md
T
吴让宇 c5905a5b1e refactor: 本仓升为唯一源(原 sap-cli 源码仓归档)
方向反转:此前 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 重写为单源开发流程。
2026-09-11 00:40:15 +08:00

9.6 KiB
Raw Blame History

sap-cli 差距分析报告:ABAP 开发对象 × 已实现功能

项目: sap-cli — 用你喜欢的编辑器写 ABAP 当前版本: v2.1.0 | 25 命令 | 16 对象类型 编制日期: 2026-06-17 目的: 识别遗漏功能,为下一轮大优化提供决策依据


一、ABAP 开发对象完整全景

SAP 系统中可开发的 ABAP 对象远不止 16 种。按照 SAP Repository 结构,完整分类如下:

1.1 已支持(16 种)

类别 类型 覆盖率
程序 report · include · functiongroup 3/5
面向对象 class · interface 2/2
函数 function 1/1
DDIC 基础 domain · dataelement · table · structure · tabletype 5/8
DDIC 扩展 cdsview · view · messageclass · searchhelp · lockobject 5/12

1.2 未支持但 ADT 有端点(优先级最高)

优先级 类型 ADT 端点 使用场景
CDS Access Control (DCL) /sap/bc/adt/ddic/dclsources CDS 权限控制,与 CDS View 配套
Behavior Definition (BDEF) /sap/bc/adt/ddic_behaviordefinitions RAPABAP RESTful Application Programming Model)核心
Metadata Extension (DDLX) /sap/bc/adt/ddic/metadataextensions CDS View 元数据扩展(UI 注解)
Type Group (TYPE-POOL) /sap/bc/adt/programs/typegroups 常量/类型集中定义,大量老项目仍在用
AMDP 类 复用 class 端点 HANA 数据库存储过程(标记接口 IF_AMDP_MARKER
SICF Service /sap/bc/adt/discovery/services HTTP HandlerAPI 开发必备
Enhancement Spot /sap/bc/adt/enhancements BAdI 定义 + 增强,Clean Core 依赖
BAdI Implementation 复用 class/enhancement 端点 标准对象增强,实施项目高频
Number Range Object /sap/bc/adt/ddic/nrranges 编号范围,每个业务模块都用
XSLT Program /sap/bc/adt/transformations XML 转换,接口开发场景
Web Dynpro 专用端点 传统 Web UI(逐渐淘汰但存量巨大)
Gateway Service (SEGW) /sap/bc/adt/sadl/... OData 服务定义

1.3 未支持且 ADT 无标准端点(SAP GUI 独占)

类型 SE80 类别 实现路径
Screen / Dynpro Dialog Programming 需 RFC 或 GUI Scripting
GUI Status / Title Dialog Programming 需 RFC
Transaction Code Dictionary 需 RFC(无 ADT 端点)
Report Variant Programs 需 RFCRS_VARIANT_CONTENTS
SAPScript Form Forms 需 RFC
SmartForm Forms 需 RFC(无 ADT 端点)
Adobe Form (SFP) Forms 需 RFC
Workflow Template Business Obj 需 RFC
Business Object (BOR) Business Obj 需 RFC
Append Structure DDIC ADT 可能间接支持

二、已实现功能 × 对象类型 完整矩阵

图例: 完全支持 ⚠️ 部分支持/有 bug 不支持 不适用(容器对象)

操作 \ 类型 report class func funcgrp intf domain datael table struct tbltype include cdsview msgcls view srchhelp lockobj
create ⚠️ ⚠️
download ⚠️
sync ⚠️
delete
activate
info ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️

关键结论create 是最大缺口 — 6 种已注册类型完全无法通过通用命令创建


三、已实现命令全景(25 个顶层命令)

类别 命令 状态
对象 CRUD create · download · sync · upload · delete · info · activate
代码质量 check(ATC) · format(PrettyPrinter) · diff · syntax-check
搜索浏览 list · whereused · search · show-table · read-table
批量管理 init · refresh · sync --all · analyze · scaffold
传输/包 transport(list/info/release/objects) · package(create/info/list)
CDS cds(download/sync/create)
远程执行 run-program
配置/认证 config(show/set/list-profiles) · auth(login/logout/status)

四、已发现的 Bug 和缺陷

🔴 P0 — 功能性 Bug

# 问题 影响 位置
1 CDS View 端点不一致 download --type cdsview 可能 404 types.py 用 /dds/ddl/sources/cds.py 用 /ddic/ddlsources/
2 create 不支持 6 种类型 include/messageclass/view/searchhelp/lockobject 无法创建 client/_ddic.py::_build_create_body 直接 ValueError

🟡 P1 — 功能降级

# 问题 影响 位置
3 info 的 Accept 头映射缺 7 种类型 7 种类型查询可能返回 406 或数据不完整 commands/crud.py::INFO_ACCEPT
4 list/whereused/search 的类型码缺 2 种 searchhelp/lockobject 过滤可能不生效 commands/search.py::_TYPE_FILTER_MAP
5 tabletype 创建必须传 --definition 无法用默认模板快速创建 client/_ddic.py::_create_ddic

🟢 P2 — 设计限制(可接受)

# 问题 说明
6 functiongroup/tabletype/messageclass/searchhelp/lockobject 无源码操作 has_source=False,设计如此
7 NW 7.40 激活空响应 已有 double-activate 变通,失败提示去 SE09
8 DDIC 源码下载返回 XML/DDL 而非 ABAP 语义差异,非 bug

五、未实现的功能命令

优先级 命令 功能 实现难度 价值
clone 从一个系统下载 → 上传到另一个系统(跨系统迁移) 极高
history 查看 SAP 端版本历史 + 版本对比
enhancement Enhancement Spot / BAdI 增强管理
number-range 编号范围管理(创建/查看/调整)
where-used --reverse 反向 Where-Used(谁引用了我)
unit-test 触发远程 ABAP Unit 测试
variant 报表变体管理(创建/复制/传输)
tcode 事务码管理(创建/分配)
aunit ABAP Unit 测试执行和结果查看
bapi BAPI 浏览和调用(测试用)
stms 传输系统管理(STMS 等价)
debug 远程调试辅助(设置断点、读取 dump)
dump ST22 Dump 分析(读取/搜索/过滤)

六、优化优先级建议

Phase 1 — 修复 Bug + 补齐缺口(v2.2)

任务 预估工时 影响
修复 CDS View 端点不一致 2h 消除 P0 Bug
补齐 create 对 5 种类型的支持 4h include/messageclass/view/searchhelp/lockobject
补齐 info Accept 头映射 1h 消除 P1 降级
补齐 search 类型码映射 0.5h 消除 P1 降级

Phase 2 — 扩展对象类型(v3.0)

任务 预估工时 价值
Type Group 支持 2h 老项目兼容
Number Range Object 支持 3h 业务模块必需
Enhancement Spot / BAdI 支持 8h Clean Core 实施必备
CDS Access Control (DCL) 支持 4h RAP 开发配套
Behavior Definition (BDEF) 支持 6h RAP 核心
SICF Service 支持 4h API 开发

Phase 3 — 新增命令(v3.1+

任务 预估工时 价值
clone(跨系统迁移) 4h 多系统项目效率
history(版本管理) 6h 代码审计
unit-test / aunit 8h 测试自动化
variant 4h 变体管理
dumpST22 分析) 4h 异常排查

七、总结

当前覆盖度

ABAP 开发对象全谱系:
  已支持:16 种
  ADT 可支持但未实现:~12 种(高价值)
  SAP GUI 独占:~10 种(需 RFC)
  总覆盖率:约 42%(已支持 / ADT 可支持范围)

核心矛盾

设计理念是「用你喜欢的编辑器写 ABAP」,但目前的 16 种对象类型主要覆盖了传统 ABAP 开发场景(程序 + DDIC)。

现代 ABAP 开发场景(S/4HANA / RAP / API)覆盖不足

  • CDS 权限控制(DCL)— RAP 配套缺失
  • Behavior DefinitionBDEF)— RAP 核心缺失
  • Enhancement Spot / BAdI — Clean Core 实施核心缺失
  • SICF Service — API 开发缺失

建议的演进方向

Phase 1 (v2.2): 修复 Bug + 补齐 create 缺口     ← 2 天
Phase 2 (v3.0): 扩展对象类型(RAP + Enhancement  ← 1-2 周
Phase 3 (v3.1): 新增命令(clone/history/unit-test)← 1 周
Phase 4 (v4.0): MCP 服务器模式(AI 集成)         ← 未来

从「能用的工具」到「不可替代的开发平台」,下一步的关键是覆盖现代 ABAP 开发场景