
简介SAP_Tutor是一款专为SAP系统用户设计的专业录屏与教学辅助工具面向企业ERP实施人员、SAP初学者、内部培训师及IT支持工程师解决SAP操作过程难以复现、知识传递低效、新员工上手慢等实际问题。资源包共92个文件涵盖25个HTML帮助文档含多语言Readme与教程页、11个可执行程序含安装器、播放器、Reporter组件、8个.sim交互式演示文件、7个PDF双语手册德/英版SAP Tutor/Player/Reporter全功能说明以及JAR/CLASS/JS等运行依赖和校验文件如CRCFILE.DAT完整支撑录制、编辑、播放、SCORM集成与离线部署全流程。压缩包大小43.32MBRAR格式结构清晰模块化程度高。目前已有473人学习下载用户可直接获取开箱即用的SAP操作录播能力、配套Java播放器、多场景sim示例如FOA_Standard、Introduction_to_SAP_Tutor、双语技术文档及SCORM兼容方案显著提升SAP培训标准化与知识沉淀效率。1. SAP_Tutor 是什么不是录屏工具而是 SAP 系统操作行为的结构化捕获与可回放式教学载体很多人第一次看到「SAP_Tutor SAP 录屏软件」这个名称会下意识点开下载、装上就录——结果发现它不支持全屏自由录制不能像 OBS 那样拖窗口、加字幕、调音轨录完的文件双击打不开导出格式既不是 MP4 也不是 AVI而是一堆.sapt、.xml和resources/文件夹。这不是 bug是设计使然。SAP_Tutor 的核心定位从来不是「把屏幕画面存下来」而是「把用户在 SAP GUI 中每一步合法操作事务码输入、字段填写、按钮点击、菜单展开、F8 执行精准解析为带上下文语义的动作序列」。它面向的是企业内训师、SAP ABAP 开发者、系统实施顾问这类角色他们需要把「如何在 MM 模块创建采购订单」这种流程拆解成可校验、可跳转、可嵌入学习平台、甚至能驱动自动化测试的结构化资产。它解决的不是「怎么录得清楚」而是「怎么让 SAP 操作本身变成可计算、可复用、可版本管理的数据」。如果你正被「培训视频看十遍仍不会操作」「新员工总在同一个屏幕卡住」「UAT 测试用例和实际操作对不上」这些问题困扰那 SAP_Tutor 不是备选方案而是你该优先验证的技术路径。2. 为什么必须用 SAP_Tutor 而非通用录屏工具SAP GUI 的黑匣子特性决定了普通录制必然失效2.1 SAP GUI 的三层交互隔离普通录屏根本看不到“真动作”SAP GUI尤其是经典版不是标准 Windows 控件堆叠而成的界面。它的按钮、表格、输入框大多由 SAP 自研控件如SAPGuiGridView、SAPGuiEdit渲染底层通过 RFC 协议与应用服务器通信。当你用 OBS 或 Camtasia 点击一个按钮时录屏软件只捕获到「鼠标坐标 (x320, y185) 在某个窗口区域发生了左键按下事件」但 SAP_Tutor 通过注入 SAP GUI 的 COM 接口SAPGUI.ScriptingCtrl.1直接监听OnCommand、OnSelectionChange、OnTextChanged等原生事件拿到的是[Event] Type: OnCommand Command: /nME21N ← 事务码启动 Source: MenuBar → Logistics → Materials Management → Purchasing → Purchase Order → Create [Event] Type: OnTextChanged Field: Purchase Order Header → Document Type Value: NB ← 字段赋值 [Event] Type: OnCommand Command: POST ← 工具栏按钮保存提示SAP_Tutor 启动前必须确保 SAP GUI 已启用脚本支持事务码SE41→ 设置 → 勾选「Enable scripting」。这是所有后续捕获的前提否则连第一个事件都收不到。2.2 结构化输出才是价值起点.sapt文件本质是带执行上下文的操作图谱SAP_Tutor 录制生成的主文件如PO_Creation.sapt是一个 XML 封装的二进制容器其内部结构并非线性时间轴而是以「步骤Step」为单位组织的有向图字段类型说明stepIdstring全局唯一 ID如step_001_create_po_headertriggerenumTransactionStart,FieldInput,ButtonPress,MenuSelecttargetobject包含controlType如EditBox、idPath如/wnd[0]/usr/subSUBSCREEN_HEADER:SAPLMEGUI:0015/subSUBSCREEN_ITEM:SAPLMEGUI:0020/tblSAPLMEGUI0020/txtMEPOITEM-MENGE[1,0]expectedStatejson录制时该控件的值、是否启用、是否可见等快照nextStepsarray可跳转的后续步骤 ID 列表支持分支逻辑这意味着同一份.sapt文件既能作为教学视频播放SAP_Tutor Player 渲染也能被 Python 脚本解析后生成自动化测试用例调用pyrfc模拟相同 RFC 调用还能导入 LMS 系统如 Moodle实现「点击某字段 → 弹出知识卡片」的增强学习。2.3 对比OBS 录制 vs SAP_Tutor 录制在典型场景中的能力断层场景OBS 录制SAP_Tutor 录制关键差异新员工卡在 ME21N 第二屏只能看到「他停在了那里」无法判断是字段没填、还是按钮灰显、或是权限不足可定位到具体步骤step_007_enter_vendor_number检查expectedState.enabled false自动关联权限对象M_BEST_EK缺失普通录屏是「现象记录」SAP_Tutor 是「状态诊断」客户要求「重放失败操作」做根因分析回放视频需人工逐帧找鼠标位置、读字段值耗时 20 分钟导出 JSON 日志过滤status ERROR直接定位到step_012_submit_po的errorCode ME 045物料主数据未维护SAP_Tutor 输出自带结构化错误上下文将操作流程嵌入 Web 培训页需切片、转码、写 JS 控制视频播放器无法响应用户真实点击直接加载.sapt SAP_Tutor Web SDK用户点击页面按钮即触发对应 SAP 操作需配置反向代理打通 Web 与 SAP GUISAP_Tutor 天然支持「操作即接口」3. 本地跑通 SAP_Tutor 最小闭环从安装、录制到生成可执行教学包3.1 环境准备三个不可妥协的前提条件SAP_Tutor 不是绿色软件它深度依赖 SAP GUI 运行时环境。以下三者缺一不可且版本必须匹配以主流 SAP GUI 7.70 为例✅SAP GUI for Windows 7.70 PL4 或更高版本必须安装完整版精简版无 Scripting 支持✅Microsoft .NET Framework 4.8Windows 10/11 默认已装旧系统需手动安装✅管理员权限运行安装包SAP_Tutor 需注册 COM 组件并写入 SAP GUI 配置注意SAP_Tutor 官方不提供独立下载入口它通常随 SAP PowerDesigner 或 SAP Enable Now 客户端捆绑分发。若你只有标题而无安装包最可靠路径是联系企业 SAP Basis 团队申请SAP_Tutor_Setup_2.1.3.msi当前稳定版2023 Q4 发布。3.2 安装与首次配置绕过「脚本未启用」的静默失败安装完成后不要立刻点「New Recording」。先完成两步验证确认 SAP GUI 脚本已全局启用打开任意 SAP GUI 窗口 →System→Status→ 查看右下角「Scripting: Active」是否显示为绿色。若为灰色按如下路径开启Options→Settings→Scripting→ 勾选Enable scripting→ 点击OK→重启 SAP GUI验证 SAP_Tutor 是否成功注入 COM 接口新建文本文件保存为test_com.vbs内容如下Set SapGuiAuto GetObject(SAPGUI) Set application SapGuiAuto.GetScriptingEngine Set connection application.Children(0) Set session connection.Children(0) MsgBox SAP_Tutor COM 接口可用当前事务码 session.Info.Transaction双击运行若弹出事务码信息则 COM 通信正常若报错「ActiveX component cant create object」说明安装未生效需卸载后以管理员身份重装。3.3 录制一个真实 PO 创建流程聚焦「可回放性」而非「画面完整性」我们以「创建标准采购订单ME21N」为例目标不是录满 5 分钟而是产出一个能在任意 SAP GUI 环境中一键重放的.sapt包启动 SAP_Tutor → 点击New Recording在弹出的 SAP GUI 窗口中手动输入/nME21N并回车不要用菜单导航避免路径依赖当进入抬头屏幕后只操作必填字段Document Type输入NBVendor输入1000001Purchasing Org输入1000Plant输入1000点击工具栏Enter或按Enter键→ 进入行项目屏幕在第一行Material输入MAT-001Quantity输入10点击Save或CtrlS→ 系统弹出「采购订单 XXXX 已保存」点击 SAP_Tutor 界面右上角Stop Recording此时生成的ME21N_Basic.sapt文件已包含全部字段赋值、按钮触发、状态校验逻辑。关键在于所有操作必须基于 SAP GUI 原生控件 ID而非坐标且避免使用 F4 搜索帮助因其弹窗 ID 动态变化。3.4 导出为可交付教学包.saptPlayerResources三位一体SAP_Tutor 录制后默认保存为.sapt但这只是源文件。要交付给学员需导出为自包含包在 SAP_Tutor 主界面右键刚录制的条目 →Export Package...选择导出路径建议新建空文件夹ME21N_Training_Package勾选☑ Export Player (Embed player executable)☑ Export Resources (Images, help texts, custom skins)☐ Export Source Code (仅开发调试用勿勾选)点击Export导出后ME21N_Training_Package文件夹内结构如下ME21N_Training_Package/ ├── SAP_Tutor_Player.exe ← 双击即可播放无需安装 SAP_Tutor ├── ME21N_Basic.sapt ← 核心操作定义 ├── resources/ │ ├── screenshots/ ← 每步自动截屏PNG │ └── tooltips/ ← 每字段悬浮提示文本XML └── config.xml ← 播放器皮肤、语言、跳转逻辑配置提示SAP_Tutor_Player.exe是便携式程序可直接拷贝到 U 盘或邮件发送。学员双击即启动无需 SAP GUI、无需网络、无需任何配置——这才是企业级培训交付的底线。4. SAP_Tutor 录制与回放的五大避坑指南血泪经验换来的参数清单4.1 现象回放时卡在登录界面Player 显示「Waiting for SAP GUI」原因SAP_Tutor Player 默认等待已打开的 SAP GUI 连接但若录制时用的是saplogon.exe启动而回放时用的是sapgui.exe或反之COM 接口句柄不匹配。解决在config.xml中强制指定连接模式playerConfig connectionModeLaunchNewSession/connectionMode !-- 改为 LaunchNewSession -- sapGuiPathC:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe/sapGuiPath /playerConfig并确保saplogon.exe路径正确新版 SAP GUI 默认安装在此。4.2 现象回放时字段赋值失败日志报Element not found: /wnd[0]/usr/ctxt...原因SAP GUI 屏幕分辨率或缩放比例如 Win10 125% 缩放导致控件 ID 解析偏移或 SAP GUI 补丁升级后控件 ID 规则变更。解决启用「容错定位」模式在录制前点击 SAP_Tutor 工具栏Settings→Recording Options→ 勾选Use fuzzy matching for control identification并设置模糊阈值为0.85默认 0.95 过严。4.3 现象导出的 Player 播放时闪退事件查看器报CLR20r3错误原因.NET Framework 版本不兼容。SAP_Tutor 2.1.3 依赖 .NET 4.8但某些 Windows Server 2012 R2 默认只装 .NET 4.5。解决在目标机器运行命令安装# 以管理员身份运行 PowerShell Start-Process https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net48-offline-installer -Wait # 安装后重启4.4 现象多语言环境下回放时字段名乱码如中文显示为????原因SAP_Tutor 默认使用系统 ANSI 编码保存字符串而 SAP GUI 中文环境使用 UTF-16。解决修改录制配置Settings→General→Text Encoding→ 改为UTF-16 LE并重新录制关键步骤。4.5 现象回放时F8执行按钮点击无效但手动点却正常原因SAP_Tutor 默认模拟「鼠标点击」但某些 SAP GUI 版本对F8的处理是键盘事件绑定需显式触发KeyStroke。解决在录制过程中当光标位于屏幕任意位置时不要用鼠标点 F8而是直接按键盘F8—— SAP_Tutor 会自动识别为KeyStroke事件并记录回放时调用session.SendCommand(/8)而非模拟坐标点击。5. 进阶实战用 Python 解析.sapt文件自动生成测试用例与操作文档5.1 解包.sapt它本质是 ZIP XML 的混合体SAP_Tutor 的.sapt文件不是加密二进制而是标准 ZIP 压缩包只是扩展名被改了。你可以直接用7z x file.sapt解压得到file.sapt/ ├── manifest.xml ← 元数据作者、创建时间、SAP GUI 版本 ├── steps/ ← 每个步骤的 XML 定义step_001.xml, step_002.xml... ├── resources/ ← 截图、音频、提示文本 └── config.xml ← 播放器全局配置其中steps/step_001.xml是核心结构示例如下step idstep_001_create_po triggerTransactionStart transactionCodeME21N/transactionCode menuPathLogistics.Materials Management.Purchasing.Purchase Order.Create/menuPath expectedState windowTitlePurchase Order: Initial Screen/windowTitle /expectedState nextSteps stepRef idstep_002_fill_header/ /nextSteps /step5.2 用 Python 提取所有字段操作生成 Excel 操作清单以下脚本将遍历所有steps/*.xml提取「字段赋值」类操作输出为operation_log.xlsx供内训师核对流程完整性# extract_sapt_steps.py import os import xml.etree.ElementTree as ET import pandas as pd from pathlib import Path def parse_sapt_folder(sapt_path: str): steps_dir Path(sapt_path) / steps records [] for xml_file in steps_dir.glob(*.xml): tree ET.parse(xml_file) root tree.getroot() if root.get(trigger) FieldInput: field_id root.find(fieldId).text if root.find(fieldId) is not None else unknown value root.find(value).text if root.find(value) is not None else # 解析 fieldId 得到业务含义简化版 business_field Vendor Number if LIFNR in field_id else \ Purchase Order Type if BSTYP in field_id else \ Material if MATNR in field_id else field_id records.append({ Step ID: root.get(id), Business Field: business_field, SAP Field ID: field_id, Value: value, Order: len(records) 1 }) return pd.DataFrame(records) if __name__ __main__: # 解压后的 sapt 文件夹路径 sapt_folder rC:\temp\ME21N_Training_Package\unpacked df parse_sapt_folder(sapt_folder) df.to_excel(operation_log.xlsx, indexFalse) print(f✅ 已生成 {len(df)} 条字段操作记录)运行后生成的 Excel 表格可直接发给业务顾问签字确认「第 3 步填的 Vendor Number 是否应为必填第 7 步 Material 是否需增加 F4 帮助」—— 把模糊的「操作流程」变成可审计的「字段级需求清单」。5.3 用.sapt驱动自动化测试绕过 GUI直连 RFC更进一步我们可以跳过 SAP GUI 播放用.sapt中的步骤定义生成pyrfc调用代码。以step_002_fill_header.xml为例step idstep_002_fill_header triggerFieldInput fieldId/wnd[0]/usr/ctxtEKPO-EBELN/fieldId valueNB/value fieldTypeEditBox/fieldType /step对应 RFC 调用逻辑伪代码BAPI_PO_CREATE1的POHEADER结构中DOC_TYPE NBPOITEM表中VENDOR 1000001因此一个.sapt文件天然就是「GUI 操作 ↔ RFC 参数」的映射字典。我一般会写一个转换器把steps/下所有FieldInput步骤按 SAP 表结构归类输出为 YAML# me21n_rfc_mapping.yaml header: DOC_TYPE: NB VENDOR: 1000001 PURCH_ORG: 1000 item_table: - MATERIAL: MAT-001 QUANTITY: 10再用此 YAML 驱动pyrfc调用实现「零 GUI 的回归测试」—— 这正是 SAP_Tutor 在 CI/CD 流程中不可替代的价值它让业务操作定义同时成为测试用例、培训材料、需求文档的单一信源。我坚持把 SAP_Tutor 当作「SAP 操作的 Schema 定义语言」来用而不是录屏工具。每次录制前我会花 5 分钟画一张手绘流程图标出所有必填字段、分支判断点、权限依赖项录制时严格按图操作宁可多录三遍也不接受「差不多就行」。因为.sapt文件一旦生成它就成为了团队共用的契约——开发按它写 RFC测试按它写 case培训按它做课件。这种一致性带来的效率提升远超节省的那几分钟录制时间。希望帮到你。本文还有配套的精品资源点击获取