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 |
RAP(ABAP 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 Handler,API 开发必备 |
| ⭐⭐ |
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 |
需 RFC(RS_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 |
变体管理 |
dump(ST22 分析) |
4h |
异常排查 |
七、总结
当前覆盖度
核心矛盾
设计理念是「用你喜欢的编辑器写 ABAP」,但目前的 16 种对象类型主要覆盖了传统 ABAP 开发场景(程序 + DDIC)。
现代 ABAP 开发场景(S/4HANA / RAP / API)覆盖不足:
- ❌ CDS 权限控制(DCL)— RAP 配套缺失
- ❌ Behavior Definition(BDEF)— RAP 核心缺失
- ❌ Enhancement Spot / BAdI — Clean Core 实施核心缺失
- ❌ SICF Service — API 开发缺失
建议的演进方向
从「能用的工具」到「不可替代的开发平台」,下一步的关键是覆盖现代 ABAP 开发场景。