之前看到个帖子,说ABAP和AI的事,心里挺有感触的。论坛里聊这个的不多,我就随便写写自己的经历,你们就当看个乐子。反正调教AI调到红温,本身不也挺有乐子的么(悲)。
就一个很普通的下午。
业务大佬(不懂开发和运维,觉得翻译很简单):小林啊,我们要上海外工厂了,但系统都是中文环境。你去用英文登录SAP,把所有看到的中文地方都翻译成英文。进度要跟配置同步,挺急的。当然,那个十七表合一的财务报表(也是个天坑,先不提了)也不能耽误。
我(内心):我测,之前那个十七表合一的报表已经够要命了,这又来一个?我这边没basis运维,业务也不会用SE63翻译。这意味着我得把自定义菜单、事务码、代码文本(比如ZP01没英文描述)、屏幕文本、数据元素、文本表里缺的语言……全给翻译了。就靠一个SE63,我不得死这上边?但我人设可是高级ABAP,公司SAP顶梁柱,签名写着“没有我搞不出来的功能”……算了,硬着头皮上吧。我:“好的,我看看,争取翻译和配置一起上线。”
路再难也得走啊。出来吧,Claude-Opus-4.6!我就剩10美刀了,大概只能问3个关键问题,得省着用。
对话框输入:
你是一个高级的SAP开发和basis顾问,有丰富的SAP底层框架经验…
对话框输出:
代码第一版 …
比如: SELECT domname ddtext
FROM dd01t
INTO TABLE DATA(lt_tgt)
FOR ALL ENTRIES IN gt_domains
WHERE domname = gt_domains-domname
AND ddlanguage = p_tlang
AND as4local = ‘A’. “这里有bug,编译不过 备注问题1
我:怎么有bug啊。算了,自己改改吧,token省着点,就问关键问题。
对话框输入:
你是一个高级的SAP开发和basis顾问… 代码要通过编译,要完全测试和理解程序用途… 勾选了数据元素参考,切换语言依旧带不出描述 …
对话框输出:
代码第二版 … XXX
我:怎么感觉没听懂啊。算了,自己改改提示词吧,token挺贵的。
对话框输入:
你是一个高级的SAP开发和basis顾问… 代码要通过编译… 程序中Selection Text已经是对应语言的描述了,但是ALV屏幕选择框还是没翻译,比如 s_matnr 选了数据参考,text显示Material,但ALV运行还是显示 s_matnr …
对话框输出:
分析原因ing~
我:好像有点道理,我自己测测看。
对话框输入:
你是一个高级的SAP开发和basis顾问… 代码要通过编译… 原因是xxx… 给出完整代码
对话框输出:
代码第三版 …复现了问题1
还加了问题2
CALL FUNCTION ‘DDIF_TABL_GET’
EXPORTING
name = ls_fk_tmp-tabname
langu = sy-langu
include … “这里又是bug,编译不过 备注问题2
我:怎么tm还是这个bug!算了,我自己改提示词和程序吧,把源代码也给它看。虽然看源码token贵,但得有用才行啊。
对话框输入:
你是一个高级的SAP开发和basis顾问… 代码要通过编译…不能自定义和乱写变量,定义变量和查找时要确认参考对象存在… 原因是xxx…理解错需求了,不是匹配是替换’INCLUDE’。因为INCLUDE里不包含需要的结构,我程序不用INCLUDE语句就进不去查找,但选择屏幕是type和FOR命名,是有数据元素的。请改程序,用 CP ‘TABLES *’. 去匹配结构… 给出完整代码…TXT · 40 kB
对话框输出:
代码第4版 … 明白了!需求是:扫描源码中的
TABLES声明,提取表/结构名,再通过 DD03L 查出字段对应的数据元素,用于解析FOR tabname-fieldname的引用。
我:终于按我的意思来了。嗯,保存成功就行……嗯?不对啊,底表改了,参考也选了,程序屏幕怎么还是没英文?我测!
DO 3 TIMES
…
我找问题,我测试案例,我找到原因
【怒气+1】【疲惫+10】【疑惑+20】
…
对话框输入:
你是一个高级的SAP开发和basis顾问… 代码要通过编译…不能自定义和乱写变量… 原因是我看到是长度问题,查找的描述是“Posting Date”,但SE38里看text只剩下“Date”,少了8位。所以少于8位的描述直接不显示了… 给出完整代码…TXT · 40 kB
对话框输出:
代码第4版 … 明白了!你观察到的“恰好差8位”现象非常精准,这不是巧合。这是 TEXTPOOL 结构中选择文本
ID = 'S'的 ENTRY 字段的底层存储格式决定的。SAP 文本池中,当ID = 'S'(选择屏幕文本)时,ENTRY字段的存储格式不是纯描述文本,而是一个复合结构:…
我:我测你m的!你‘明白了!’个蛋啊!你现在倒是知道原因了,刚才干嘛去了?我要知道官方底层数据存放还问你干嘛?我提示词都说了你懂框架,结果还得我自己找!我干!!算了,工作而已,还得加文本表描述翻译呢。能成功也不能说AI完全垃圾。
对话框输入:
你是一个高级的SAP开发和basis顾问… 代码要通过编译…不能自定义和乱写变量… 我的需求是批量查询文本表,对照目标语言和源语言,主键相同但缺描述的条目展示到ALV,支持回写到文本表的目标语言。也要支持数据元素的域缺目标语言维护的情况。ALV按钮要有EXCEL导出和导入目标语言描述功能。现在用户痛点是:屏幕输入我不知道是什么数据元素缺的数据,不知道值表是啥,只知道事务代码。所以程序要支持通过事务码查找用到的表元素去重,找到是域描述缺语言,还是值表缺语言,然后翻译。所有代码要基于SAP 770环境… 给出完整代码…
对话框输出:
问题1 问题2 问题3 太多了我简单描述一下 虚构函数功能 幻想表结构 胡乱编造语法【我环境不支持而且我指定了环境】
我:我你**的你会开发吗!我加了这么多限定词,你就给我这一坨?……平复心情,手搓正确语法。但关键函数不满足功能,虚构的字段影响整个代码。只能拿着这还有错的代码重新让它改…
DO N TIMES
语音输入:
你是一个高级的SAP开发和basis顾问… 代码要通过编译…不能自定义和乱写变量… 922报错 111报错 RS_CUA_INTERNAL_WRITE 的 tables 是 sta 没有 _tab后缀 Unknown column name “TEXTTAB” … 给出完整代码…
对话框输出:
问题n 一直绕不开 AI觉得一定有这个字段 对应文本表
ENDDO
我:谁他m写的‘文本表关系记录在 DD02L-TEXTTAB 字段中’?不知道是哪个官方文档还是AI从哪个犄角旮旯的博客看的,别让我逮到你们!我压根就没这个字段!禁止使用xx字段 xx函数!没有这个字段和功能!
语音输入:
对话框输出:你已无剩余token
【怒气:∞】
【疑惑:∞】
【红温:UZI红温表情 猎杀时刻!】
【动作:一拳打爆这个世界啊啊啊】
故事完
怎么样,是不是很有戏剧性?换成小说是个好结尾,可惜这是生活,我屈服了,最后还是自己完善了程序和代码。
总结一下。
回到原话题。对ABAP来说,简单的问题我自己找和AI找没区别。难的问题我搞不定,AI也难搞定。ABAP难的不是把逻辑写成代码,而是怎么把逻辑转成用SAP标准功能去增强,还得文档齐全。开发用对了就简单快。还有,把需求转成逻辑这一步,AI就更low了,我自己听业务讲都得琢磨半天代码。如果不是SAP自己的AI,没法对接程序库,只能靠输入问题去问,那真比不了高级顾问的需求转逻辑能力。
简单说,我用最强的模型开发ABAP,就像拿豆包去开发JAVA项目一样。这里头有多痛苦,只有用过的人才懂。
当然这只是我的看法。我提示词肯定没你们常用的完美,输出也可能不到位,但结果估计大同小异。其他ABAP或者其他开发要是有好用的AI建议,也可以交流。
没啥送的,就把我折腾出来的东西放这儿吧,有需要的自取 [gui状态得自己建]。
批量翻译程序文本工具.txt (42.6 KB)
自定义数据元素扩充翻译报表.txt (43.9 KB)
批量翻译表数据元素名.txt (21.5 KB)
以下是‘参考文献’