吴让宇 86519c51d6 fix(info): 406 回退值改为 */* —— 原值 application/xml 本身也返回 406
`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。
2026-09-11 00:53:02 +08:00
2026-06-20 14:38:09 +00:00

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,几分钟后它就安装好了。


📚 详细文档


🗂 本仓是唯一来源

本仓同时是技能分发包工具源码仓——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

S
Description
迁移自 Gitee
Readme MIT
873 KiB
Languages
Python 96.8%
ABAP 3.2%