feat: bgRFC/FM 支撑能力 + ADT 后缀剥离与 CLAS 激活修复(B1 配套)
新增能力: - remote-enable 子命令:设置函数模块处理类型为远程启用(bgRFC/RFC 执行体必需)。 实现要点均按实机验证:PUT fmodule:processingType="rfc"(枚举值仅小写 rfc 有效, remoteEnabled/remote/RFC 等均 400);lockHandle 走 query 参数(放 header 报 ParameterNotFound);PUT 后 GET 复核回显;DDIC 结构参数才可远程启用(类本地类型 报"针对 RFC 不允许使用类或接口的类型")。 - create --type functiongroup 透传 --package / --corr_nr(此前 package 被静默写成 $TMP, 导致函数组无法归目标包)。 修复: - activate 请求体补重复引用:ADT CLAS 激活端点对 objectReferences 只有 1 个引用时 返回 HTTP 200 + 空 body 且不执行激活;引用数 ≥2 才真正激活(同对象重复亦可)。 - scanner 剥离 ADT 文件后缀(xxx.clas.abap 解析错误)。 守卫测试: - tests/unit/test_bgrfc_support.py(17 例):函数组 package 透传、processingType 助手、 remote-enable 命令(含 lockHandle 走 query/小写 rfc/错误透传/复核失配判失败)、 函数 URI 组装不得用组名冒充模块名。 - test_activate.py 增加激活请求体引用数守卫;test_repo_guards.py 增加后缀剥离守卫。 测试:tests/unit 676 + tests/test_sapcli.py 69 = 745 全绿 (PYTHONPATH=assets python -m unittest discover -s tests/unit -t tests)
This commit is contained in:
@@ -90,6 +90,7 @@ Optional params in `[ ]`. 各命令参数以 `python main.py <cmd> --help` 为
|
||||
| Other | `check` | `--name --type` (ATC) |
|
||||
| Other | `format` | `--name --type` (Pretty Printer) |
|
||||
| Other | `enhancement` | `--name --type` (增强) |
|
||||
| Other | `remote-enable` | `--name <组/模块> [--corr_nr]` (FM 远程启用/bgRFC 执行体) |
|
||||
| Other | `unit-test` | `--name --type` (ABAP Unit 测试) |
|
||||
| Other | `package create` | `--name` |
|
||||
| Other | `cds download` | `--name --path` |
|
||||
@@ -120,6 +121,28 @@ python main.py activate --name ZMY_CLASS --type class --corr_nr DEVK901XXX
|
||||
|
||||
**Function naming**: must use `group/module`, e.g. `ZMY_FGROUP/Z_MY_FUNC`.
|
||||
|
||||
### Function Module Remote-Enable(bgRFC/RFC 执行体)
|
||||
|
||||
bgRFC 的执行体必须是**远程启用的函数模块**。ADT 建 FM 默认 `processingType=normal`,
|
||||
语法检查**不校验**此标志,必须显式置 `rfc` 并以 `TFDIR.FMODE='R'` 复核。
|
||||
|
||||
```bash
|
||||
python main.py remote-enable --name ZINT_FG_INTEGRATE/ZINT_FM_LOG_COMMIT --corr_nr DEVK901376
|
||||
```
|
||||
|
||||
命令内部闭环(锁定→GET 原 XML→改 `processingType=rfc`→PUT→GET 复核→解锁),
|
||||
仅改属性,不激活、不查 TFDIR。关键事实(本机 NW 7.52 实测):
|
||||
|
||||
| 要点 | 事实 |
|
||||
|------|------|
|
||||
| `processingType` 枚举值 | 只认小写 `rfc`;`remoteEnabled`/`remote`/`RFC` 等值全 400 |
|
||||
| `lockHandle` 传递 | 必须走 query 参数 `?lockHandle=`;放 header 报 `ExceptionParameterNotFound` |
|
||||
| 参数类型限制 | 只允许 DDIC 对象(结构含 STRING 列已验证);类本地类型 → HTTP 500「针对 RFC 不允许使用类或接口的类型」;表类型参数需 TTYP 端点(本机 404) |
|
||||
| FM 源码限制 | `FUNCTION` 与 `ENDFUNCTION` 之间不得放 `*"` 参数注释块(ADT 拒绝「Parameter comment blocks are not allowed」) |
|
||||
| 最终确认 | `TFDIR.FMODE='R'` 留给调用方 `read-table` 复核(本命令不查) |
|
||||
|
||||
—— 落款:吴让宇
|
||||
|
||||
## ⚠️ Constraints (HARD RULES — DO NOT VIOLATE)
|
||||
|
||||
Full rules: `references/sap-tool-constraints.md`. Violations are intercepted by hooks.
|
||||
|
||||
Reference in New Issue
Block a user