chore: 同步至源码 2.5.1 — SKILL.md 改为构建产物 + 工具代码刷新
SKILL.md(唯一来源 = sap-cli/skill-src/SKILL.md.tmpl):
- 本仓 SKILL.md 自此为构建产物,勿手工编辑;手改后再构建会被漂移护栏拦下
- 并入模板独有内容:调用方式节 + 补齐 parser 真实命令(clone/enhancement/
history/unit-test/unlock/transport create,原表只 9 个,实际 31 个)
- 版本号改为 {{VERSION}} 注入(原字面量停在 v2.2.1/v2.3.0,与工具实际版本脱节)
- 修 1 处违反铁律 5 的示例(--path ./src → ./src/TMP/class/)
assets/(工具代码,此前严重过时):
- 9 个文件与源码不一致,scanner.py 尤甚:3818B → 6664B
- 修复前从本仓装出的工具**不支持三层 src 结构**,铁律 5 实际跑不通
- transport.py 反向漂移(分发版多 transport create,源码无)已随源码回迁对齐
VERSION 2.5.1;references/ 三份规则与源码一致(无差异)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: sap-cli
|
||||
description: "SAP ABAP ADT CLI for AI agents. Trigger when: operating ABAP objects, syncing code to/from SAP, managing transports, querying DDIC, running ABAP programs, reading SAP tables, or any SAP development task via terminal."
|
||||
description: "Use when you need to operate SAP ABAP development objects — syncing code, querying metadata, managing transports, reading tables, or any task involving SAP ADT REST API. Trigger on: ABAP objects, SAP development, transport requests, DDIC types, SE11/SE16N/SE38/SE80 equivalents, 'sync to SAP', 'download from SAP', 'activate ABAP', 'read SAP table'. NOT for developing sap-cli itself."
|
||||
version: "2.5.1"
|
||||
author: WuRangyu
|
||||
license: MIT
|
||||
@@ -17,6 +17,21 @@ triggers:
|
||||
|
||||
Python CLI wrapping the SAP ADT REST API. Manages the full lifecycle of ABAP development objects from the terminal. Core loop: **download → local edit → sync back to SAP**.
|
||||
|
||||
## 调用方式
|
||||
|
||||
```bash
|
||||
cd <SKILL_DIR>/assets && python main.py <command> [options]
|
||||
```
|
||||
|
||||
全局参数(置于命令之前):
|
||||
|
||||
| 参数 | 说明 |
|
||||
|------|------|
|
||||
| `--profile <name>` | 使用指定配置 profile |
|
||||
| `--verify-ssl` | 启用 SSL 验证(默认关闭) |
|
||||
|
||||
安装与配置见同目录 `INSTALL.md`。
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
@@ -37,7 +52,7 @@ python main.py read-table --name ZMY_TABLE --fields "F1,F2" --where "F1 = 'X'" -
|
||||
|
||||
## Command Reference
|
||||
|
||||
Global params (before command): `--profile <name>`, `--verify-ssl`. Optional params in `[ ]`.
|
||||
Optional params in `[ ]`. 各命令参数以 `python main.py <cmd> --help` 为准。
|
||||
|
||||
| Category | Command | Key Parameters |
|
||||
|----------|---------|----------------|
|
||||
@@ -49,20 +64,24 @@ Global params (before command): `--profile <name>`, `--verify-ssl`. Optional par
|
||||
| CRUD | `activate` | `--name --type --corr_nr` (built-in NW 7.40 double-activate) |
|
||||
| CRUD | `upload` | `--name --type --path --corr_nr` (lock→write→unlock only; no check/activate) |
|
||||
| CRUD | `syntax-check` | `--name --type` (remote object; no upload/activate) |
|
||||
| CRUD | `unlock` | `--name --type --lock-handle` (释放 delete 后残留的 enqueue 锁) |
|
||||
| Batch | `init` | `--path` |
|
||||
| Batch | `refresh` | `--path` |
|
||||
| Batch | `sync --all` | `--path --corr_nr [--dry-run]` |
|
||||
| Batch | `analyze` | `--path` (dependency analysis) |
|
||||
| Batch | `clone` | `--name --type --from <profile> --to <profile> [--corr_nr]` (跨系统克隆对象) |
|
||||
| Query | `show-table` | `--name` (SE11 structure) |
|
||||
| Query | `read-table` | `--name [--fields --where --max-rows]` (SE16N data) |
|
||||
| Query | `list` | `--type [--package --prefix]` |
|
||||
| Query | `whereused` | `--name --type` |
|
||||
| Query | `search` | `--query` |
|
||||
| Query | `diff` | `--name --type --path` (local vs SAP) |
|
||||
| Query | `history` | `--name --type` (对象版本历史) |
|
||||
| Transport | `transport list` | — |
|
||||
| Transport | `transport info` | `--corr_nr` |
|
||||
| Transport | `transport release` | `--corr_nr` |
|
||||
| Transport | `transport objects` | `--corr_nr` |
|
||||
| Transport | `transport create` | `--description` (新建传输请求) |
|
||||
| Config | `config show` | — |
|
||||
| Config | `config list-profiles` | — |
|
||||
| Config | `config set` | `<key> <val>` |
|
||||
@@ -70,6 +89,8 @@ Global params (before command): `--profile <name>`, `--verify-ssl`. Optional par
|
||||
| Other | `run-program` | `--name` (SA38) |
|
||||
| Other | `check` | `--name --type` (ATC) |
|
||||
| Other | `format` | `--name --type` (Pretty Printer) |
|
||||
| Other | `enhancement` | `--name --type` (增强) |
|
||||
| Other | `unit-test` | `--name --type` (ABAP Unit 测试) |
|
||||
| Other | `package create` | `--name` |
|
||||
| Other | `cds download` | `--name --path` |
|
||||
| Other | `scaffold` | `--name --template <t>` — alv-report, bapi-wrapper, interface-class, data-model |
|
||||
@@ -80,7 +101,7 @@ Batch sync dependency order: `domain(10) → dataelement(20) → table(30) → t
|
||||
|
||||
Step-wise sync for lock-heavy automation — split the atomic `sync` when lock conflicts are frequent; upload now, verify, activate later:
|
||||
```bash
|
||||
python main.py upload --name ZMY_CLASS --type class --path ./src/zmy_class.abap --corr_nr DEVK901XXX # lock→write→unlock only
|
||||
python main.py upload --name ZMY_CLASS --type class --path ./src/TMP/class/zmy_class.abap --corr_nr DEVK901XXX # lock→write→unlock only
|
||||
python main.py syntax-check --name ZDEPENDENT_REPORT --type report # verify dependents (no upload)
|
||||
python main.py activate --name ZMY_CLASS --type class --corr_nr DEVK901XXX # activate once clean
|
||||
```
|
||||
@@ -297,7 +318,7 @@ Automation fallbacks — exhaust in order before requesting any SAP GUI action:
|
||||
- **Give the complete change checklist at once** — do the full comparison first (`show-table` vs code field refs); never surface issues incrementally.
|
||||
- **System-table writes** — 4-step authorization: explain *** → list exact statements → state risks & alternatives → await explicit approval.
|
||||
|
||||
## NW 7.40 Compatibility (E2E verified — v2.3.0)
|
||||
## NW 7.40 Compatibility (E2E verified — 2.5.1)
|
||||
|
||||
Full matrix: `docs/NW740-COMPATIBILITY.md`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user