sapbuddy-dsh 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +12 -4
- package/defaults/AGENTS.md +114 -114
- package/defaults/connections.example.json +21 -21
- package/defaults/prompts/Memory.md +21 -21
- package/defaults/prompts/SYSTEM.md +110 -110
- package/defaults/settings.example.json +3 -3
- package/dist/sap-tools/adtManager.d.ts +11 -1
- package/dist/sap-tools/adtManager.js +176 -9
- package/dist/sap-tools/connections-store.js +4 -1
- package/dist/sap-tools/execution.js +1 -1
- package/dist/tools.js +5 -3
- package/package.json +5 -3
- package/skills/abap-code-review/SKILL.md +75 -75
- package/skills/abap-code-review/assets/report-template.html +142 -142
- package/skills/abap-code-review/references/checklist.md +114 -114
- package/skills/abap-explain/SKILL.md +126 -126
- package/skills/abap-templates/SKILL.md +764 -764
- package/skills/abap-wiki/SKILL.md +104 -104
- package/skills/clean-abap/SKILL.md +91 -91
- package/skills/clean-abap/references/CleanABAP_zh.md +4309 -4309
- package/skills/dev-write/SKILL.md +137 -137
- package/skills/sap-abap-skills/README.md +205 -205
- package/skills/sap-abap-skills/SKILL.md +498 -498
- package/skills/sap-abap-skills/references/abap-dictionary.md +211 -211
- package/skills/sap-abap-skills/references/abap-sql.md +588 -588
- package/skills/sap-abap-skills/references/amdp.md +279 -279
- package/skills/sap-abap-skills/references/authorization.md +149 -149
- package/skills/sap-abap-skills/references/bits-bytes.md +92 -92
- package/skills/sap-abap-skills/references/builtin-functions.md +373 -373
- package/skills/sap-abap-skills/references/cds-views.md +412 -412
- package/skills/sap-abap-skills/references/cloud-development.md +299 -299
- package/skills/sap-abap-skills/references/constructor-expressions.md +458 -458
- package/skills/sap-abap-skills/references/date-time.md +415 -415
- package/skills/sap-abap-skills/references/design-patterns.md +292 -292
- package/skills/sap-abap-skills/references/dynamic-programming.md +426 -426
- package/skills/sap-abap-skills/references/exceptions.md +432 -432
- package/skills/sap-abap-skills/references/generative-ai.md +180 -180
- package/skills/sap-abap-skills/references/internal-tables.md +578 -578
- package/skills/sap-abap-skills/references/numeric-operations.md +219 -219
- package/skills/sap-abap-skills/references/object-orientation.md +518 -518
- package/skills/sap-abap-skills/references/performance.md +428 -428
- package/skills/sap-abap-skills/references/program-flow.md +302 -302
- package/skills/sap-abap-skills/references/rap-eml.md +549 -549
- package/skills/sap-abap-skills/references/released-classes.md +308 -308
- package/skills/sap-abap-skills/references/sap-luw.md +203 -203
- package/skills/sap-abap-skills/references/skill-reference-guide.md +98 -98
- package/skills/sap-abap-skills/references/sql-hierarchies.md +180 -180
- package/skills/sap-abap-skills/references/string-processing.md +488 -488
- package/skills/sap-abap-skills/references/table-grouping.md +150 -150
- package/skills/sap-abap-skills/references/tool-guide.md +285 -285
- package/skills/sap-abap-skills/references/unit-testing.md +512 -512
- package/skills/sap-abap-skills/references/where-conditions.md +223 -223
- package/skills/sap-abap-skills/references/xml-json.md +315 -315
- package/skills/translate-workflow/SKILL.md +69 -69
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: translate-workflow
|
|
3
|
-
description: >-
|
|
4
|
-
翻译类任务(含 Excel 清单批量 → SAP)的固定流程:把已译好的译文按真实 key
|
|
5
|
-
写进 SAP 对象(文本池/文本符号/选择文本/程序标题、屏幕文字 D020T/D021T、消息类 SE91/T100)。
|
|
6
|
-
强制"先 list 后 set"——先读真实存在的 key 再写;清单里匹配不上真实 key 的条目要报告并跳过,
|
|
7
|
-
禁止猜 key 写入。适用于用户要求翻译成某语言(越南语/英文/中文等)、多语言维护、文本池/
|
|
8
|
-
文本符号/选择文本/消息类/屏幕文字翻译。
|
|
9
|
-
触发关键词:翻译、多语言、越南/越南语、英文/中文/德文翻译、文本池、文本符号、选择文本、
|
|
10
|
-
程序标题、消息类、屏幕文字、D021T、D020T、T100、SE91。
|
|
11
|
-
disable: false
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# 批量翻译工作流(translate-workflow)
|
|
15
|
-
|
|
16
|
-
> 本技能为**翻译类任务**的唯一权威(从 SYSTEM.md 迁出)。场景:用户提供翻译清单(Excel)+目标对象(程序/事务码),要求按清单翻译成某语言(如越南语 VI)。**清单里的译文已译好,任务是「把译文写进 SAP」,不是研究/侦查代码。** 用户给了 Excel 路径和对象名 → 直接按下面流程走,**禁止发散**。
|
|
17
|
-
> 相关:写文本元素/翻译时,文本池与 key 格式的权威规则也见本技能下文「文本元素写法」。
|
|
18
|
-
|
|
19
|
-
## 先分清对象再选工具(防用错)
|
|
20
|
-
|
|
21
|
-
- **程序代码里的文本元素**(文本符号 TEXT-xxx、选择文本、程序描述/标题)→ **新增/修改用 `manage_text_elements`**(写入自动把程序对象 `R3TR PROG`(含文本池)挂载进传输请求);**翻译成指定语言**用 `translate_text_pool`。
|
|
22
|
-
- **屏幕画面上的标题/字段标签**(D020T/D021T)→ `translate_screen_text`
|
|
23
|
-
- **消息类提示文案**(SE91/T100)→ `translate_message_class`
|
|
24
|
-
|
|
25
|
-
## 文本元素写法(强制流程)
|
|
26
|
-
|
|
27
|
-
写文本元素先分清是「新增/修改」还是「翻译」——两者走不同工具:
|
|
28
|
-
|
|
29
|
-
- **① 新增/修改文本元素**(写对象语言位置的文本,通常主语言)→ `manage_text_elements`(action=`update`)。写入自动把程序对象 `R3TR PROG`(含文本池)挂载进传输请求,这是让文本池正常传输的正确方式。写中文需用户确认(`allowChinese=true`;对象主语言非中文时直接写中文会导致语言不一致,应先向用户确认或改英文)。
|
|
30
|
-
- **② 翻译成指定语言**(写非主语言的翻译文本池)→ `translate_text_pool`(mode=`set`, targetLanguage=语言键)。本工具直接写 `TEXTPOOL` 表、**不自动挂载对象**——写前请确认程序对象 `R3TR PROG` 已在可修改请求里(`manage_text_elements` 已把它挂进去),或传 `transportNumber` 让工具检测;文本池是随程序对象走的。
|
|
31
|
-
- key 格式(**不加类型字母**):标题=`T`;文本符号=3位编号(如 `001` 对应 TEXT-001);选择文本=参数名(如 `S_CARRID`、`P_COMP`)。**禁止**传 `I`/`S`/`I001` 这类带前缀的键。
|
|
32
|
-
- 写前先读现有文本元素,避免重复符号/漏合并。
|
|
33
|
-
|
|
34
|
-
## 翻译工具要点
|
|
35
|
-
|
|
36
|
-
- **文本元素/文本池(仅翻译用)**:用户要求"翻译/多语言/文本池/加英文/复制语言/双语"时用 `translate_text_pool`(**只翻译非主语言**;新增/修改主语言文本元素用 `manage_text_elements`):
|
|
37
|
-
- `set` 模式:按 key 写条目(key: `T`=程序标题、3位编号如 `001`=文本符号 TEXT-001、参数名如 `S_CARRID`/`P_COMP`=选择文本;选择文本工具自动补前导空格)
|
|
38
|
-
- `list` 模式:只读目标语言现有文本池、输出 ID|KEY|文本,**供写前拿真实 key,不做任何写入**——批量翻译必先 list 后 set
|
|
39
|
-
- `copy` 模式:把源语言整个文本池复制为目标语言(如 1→E)
|
|
40
|
-
- 语言键:`1`=中文简体、`E`=英文;越南语用 `VI` 或「越南」(工具自动从 T002 反查真实键);其他语言(如繁体 M、德文 D 等)由用户明确指定后使用
|
|
41
|
-
- **⚠️ 本工具直接写 `TEXTPOOL` 表、不自动挂载传输请求**(它自己不注册程序对象)。文本池随程序对象(`R3TR PROG <程序名>`)走——写翻译前先 `manage_text_elements` 写主语言文本元素把程序挂进请求,翻译才随请求传;工具写后会检测程序对象是否在可修改请求里并在结果里提醒。
|
|
42
|
-
- `manage_text_elements` 用于读取**和写入**文本元素(action=`read`/`update`);**函数组主程序(SAPL 开头)需按函数组读(objectType=`FUGR`+函数组名,去 SAPL 前缀),工具已自动归一化**;写中文需用户确认(`allowChinese=true`)
|
|
43
|
-
- **消息类翻译(SE91/T100)**:用户要求"翻译/多语言/消息类/消息文本/消息文案/报错提示/警告提示"时,用 `translate_message_class`:
|
|
44
|
-
- `copy`:把源语言消息文本复制为目标语言(messageClass 可带 % 通配批量,如 `ZFI%`)
|
|
45
|
-
- `set`:按 `[{msgNumber,text}]` 写翻译;消息号自动补 3 位(`1`→`001`);文本≤72 字符;写入前校验消息号真实存在,不存在则报错不写入
|
|
46
|
-
- **屏幕文字翻译(D020T/D021T)**:用户要求"翻译/多语言/屏幕文字/屏幕标题/字段标签/界面显示文字/屏幕上的字"时,用 `translate_screen_text`:
|
|
47
|
-
- **先 `list` 后 `set`(强制)**:先 `list` 列出程序全部屏幕的标题/字段(拿真实 `dynr` 屏幕号、`fldn` 字段名),再 `set` 写入——禁止凭猜填字段名(写入不存在的字段/屏幕会报错不落库)
|
|
48
|
-
- `set`:`fields=[{dynr,fldn,text}]` 写字段标签、`titles=[{dynr,text}]` 写屏幕标题
|
|
49
|
-
- 程序名通常 SAPL 开头(如 `SAPLZBCG004A`);传函数组名(如 `ZBCG004A`)自动补 SAPL 前缀
|
|
50
|
-
- ⚠️ 屏幕文字直接改系统表,**不自动进传输请求**——需要时手工插入(同 SAPLZBCG014)
|
|
51
|
-
|
|
52
|
-
## 固定流程(按顺序,一类完成再下一类)
|
|
53
|
-
|
|
54
|
-
1. **读 Excel(一次到位)**:用 **1 个** python 脚本一次读出目标 sheet 全部行(列结构:`类型`/`中文`/`越南文`;`屏幕xxxx` 行既是屏幕段标记、**本身也带一条翻译**)。openpyxl 打不开就直接用 zipfile 解 XML 解析,**不要来回试多种方式**。只处理目标 sheet 的行,**不要把整份 Excel 全解析出来展示**。
|
|
55
|
-
2. **分类**:把行分三类 → 文本符号/标题/选择文本(`translate_text_pool`)、屏幕标题/字段标签(`translate_screen_text`)、消息类文案(`translate_message_class`)。
|
|
56
|
-
3. **每类先 list 后 set(强制)**:
|
|
57
|
-
- 文本符号:`translate_text_pool`(mode=`list`,targetLanguage=中文键)拿**真实存在的 key**(`T`/三位编号/参数名)→ 按清单 `set` 写 VI。
|
|
58
|
-
- 屏幕文字:`translate_screen_text`(mode=`list`,targetLanguage=中文键)拿真实 `dynr`/`fldn` → 再 `set` 写 VI(标题/字段各按字段写)。
|
|
59
|
-
- 消息类:`translate_message_class` 先 `list` 后 `set`。
|
|
60
|
-
4. **汇报**:写完如实报告每类写了多少条、哪几条没写及原因(三个工具写后自动读回自检,失败回滚报错)。
|
|
61
|
-
**清单里匹配不上真实 key 的条目 → 报告「无法匹配」并跳过,禁止猜 key 写入**(猜 key 会写到错误键位,界面看不到翻译)。
|
|
62
|
-
|
|
63
|
-
## 禁止(防发散,硬性)
|
|
64
|
-
|
|
65
|
-
- **禁止用 SQL / 源码 / URI 找文本对应关系**:查 `TEXTPOOL`(内部结构查不了)、读源码找 `TEXT-xxx`、查 `DD02L`/`DD03L`、试 textpool 各类 URI(404)——这些**一律不做**,真实 key 用工具的 `list` 模式拿。
|
|
66
|
-
- **禁止读同族程序佐证**:清单与兄弟程序(如 ZITS004A/ZITS004)相似,也**不去读它们代码**,以本对象 `list` 结果为准。
|
|
67
|
-
- **禁止猜 key 写入**:清单条目在 `list` 结果里找不到真实 key(文本符号编号/屏幕号/字段名/消息号)时,**报告「无法匹配」并跳过,禁止用 Excel 行号或自造编号当 key 写入**(曾因此把 67 条翻译写到错位键,界面看不到)。
|
|
68
|
-
- **禁止同一件事反复试**:某方法**连续 2 次失败立即换工具/换方案**(如 openpyxl 失败 → 一次到位换 zip 方案;SQL 查不到 → 直接用工具 list),不穷举重试、不研究"到底有没有"。
|
|
69
|
-
- 屏幕文字直接改系统表、**不自动进传输请求**——开始写屏幕前告知用户写完需手工插请求。
|
|
1
|
+
---
|
|
2
|
+
name: translate-workflow
|
|
3
|
+
description: >-
|
|
4
|
+
翻译类任务(含 Excel 清单批量 → SAP)的固定流程:把已译好的译文按真实 key
|
|
5
|
+
写进 SAP 对象(文本池/文本符号/选择文本/程序标题、屏幕文字 D020T/D021T、消息类 SE91/T100)。
|
|
6
|
+
强制"先 list 后 set"——先读真实存在的 key 再写;清单里匹配不上真实 key 的条目要报告并跳过,
|
|
7
|
+
禁止猜 key 写入。适用于用户要求翻译成某语言(越南语/英文/中文等)、多语言维护、文本池/
|
|
8
|
+
文本符号/选择文本/消息类/屏幕文字翻译。
|
|
9
|
+
触发关键词:翻译、多语言、越南/越南语、英文/中文/德文翻译、文本池、文本符号、选择文本、
|
|
10
|
+
程序标题、消息类、屏幕文字、D021T、D020T、T100、SE91。
|
|
11
|
+
disable: false
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# 批量翻译工作流(translate-workflow)
|
|
15
|
+
|
|
16
|
+
> 本技能为**翻译类任务**的唯一权威(从 SYSTEM.md 迁出)。场景:用户提供翻译清单(Excel)+目标对象(程序/事务码),要求按清单翻译成某语言(如越南语 VI)。**清单里的译文已译好,任务是「把译文写进 SAP」,不是研究/侦查代码。** 用户给了 Excel 路径和对象名 → 直接按下面流程走,**禁止发散**。
|
|
17
|
+
> 相关:写文本元素/翻译时,文本池与 key 格式的权威规则也见本技能下文「文本元素写法」。
|
|
18
|
+
|
|
19
|
+
## 先分清对象再选工具(防用错)
|
|
20
|
+
|
|
21
|
+
- **程序代码里的文本元素**(文本符号 TEXT-xxx、选择文本、程序描述/标题)→ **新增/修改用 `manage_text_elements`**(写入自动把程序对象 `R3TR PROG`(含文本池)挂载进传输请求);**翻译成指定语言**用 `translate_text_pool`。
|
|
22
|
+
- **屏幕画面上的标题/字段标签**(D020T/D021T)→ `translate_screen_text`
|
|
23
|
+
- **消息类提示文案**(SE91/T100)→ `translate_message_class`
|
|
24
|
+
|
|
25
|
+
## 文本元素写法(强制流程)
|
|
26
|
+
|
|
27
|
+
写文本元素先分清是「新增/修改」还是「翻译」——两者走不同工具:
|
|
28
|
+
|
|
29
|
+
- **① 新增/修改文本元素**(写对象语言位置的文本,通常主语言)→ `manage_text_elements`(action=`update`)。写入自动把程序对象 `R3TR PROG`(含文本池)挂载进传输请求,这是让文本池正常传输的正确方式。写中文需用户确认(`allowChinese=true`;对象主语言非中文时直接写中文会导致语言不一致,应先向用户确认或改英文)。
|
|
30
|
+
- **② 翻译成指定语言**(写非主语言的翻译文本池)→ `translate_text_pool`(mode=`set`, targetLanguage=语言键)。本工具直接写 `TEXTPOOL` 表、**不自动挂载对象**——写前请确认程序对象 `R3TR PROG` 已在可修改请求里(`manage_text_elements` 已把它挂进去),或传 `transportNumber` 让工具检测;文本池是随程序对象走的。
|
|
31
|
+
- key 格式(**不加类型字母**):标题=`T`;文本符号=3位编号(如 `001` 对应 TEXT-001);选择文本=参数名(如 `S_CARRID`、`P_COMP`)。**禁止**传 `I`/`S`/`I001` 这类带前缀的键。
|
|
32
|
+
- 写前先读现有文本元素,避免重复符号/漏合并。
|
|
33
|
+
|
|
34
|
+
## 翻译工具要点
|
|
35
|
+
|
|
36
|
+
- **文本元素/文本池(仅翻译用)**:用户要求"翻译/多语言/文本池/加英文/复制语言/双语"时用 `translate_text_pool`(**只翻译非主语言**;新增/修改主语言文本元素用 `manage_text_elements`):
|
|
37
|
+
- `set` 模式:按 key 写条目(key: `T`=程序标题、3位编号如 `001`=文本符号 TEXT-001、参数名如 `S_CARRID`/`P_COMP`=选择文本;选择文本工具自动补前导空格)
|
|
38
|
+
- `list` 模式:只读目标语言现有文本池、输出 ID|KEY|文本,**供写前拿真实 key,不做任何写入**——批量翻译必先 list 后 set
|
|
39
|
+
- `copy` 模式:把源语言整个文本池复制为目标语言(如 1→E)
|
|
40
|
+
- 语言键:`1`=中文简体、`E`=英文;越南语用 `VI` 或「越南」(工具自动从 T002 反查真实键);其他语言(如繁体 M、德文 D 等)由用户明确指定后使用
|
|
41
|
+
- **⚠️ 本工具直接写 `TEXTPOOL` 表、不自动挂载传输请求**(它自己不注册程序对象)。文本池随程序对象(`R3TR PROG <程序名>`)走——写翻译前先 `manage_text_elements` 写主语言文本元素把程序挂进请求,翻译才随请求传;工具写后会检测程序对象是否在可修改请求里并在结果里提醒。
|
|
42
|
+
- `manage_text_elements` 用于读取**和写入**文本元素(action=`read`/`update`);**函数组主程序(SAPL 开头)需按函数组读(objectType=`FUGR`+函数组名,去 SAPL 前缀),工具已自动归一化**;写中文需用户确认(`allowChinese=true`)
|
|
43
|
+
- **消息类翻译(SE91/T100)**:用户要求"翻译/多语言/消息类/消息文本/消息文案/报错提示/警告提示"时,用 `translate_message_class`:
|
|
44
|
+
- `copy`:把源语言消息文本复制为目标语言(messageClass 可带 % 通配批量,如 `ZFI%`)
|
|
45
|
+
- `set`:按 `[{msgNumber,text}]` 写翻译;消息号自动补 3 位(`1`→`001`);文本≤72 字符;写入前校验消息号真实存在,不存在则报错不写入
|
|
46
|
+
- **屏幕文字翻译(D020T/D021T)**:用户要求"翻译/多语言/屏幕文字/屏幕标题/字段标签/界面显示文字/屏幕上的字"时,用 `translate_screen_text`:
|
|
47
|
+
- **先 `list` 后 `set`(强制)**:先 `list` 列出程序全部屏幕的标题/字段(拿真实 `dynr` 屏幕号、`fldn` 字段名),再 `set` 写入——禁止凭猜填字段名(写入不存在的字段/屏幕会报错不落库)
|
|
48
|
+
- `set`:`fields=[{dynr,fldn,text}]` 写字段标签、`titles=[{dynr,text}]` 写屏幕标题
|
|
49
|
+
- 程序名通常 SAPL 开头(如 `SAPLZBCG004A`);传函数组名(如 `ZBCG004A`)自动补 SAPL 前缀
|
|
50
|
+
- ⚠️ 屏幕文字直接改系统表,**不自动进传输请求**——需要时手工插入(同 SAPLZBCG014)
|
|
51
|
+
|
|
52
|
+
## 固定流程(按顺序,一类完成再下一类)
|
|
53
|
+
|
|
54
|
+
1. **读 Excel(一次到位)**:用 **1 个** python 脚本一次读出目标 sheet 全部行(列结构:`类型`/`中文`/`越南文`;`屏幕xxxx` 行既是屏幕段标记、**本身也带一条翻译**)。openpyxl 打不开就直接用 zipfile 解 XML 解析,**不要来回试多种方式**。只处理目标 sheet 的行,**不要把整份 Excel 全解析出来展示**。
|
|
55
|
+
2. **分类**:把行分三类 → 文本符号/标题/选择文本(`translate_text_pool`)、屏幕标题/字段标签(`translate_screen_text`)、消息类文案(`translate_message_class`)。
|
|
56
|
+
3. **每类先 list 后 set(强制)**:
|
|
57
|
+
- 文本符号:`translate_text_pool`(mode=`list`,targetLanguage=中文键)拿**真实存在的 key**(`T`/三位编号/参数名)→ 按清单 `set` 写 VI。
|
|
58
|
+
- 屏幕文字:`translate_screen_text`(mode=`list`,targetLanguage=中文键)拿真实 `dynr`/`fldn` → 再 `set` 写 VI(标题/字段各按字段写)。
|
|
59
|
+
- 消息类:`translate_message_class` 先 `list` 后 `set`。
|
|
60
|
+
4. **汇报**:写完如实报告每类写了多少条、哪几条没写及原因(三个工具写后自动读回自检,失败回滚报错)。
|
|
61
|
+
**清单里匹配不上真实 key 的条目 → 报告「无法匹配」并跳过,禁止猜 key 写入**(猜 key 会写到错误键位,界面看不到翻译)。
|
|
62
|
+
|
|
63
|
+
## 禁止(防发散,硬性)
|
|
64
|
+
|
|
65
|
+
- **禁止用 SQL / 源码 / URI 找文本对应关系**:查 `TEXTPOOL`(内部结构查不了)、读源码找 `TEXT-xxx`、查 `DD02L`/`DD03L`、试 textpool 各类 URI(404)——这些**一律不做**,真实 key 用工具的 `list` 模式拿。
|
|
66
|
+
- **禁止读同族程序佐证**:清单与兄弟程序(如 ZITS004A/ZITS004)相似,也**不去读它们代码**,以本对象 `list` 结果为准。
|
|
67
|
+
- **禁止猜 key 写入**:清单条目在 `list` 结果里找不到真实 key(文本符号编号/屏幕号/字段名/消息号)时,**报告「无法匹配」并跳过,禁止用 Excel 行号或自造编号当 key 写入**(曾因此把 67 条翻译写到错位键,界面看不到)。
|
|
68
|
+
- **禁止同一件事反复试**:某方法**连续 2 次失败立即换工具/换方案**(如 openpyxl 失败 → 一次到位换 zip 方案;SQL 查不到 → 直接用工具 list),不穷举重试、不研究"到底有没有"。
|
|
69
|
+
- 屏幕文字直接改系统表、**不自动进传输请求**——开始写屏幕前告知用户写完需手工插请求。
|