86519c51d6ebd59a26a1eae9fb246d099271a361
`info` 在 NW 7.40 上对 DDIC 类型恒报「查询失败: HTTP 406」,实测根因:
回退分支把 Accept 从专属媒体类型换成 `application/xml`,而该值在本系统同样返回 406,
等于没回退。真实客户端 `_headers()` 的 Accept 默认值本就是 `*/*`,此处相当于
把可用默认值覆盖成了失效值。
实测(S4T / NW 7.40,structure ZMM_BIP_001_HEADER):
application/vnd.sap.adt.ddic.structures.v1|v2|v3+xml → 406
application/xml → 406
*/* → 200
修后真机验证:`info --name ZMM_BIP_001_HEADER --type structure` 查询成功。
已知限制(非本修复引入):NW 7.40 的 DDIC 端点在 */* 下只返回 blueSource,
不含 description/packageRef,故 structure/tabletype 等类型的「描述/开发包/负责人」
为空。需这些字段时用 read-table 查 DD02T(描述)/ TADIR(开发包)。
(objectproperties 端点在本系统返回 422,不可用。)
测试:
- 新增 test_info_406_fallback_accept_is_wildcard —— 断言回退 Accept 必须为 */*,
且明确排除 application/xml。**必须用 side_effect 在请求发生时快照 headers**:
cmd_info 重试时复用同一个 hdrs dict,直接读 call_args_list[i].kwargs["headers"]
会因别名而全部显示最后一次赋的值,令该断言永远无法成立。
- 三个测试文件的 _make_client() 由 `_headers.return_value={...}`(共享 dict)
改为 side_effect 返回新 dict,与真实实现一致——原写法会让被记录的 headers
全部指向同一对象,使 header 断言失真。
- 反向验证:把回退改回 application/xml → 测试报红 AssertionError('application/xml' != '*/*')。
699 tests OK。
SAP-CLI-SKILL
🎯 项目价值
SAP-CLI-SKILL 是一个让 AI 助手直接操作 SAP ABAP 系统的技能。
核心价值:
- AI 驱动的 SAP 开发:AI 助手可以读取、分析、修改 ABAP 开发对象
- 代码质量自动化:自动化审计 ABAP 代码,发现潜在问题
- 开发效率提升:AI 帮助完成重复性开发任务
- 持续集成支持:集成到 CI/CD 流程,实现代码质量门禁
适用场景:
- SAP ABAP 代码审计和质量检查
- 批量对象处理和转换
- AI 辅助开发和重构
- 自动化测试和代码审查
🚀 快速启动
一键安装
请帮我安装 sap-cli-skill: https://gitee.com/markwury168/sap-cli-skill/blob/master/INSTALL.md
复制给你的 Agent,几分钟后它就安装好了。
📚 详细文档
- INSTALL.md - 完整安装指南
- SKILL.md - AI Agent 使用指南
- references/ - 技术文档
- docs/RELEASING.md - 开发与发布
🗂 本仓是唯一来源
本仓同时是技能分发包与工具源码仓——SKILL.md 手工维护,工具源码在
assets/,测试在 tests/(692 例)。原 sap-cli 源码仓已于 2026-09-11 归档。
pip install -e "./assets[dev]"
python -m unittest discover -s tests -p "test_*.py"
当前版本: 2.5.1
维护者: SwiftCode Creative Technology
Languages
Python
96.8%
ABAP
3.2%