内容
# ABAPDocMCP — WRICEF 技术规格生成器
> **MCP 工具,从 SAP 传输请求中生成结构化的 ABAP 技术规格文档。**
> 通过 ADT REST API 连接到任何 SAP 系统,并生成可供审查的 Markdown 规格,涵盖所有 WRICEF 对象类型。
---
## 功能介绍
`GenerateWricefTechSpec` 是一个 MCP(模型上下文协议)工具,具有以下功能:
1. 从 SAP 系统中读取一个或多个 **传输请求号码**
2. 通过 ADT 获取传输对象及其 **源代码**
3. 分析源代码中的数据库表、函数模块调用、授权对象、错误处理模式和性能反模式
4. 生成具有多达 32 个可配置部分的 **完全结构化的 Markdown 技术规格**
5. 包含一个 **Mermaid 对象关系图**,带有按传输分组的彩色代码对象
---
## 支持的 WRICEF 类型
| 类型 | 代码 | 专用部分 |
| --- | --- | --- |
| 报表 | `REPORT` | 选择屏幕 / 输入参数,输出 / ALV 布局 |
| 接口 | `INTERFACE` | 接口详细信息(方向,协议,频率),消息结构 / 字段映射 |
| 转换 | `CONVERSION` | 伪代码,数据库对象,错误处理 |
| 增强 | `ENHANCEMENT` | 增强点详细信息(BAdI / 用户退出 / 隐式) |
| 表单 | `FORM` | 表单详细信息(SmartForms / Adobe / SAPscript),输出类型 |
| 工作流 | `WORKFLOW` | 工作流步骤 |
| OData / RAP | 任意类型 | OData / RAP 详细信息(服务绑定,服务定义) |
一个 WRICEF 可以跨越 **多个传输请求** 并包含 **混合对象类型** — 所有这些都可以在单个规格中处理。
---
## 快速入门
### 1. 前提条件
- Go 1.21+(从源代码构建) **或** 使用预构建的二进制文件
- 启用了 ADT 的 SAP 系统(`/sap/bc/adt/` ICF 服务激活)
### 2. 构建
```bash
git clone https://github.com/SaurabhVC/ABAPDocMCP.git
cd ABAPDocMCP
go build -o abapdocmcp ./cmd/vsp/main.go
```
### 3. 配置 Claude Desktop
将以下内容添加到 `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"abapdocmcp": {
"command": "/path/to/abapdocmcp",
"env": {
"SAP_URL": "https://your-sap-host:44300",
"SAP_USER": "your-username",
"SAP_PASSWORD": "your-password",
"SAP_CLIENT": "100"
}
}
}
}
```
> **自签名证书:** 在环境块中添加 `"SAP_INSECURE": "true"`。
### 4. 配置 Claude 代码
在项目根目录中添加 `.mcp.json`:
```json
{
"mcpServers": {
"abapdocmcp": {
"command": "/path/to/abapdocmcp",
"env": {
"SAP_URL": "https://your-sap-host:44300",
"SAP_USER": "your-username",
"SAP_PASSWORD": "your-password",
"SAP_CLIENT": "100"
}
}
}
}
```
---
## 工具参考 — `GenerateWricefTechSpec`
### 必需参数
| 参数 | 类型 | 描述 |
| --- | --- | --- |
| `transport_numbers` | 字符串 | 用逗号分隔的 TR 号码,例如 `DEVK900123,DEVK900124` |
### WRICEF 元数据(可选)
| 参数 | 类型 | 描述 |
| --- | --- | --- |
| `wricef_type` | 字符串 | `REPORT` \| `INTERFACE` \| `CONVERSION` \| `ENHANCEMENT` \| `FORM` \| `WORKFLOW`(默认:`REPORT`) |
| `wricef_id` | 字符串 | WRICEF 标识符,例如 `ZSD-R-001` |
| `complexity` | 字符串 | `S` \| `M` \| `L` \| `XL` |
| `cr_number` | 字符串 | 变更请求 / 票据号码 |
| `module` | 字符串 | SAP 模块:`SD`,`FI`,`MM`,`HR`,… |
### 人员
| 参数 | 类型 | 描述 |
| --- | --- | --- |
| `developer_name` | 字符串 | 开发人员全名 |
| `developer_user_id` | 字符串 | 开发人员 SAP 用户 ID |
| `reviewer_name` | 字符串 | 审查人员全名 |
| `approver_name` | 字符串 | 批准人员全名 |
### 系统
| 参数 | 类型 | 描述 |
| --- | --- | --- |
| `system_id` | 字符串 | SAP 系统 ID(默认:`DEV`) |
| `client` | 字符串 | SAP 客户端(默认:`100`) |
| `version` | 字符串 | 文档版本(默认:`1.0`) |
### 源代码增强
| 参数 | 类型 | 默认值 | 描述 |
| --- | --- | --- | --- |
| `fetch_source_code` | 布尔值 | `true` | 获取并分析源代码以获取数据库表、FM 调用、授权对象、错误处理、性能模式 |
### 接口特定
| 参数 | 描述 |
| --- | --- |
| `interface_direction` | `Inbound` \| `Outbound` \| `Bidirectional` |
| `interface_protocol` | `RFC` \| `IDoc` \| `REST` \| `SOAP` \| `File` |
| `interface_frequency` | `Real-time` \| `Batch` \| `Event-driven` |
### 增强特定
| 参数 | 描述 |
| --- | --- |
| `enhancement_type` | `BAdI` \| `User Exit` \| `Implicit Enhancement` |
| `enhancement_name` | BAdI / 增强退出名称 |
| `original_program` | 被增强的程序或对象 |
### 表单特定
| 参数 | 描述 |
| --- | --- |
| `form_technology` | `SmartForms` \| `Adobe Forms` \| `SAPscript` |
| `form_output_type` | `Spool` \| `Email` \| `PDF` |
### 工作流特定
| 参数 | 描述 |
| --- | --- |
| `workflow_steps` | 工作流步骤描述 |
### OData / RAP 特定
| 参数 | 描述 |
| --- | --- |
| `service_binding` | OData/RAP 服务绑定名称 |
| `service_definition` | OData/RAP 服务定义名称 |
### 其他
| 参数 | 描述 |
| --- | --- |
| `notes` | 规格中包含的附加说明 |
---
## 示例用法(在 Claude 中)
**最小 — 仅传输号码:**
```
GenerateWricefTechSpec(
transport_numbers = "DEVK900123"
)
```
**完整报告规格:**
```
GenerateWricefTechSpec(
transport_numbers = "DEVK900123,DEVK900124",
wricef_type = "REPORT",
wricef_id = "ZSD-R-001",
complexity = "M",
cr_number = "CHG0012345",
module = "SD",
developer_name = "John Smith",
developer_user_id = "JSMITH",
reviewer_name = "Mary Johnson",
system_id = "DEV",
client = "100"
)
```
**增强规格:**
```
GenerateWricefTechSpec(
transport_numbers = "DEVK900145",
wricef_type = "ENHANCEMENT",
wricef_id = "ZFI-E-001",
complexity = "S",
module = "FI",
enhancement_type = "BAdI",
enhancement_name = "BADI_ACC_DOCUMENT",
original_program = "SAPLGL_ACCOUNT_ASSIGNMENT"
)
```
**接口规格:**
```
GenerateWricefTechSpec(
transport_numbers = "DEVK900130",
wricef_type = "INTERFACE",
wricef_id = "ZMM-I-001",
complexity = "L",
module = "MM",
interface_direction = "Outbound",
interface_protocol = "IDoc",
interface_frequency = "Event-driven"
)
```
---
## 生成的章节
所有章节都由 `tech-spec-config.json` 控制。默认设置(按顺序):
| # | 章节 | 描述 |
| --- | --- | --- |
| 1 | 文档信息 | 标题,WRICEF ID,类型,复杂度,系统,传输号码 |
| 2 | 开发人员信息 | 开发人员,审查人员,批准人员 |
| 3 | 变更请求参考 | CR/票据号码,业务理由 |
| 4 | WRICEF 分类 | 类别,复杂度,估计工作量,模块 |
| 5 | 传输请求详情 | 每个 TR 的元数据块(所有者,状态,目标) |
| 6 | 传输内容 | 完整的对象列表,类型和 TR 引用 |
| 7 | 业务需求 | 功能描述的可编辑占位符 |
| 8 | 范围和假设 | 范围内 / 范围外 / 假设 / 依赖关系 |
| 9 | 技术设计概述 | 对象列表,类型,方法总结 |
| 10 | 对象结构 | 来自 ADT 的对象树(如果可用) |
| 11 | 类型层次结构 | 类层次结构(如果可用) |
| 12 | **对象关系图** | Mermaid 图 — 仅代码对象,按类型着色 |
| 13 | 报告详情 | 选择屏幕参数 + ALV 输出布局 |
| 14 | 接口详情 | 方向,协议,频率,源/目标系统 |
| 15 | 消息结构 / 字段映射 | 源 → 目标字段映射表 |
| 16 | 增强点详情 | 增强类型,名称,原始对象,激活 |
| 17 | 表单详情 | 技术,输出类型,表单/接口名称 |
| 18 | 工作流详情 | 工作流步骤 |
| 19 | OData / RAP 详情 | 服务绑定和定义名称 |
| 20 | 处理逻辑(伪代码) | 从源对象提取的伪代码 |
| 21 | 调用图 | 来自 ADT 的调用图(如果可用) |
| 22 | 使用的数据库对象 | 从源代码检测到的表/视图 |
| 23 | 调用的函数模块 / BAPIs / 方法 | 从源代码检测到的 FM 调用 |
| 24 | 授权对象 | 从源代码检测到的授权对象 |
| 25 | ATC 发现 | ATC 检查结果(如果可用) |
| 26 | 单元测试结果 | 单元测试结果(如果可用) |
| 27 | 错误处理 | 从源代码检测到的错误模式 |
| 28 | 性能考虑 | 检测到的反模式(SELECT *,SELECT in LOOP) |
| 29 | 测试场景 | 5 行可编辑测试用例表 |
| 30 | 附加说明 | 来自 `notes` 参数的自由文本注释 |
| 31 | 变更历史 | 版本表(预填充初始行) |
| 32 | 签署 | 开发人员 / 审查人员 / 批准人员签署表 |
---
## Mermaid 对象关系图
该图根据传输对象自动生成,并使用边缘丰富:
- `INCLUDE` 语句 → `includes` 边
- `CALL FUNCTION` / `CALL METHOD` → `calls FM` / `calls method` 边
- `CREATE OBJECT` / `NEW` → `instantiates` 边
**显示的代码对象类型** (表,结构,域等被排除):
| 类型 | 颜色 | 表示 |
| --- | --- | --- |
| `PROG` | 蓝色 | 报告 / 程序 |
| `INCL` | 浅蓝色 | 包含 |
| `CLAS` | 绿色 | 类 |
| `INTF` | 浅绿色 | 接口 |
| `FUNC` | 橙色 | 函数模块 |
| `FUGR` | 浅橙色 | 函数组 |
| `ENHO` | 红色 | 增强实现 |
| `ENHS` | 浅红色 | 增强点 |
| `BADI` | 红橙色 | BAdI 定义 |
| `SFPF` | 紫色 | SmartForms 表单 |
| `SSFO` | 紫罗兰色 | Adobe 表单 |
| `SRVB` | 深青色 | OData 服务绑定 |
| `SRVD` | 青色 | 服务定义 |
| `BDEF` | 浅青色 | 行为定义 |
| `DDLS` | CDS 青色 | CDS 视图(DDL 源) |
| `WDYN` | 靛蓝色 | Web Dynpro 应用程序 |
当 WRICEF 跨越 **多个传输请求** 时,每个 TR 都显示为一个带标签的子图。
---
## 配置章节 — `tech-spec-config.json`
将 `tech-spec-config.json` 放在二进制文件所在的目录中(或工作目录中),以自定义哪些章节出现以及它们的顺序:
```json
{
"sections": [
"documentInfo",
"developerInfo",
"changeRequest",
"wricefClassification",
"transportDetails",
"transportContents",
"businessRequirement",
"scopeAssumptions",
"technicalDesign",
"objectRelationDiagram",
"reportDetails",
"interfaceDetails",
"messageMapping",
"enhancementDetails",
"formDetails",
"workflowDetails",
"odataDetails",
"pseudocode",
"databaseObjects",
"calledFunctions",
"authorizationObjects",
"errorHandling",
"performanceConsiderations",
"testScenarios",
"additionalNotes",
"changeHistory",
"signOff"
],
"sectionTitles": {
"documentInfo": "文档信息",
"objectRelationDiagram": "对象关系图",
"reportDetails": "选择屏幕 / 输入参数"
}
}
```
- **`sections`** — 包含的章节 ID 的有序列表;省略任何 ID 以禁止该章节
- **`sectionTitles`** — 覆盖任何标题文本;仅指定要更改标题的章节
完整的 32 个章节 ID 及其默认标题在 [tech-spec-config.json](tech-spec-config.json) 文件的项目根目录中。
---
## 示例输出
参见 [SAMPLE_WRICEF_TECH_SPEC.md](SAMPLE_WRICEF_TECH_SPEC.md),获取完整的示例,显示:
- **R — 报告** 规格(ZSD-R-001),带有选择屏幕,ALV 布局,伪代码,数据库表,FM 调用,ATC,授权对象
- **I — 接口** 规格(ZMM-I-001),带有字段映射表
- **E — 增强** 规格(ZFI-E-001),带有 BAdI 详细信息和伪代码
---
## 配置参考
| 环境变量 | CLI 标志 | 描述 |
| --- | --- | --- |
| `SAP_URL` | `--url` | SAP 系统 URL(例如 `https://host:44300`) |
| `SAP_USER` | `--user` | SAP 用户名 |
| `SAP_PASSWORD` | `--password` | SAP 密码 |
| `SAP_CLIENT` | `--client` | SAP 客户端(默认:`001`) |
| `SAP_INSECURE` | `--insecure` | 跳过 TLS 验证(适用于自签名证书) |
| `SAP_MODE` | `--mode` | `focused`(默认)或 `expert`(所有工具) |
---
## 源代码结构
```
ABAPDocMCP/
├── cmd/vsp/main.go # 入口点(CLI + MCP 服务器)
├── internal/
│ ├── mcp/
│ │ ├── server.go # 工具注册
│ │ └── handlers_techspec.go # GenerateWricefTechSpec 处理程序
│ └── techspec/
│ ├── config.go # 章节配置加载器(tech-spec-config.json)
│ ├── mermaid.go # Mermaid 图生成器
│ └── generator.go # 32 章节规格渲染器
├── pkg/adt/ # SAP ADT REST API 客户端
│ ├── client.go
│ ├── transport.go # GetTransport, ListTransports
│ └── workflows.go # GetSource(PROG, CLAS, FUNC, INCL …)
├── tech-spec-config.json # 默认章节顺序和标题
└── SAMPLE_WRICEF_TECH_SPEC.md # 示例生成的输出
```
---
## 构建
```bash
# 当前平台
go build -o abapdocmcp ./cmd/vsp/main.go
# 所有平台(需要 make)
make build-all
```
---
## 许可证
MIT