笔者2007年1月进入 SAP 从事开发工作,到现在已经19年半了。
在我刚开始入门 ABAP,一个字符一个字符在 SAPGUI 里敲代码,同时看着 ABAP Help 里的文档时,我绝对想象不到,十多年之后,我可以仅仅使用自然语言,就能自动生成高质量的 ABAP 代码。
技术发展速度之快,让人感觉置身梦境。
之前我写的文章:
SAP 官方对 Visual Studio Code 里写 ABAP 的支持,终于来了!
使用 Visual Studio Code 连接 ABAP On-Premise 系统做开发的详细配置步骤
有朋友问我,能否在 Visual Studio Code 里使用 Claude Code 辅助 ABAP 开发?
当然可以。本文就来聊聊这个话题。
在阅读本文之前,大家可以先浏览笔者之前的这四篇文章,对 MCP Server 的概念有一个最基础的了解。
因为本文笔者的实操,会用到 SAP 官方发布的 MCP Server.
使用 MCP 打破大语言模型和 SAP 系统集成的屏障之一:灵感来源
使用 MCP 打破大语言模型和 SAP 系统集成的屏障之二:理论基础
使用 MCP 打破大语言模型和 SAP 系统集成的屏障之三:MCP 组成部分的详细介绍
使用 MCP 打破大语言模型和 SAP 系统集成的屏障之四:一个 Hello World 级别的 MCP Server 介绍
如果我们想通过 Claude Code(或者其他 LLM),使用 Visual Studio Code 直接在连接的 ABAP 系统里创建 ABAP 代码,那么 ABAP MCP Server 是必须的。
Claude Code 的确很会写代码。
但它默认理解和打交道的,是本地文件和通用工具。
可 ABAP 开发,同本地的 Java,Node.js,TypeScript,Python 开发完全不同。
它发生在 IDE 连接的远端 ABAP 系统上。
ABAP 开发本身也不仅仅是把几行代码敲出来就完事了。
ABAP 包结构、对象类型、系统上下文、传输请求、语法检查、激活这些关键动作,都在 ABAP 系统里面。
Claude Code 无法感知这些发生在 ABAP 系统里的操作。
这就需要 ABAP MCP server 出来发挥作用,把 ABAP 系统的这些操作能力暴露给 Claude Code,让 Claude Code 不只是「会生成 ABAP 代码」,而且能够「在 ABAP 系统完成后续必要的操作」。
SAP 官方发布的 ABAP Development Tool for Visual Studio Code 就自带了一个 ABAP MCP Server:
打开 Visual Studio Code 的 Settings 界面,搜索关键字 ADT MCP,将 Enable ADT MCP Server 前的 checkbox 勾上,这个 MCP Server 默认会在本地端口 2236 启动监听请求。
同时会自动生成一个 Authorization token,我们把这个 token 记下来。
正常情况这个 MCP Server 会自动启动,我们会在 Visual Studio Code 里看到 MCP Server 已经成功启动的提示消息:
在 Visual Studio Code 的 Log 区域也能看到对应的消息:
还可以使用命令「Show Installed MCP Server」查看当前已安装的 MCP Server:
然后安装 Claude Code for Visual Studio Code,这样在 Visual Studio Code 的 Chat 里,就可以使用 Claude Code 发指令了。
编辑操作系统 users 目录下的 .claude.json 配置文件,添加如下配置代码:
"mcpServers": { "adt-official": { "type": "http", "url": "http://localhost:2236/mcp", "headers": { "Authorization": "Bearer <粘贴之前拷贝下来的 Authorization token>" } }}
这个配置的作用是告诉 Visual Studio Code 里的 Claude Code Extension,本地有这个 MCP Server 可以连接。
接着在 Visual Studio Code 的 Claude Code Chat对话框,输入 /MCP, 然后选择 Customize MCP servers:
如果一切配置正常,就能看到我们刚才配置在 .claude.json 文件里的 MCP Server,已经成功被解析出来了:
点击这个 View Tools 连接,就能查看这个 SAP 发布的 ABAP MCP Server 暴露出来的功能,总共14个:
这14个工具的用途,在 SAP 官网有详细介绍:
https://help.sap.com/docs/abap-cloud/abap-development-tools-for-visual-studio-code/mcp-tools
此时可以测试一下这个 MCP Server 是否工作正常。
在 Visual Studio Code 里登录 ABAP 系统后,随便给 Claude Code 聊一聊,让它获取我当前登录系统的用户名。
可以看到 Claude Code 的输出:Adt-official [abap-list-destinations], 这里的 Adt-official 就是我们在 .claude.json 文件里声明的 MCP Server 的名称,abap_list_destinations 就是 ABAP MCP Server 的能力之一。
向 Claude Code 发出指令:
在 $TMP 开发包里创建一个 ZCL_SORT_TOOL 的 ABAP 类,包含了冒泡排序的实现,输入参数是一个内表,内表 line item 是整型,输出参数是冒泡排序之后的新内表。
这个 ABAP 类需要包含完备的单元测试代码。
Claude Code 会首先调用 MCP Server 的 abap_creation 分类下的 get_all_creatable_objects, 判断当前系统是否允许进行这个创建操作。
Claude Code 会先征求我的允许,是否执行这个 MCP server 的功能。选择 Yes 即可。
我们可以查看 Claude Code 的 Thinking 过程,依次调用 MCP Server 的 get_object_type_details 和 run_validation, 完成 ABAP class 创建的前置操作,然后调用 create_object 完成真正的 ABAP Class 创建动作。
然后就能看到 Claude Code 生成的 ABAP 类的主体代码:
以及完备的单元测试代码了: