☰
SAP批处理工具SHDB与LSMW实操对比:从MMPV账期开账到数据迁移避坑指南
2026/10/29 9:12:24 网站建设 项目流程

简介:这份文档面向SAP顾问、运维人员及数据迁移实施者,系统讲解BDC与LSMW两种批处理工具的使用方法,帮助解决系统内批量数据处理与旧系统数据迁移的实际问题。资源包内含1个docx文档,大小约2.49MB,内容以图文结合的方式展开,涵盖工具原理、操作流程与业务场景示例。文档重点拆解BDC的录制脚本、前台与后台执行、批量脚本生成及邮件合并技巧,并完整梳理LSMW从创建对象、定义数据文件与源目标结构,到设定转换规则、执行数据传输的全流程,同时对比两者在轻量级批处理与大规模数据迁移中的适用差异。目前已有1748人学习,适合需要掌握SAP批处理操作、提升数据导入效率的从业者参考借鉴。

1. 从一次 21 个月的账期开账说起:SHDB 与 LSMW 到底怎么选

公司代码 0001 的物料帐期停在 1998 年 3 月,要逐月开到 1999 年 12 月,整整 21 次重复操作。手工点 MMPV 点到手酸不说,中间漏一个月、年份填错一位,后面查起来就是血泪经验。这种场景在 SAP 里太常见了——月结、批量建主数据、初始化库存、导入销售订单,凡是「同一个 T-CODE 反复跑、只是参数不同」的活,都该交给批处理工具。

SAP 里能干的工具不止一个,SCAT、BDC、LSMW 各有侧重。BDC 全称 Batch Data Conversion,事物码 SHDB,是个轻量级选手,靠录屏生成脚本,适合单一 T-CODE 的重复执行;LSMW 全称 Legacy System Migration Workbench,事物码就是 LSMW,是上线数据准备的主力,能对主数据、动态数据、业务数据做批量导入,原理是录像加模板加预转换。选哪个不玄学:只跑一个事物码、逻辑简单,用 SHDB;要迁数据、字段要映射转换、量大且结构复杂,用 LSMW。这篇就把两套工具的实操流程、参数设置和踩坑点拆开讲清楚。

2. SHDB 实操:从 MMPV 录屏到 20 条批量脚本导入

2.1 创建记录与录屏参数怎么设

进 SHDB 之前先想清楚一件事:你要录的是哪个 T-CODE,它涉及几个屏幕。本例用 MMPV 打开物料帐期,这个操作有多屏交互,所以创建记录时「提交后继续」必须打勾,否则录到第二屏就断了。

前台输入 SHDB 进入初始界面,列表里是已有的 Recording。点「新建记录」,弹出对话框填两项:记录名称随便起个能认出来的,事务代码填 MMPV。提交后继续打上标志,点「开始记录」。

接下来系统带你走一遍 MMPV。输入公司代码 0001 和期间,点运行,系统弹警告,不用改,直接回车继续,执行成功后连续点退出键退出 MMPV。这里有个铁律:录屏过程中不要有多余的键盘、鼠标操作。列表出现滚动条时,用 PageUp、PageDown 翻页,别用鼠标拖——鼠标滚动录进去就是垃圾指令,执行时直接翻车。

录完回到 SHDB,脚本里能看到三个屏幕的信息。重点盯两个字段:I_LFMON 是月份,宽度 2 字节;I_LFGJA 是年份,宽度 4 字节;I_VBUKR 的值 0001 就是公司代码。这三个字段就是后面批量替换的抓手。

2.2 少量重复:直接改字段执行

记录还没保存也能跑。在图 6 那个脚本界面,直接把年份、月份字段改成 1998 年 5 月,或者换成别的公司代码,点「处理」就能重新执行 MMPV。这种改法适合三五次的小批量,改一次跑一次,心里有数。

但 20 次就别这么干了,手改容易错,而且没有留痕。这时候要走导出模板的路子。

2.3 导出模板与邮件合并生成批量脚本

点导出键,把录屏脚本存成本地文本文件,本例叫 ZMMPV.txt。打开看一眼结构,它是一段一段的,每段对应一次执行,字段值嵌在固定位置。

生成批量脚本常见做法是用 Office 邮件合并。思路是:把 ZMMPV.txt 当主文档模板,把要变的字段(月份、年份)做成合并域,数据源就是一张两列的 Excel——一列月份、一列年份,从 1998 年 5 月排到 1999 年 12 月,正好 20 行。合并后生成一个纯文本文件,本例叫 MMPV_BATH.txt,里面包含 20 次执行的完整脚本。

因为 0001 已经开了 1998 年 4 月,所以批量脚本从 5 月开始,20 条正好补到 1999 年 12 月。加上前面那次录像,一共 21 次业务操作。

2.4 导入执行与处理模式选择

点导入键加载 MMPV_BATH.txt,覆盖原有数据。界面里第一个执行脚本的月份、年份应该已经是 5 和 1998。行数会变成原来的 20 倍——原文显示 261 行,是因为末尾多了一个空行,不影响执行。

点「处理」,弹出对话框选执行方式。处理模式有前台(A 显示所有屏幕)、后台(N 后台处理)等。本例选后台,确认后执行。后台执行看不到每步屏幕,全部跑完给出结果记录。到这里,21 次操作把物料帐期开到了 1999 年 12 月。

创建的记录如果以后还要用,记得在概览界面保存,否则下次进来又得重录。

提示:后台执行前,先用前台模式跑一条验证脚本正确性,确认无误再切后台批量跑。这个习惯能省掉大量回滚时间。

3. LSMW 实操:14 步标准流程与数据迁移落地

3.1 管理界面与分步菜单的取舍

LSMW 进主窗口输入事物码 LSMW。第一次运行会弹欢迎界面,把选择框打勾下次不再显示,确认后进管理界面。这个界面管几件事:批导入对象的新增、修改、删除、查找、导出、导入,以及进入录像操作界面和分步操作界面。

要做批处理,先在管理界面确定 Project、Subproject、Object 三层结构,输入或选择后按运行键进分步操作界面。IDES 4.71 下有 20 个步骤,ECC 6.0 标准只有 14 个。实际操作不需要 20 步,点选择用户菜单的键,把不用的最后 6 个菜单项去掉选择标志,确认后回到 14 步标准菜单。想恢复默认值就按对应按钮。

这 14 步是 LSMW 的主干,按顺序走:准备数据、定义转换模板、读取数据并预转换、实际转换。下面挑关键步骤说。

3.2 数据文件定义与源结构、目标结构

数据文件定义这一步决定 LSMW 怎么读你的源数据。要选数据源类型(比如本地文件)、数据格式(分隔符还是定长)、字段格式。常见做法是把源数据整理成制表符分隔的文本,字段顺序固定,避免中文和特殊字符。

源结构定义的是你文件里长什么样,目标结构定义的是 SAP 里要长什么样。两者字段不一定一一对应,中间靠转换规则桥接。比如源文件里日期是 20240101,SAP 要的是 2024.01.01,这个转换就在规则里写。

3.3 转换规则与预转换

转换规则是 LSMW 的核心。每个目标字段配一条规则,可以是直接赋值、常量、拼接、或者调用转换例程。写规则时注意字段长度和类型,源字段比目标字段长会截断,类型不匹配会报错。

读取数据并预转换这一步,LSMW 把源文件读进来,按规则转成 SAP 格式,但不写库。这一步是后悔药——预转换结果不对,回去改规则重跑,不会污染生产数据。预转换通过后再做实际转换,数据才真正进 SAP。

3.4 实际转换与结果核对

实际转换执行时,LSMW 按批次把数据写入。跑完看日志,成功多少条、失败多少条、失败原因是什么。常见失败是主数据不存在(比如导入销售订单但客户编号没建)、必输字段为空、日期格式不对。

核对时别只看总数,要抽查几条关键字段。批量导入最怕的是「全成功了但数据是错的」,比如单位转换没做、税率填反了,这种错误在日志里看不出来,得靠业务侧验证。

注意:LSMW 实际转换前,务必在测试客户端跑一遍完整流程。生产环境直接跑,出问题回滚成本极高。

4. 避坑与排查:BDC 和 LSMW 的五个常见翻车点

4.1 录屏时混入多余操作,脚本执行报错

现象:SHDB 脚本执行到某一屏卡住,提示字段找不到或屏幕不匹配。 原因:录屏时用了鼠标滚轮、点了无关按钮、或者窗口切换,这些动作被录进脚本,执行时环境不同就崩。 解决:重录,全程只用键盘,翻页用 PageUp、PageDown,录完先在前台模式跑一条验证。

4.2 批量脚本字段错位,月份年份串行

现象:导入 MMPV_BATH.txt 后,执行结果月份对但年份错,或者反过来。 原因:邮件合并时合并域位置偏移,或者源数据 Excel 里月份年份列顺序和模板不一致。 解决:合并后先打开生成的文本,抽查前三条和后三条的字段值,确认无误再导入。

4.3 LSMW 预转换通过但实际转换失败

现象:预转换日志全绿,实际转换报「字段 XX 不允许为空」或「值 XX 不在检查表」。 原因:预转换只做格式转换,不做业务校验;实际转换会触发 SAP 的输入检查,主数据缺失、配置未维护都会拦。 解决:实际转换前,确认依赖的主数据(客户、物料、供应商)和配置(公司代码、工厂、税码)都已就绪。

4.4 后台执行无日志,失败后不知从哪查

现象:SHDB 后台批量执行,结果记录只显示成功条数,失败的不说原因。 原因:后台模式不显示每步屏幕,错误信息被吞。 解决:先用前台模式跑一条,看完整屏幕和报错;或者分批跑,缩小范围定位问题脚本。

4.5 LSMW 步骤菜单被误改,找不到关键步骤

现象:分步操作界面菜单项少了,或者顺序乱了。 原因:在选择用户菜单里误删了必要步骤,或者恢复了错误的默认值。 解决:按恢复默认值按钮重置,重新按 14 步标准勾选;实在乱了就重建 Object。

5. 进阶技巧:把批处理脚本管起来,别让它变成黑匣子

批处理工具用顺手之后,最大的风险不是不会用,而是用了不管。脚本散落在本地、命名随意、没有版本记录,过三个月自己都忘了哪个是最终版。我一般会做三件事。

第一,脚本文件按「T-CODE_业务_日期_版本」命名,比如 MMPV_账期开账_20240101_v2.txt,存到固定目录,别放桌面。第二,每次批量执行前,先跑一条前台验证,确认脚本没被误改。第三,LSMW 的 Project、Subproject、Object 命名要有业务含义,别用 ZTEST1、ZTEST2,后面查起来就是黑匣子。

验证方法上,SHDB 跑完看结果记录的成功条数是否等于预期;LSMW 跑完看日志的成功失败比,再抽查关键字段。两者都建议在测试客户端先跑全流程。

对比项SHDB (BDC)LSMW
适用场景单一 T-CODE 重复执行大批量数据迁移、字段映射转换
录屏方式直接录 T-CODE 操作录屏加模板加预转换
批量生成导出模板 + 邮件合并数据文件 + 转换规则
执行模式前台/后台预转换/实际转换
学习曲线低,半天上手中,需理解结构映射

从那以后我每次做批处理,都强制走一遍「前台验证一条、再后台批量」的流程,不管多急都不跳过。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询