LSMW录屏批量上载:SAP数据迁移的兜底方案与实战避坑指南
2026/9/23 14:53:47 网站建设 项目流程

简介:LSMW 是 SAP 数据迁移的核心工具,而 Batch Input Recording 方式特别适合标准化、重复性高的数据上载场景。这份实战操作手册正是围绕该主题展开,面向 SAP 实施顾问、IT 支持人员及需要做数据迁移的运维人员。手册完整覆盖 LSMW 从零到上机的十四个关键环节,包括创建 Project 与 Subproject、录制事务代码屏幕、维护源结构和字段映射、处理常量与固定值、导出 Excel 模板并整理 TXT 数据、分配数据、读取与转换、生成批处理会话及在 SM35 中运行并检查结果。针对录屏过程中常见的顺序错误、缺少字段、对应关系错位等问题,给出了重复录制、Initial 清理、Rule 设定常量等具体处理思路,便于提升批导成功率。资源为 1 个 docx 文档,压缩包约 4.97MB,内容紧凑、步骤清晰,适合需要快速掌握 LSMW 批导方法的人参考。目前已有 774 人学习,可作为日常数据迁移工作的速查手册。

1. 录屏批量上载:为什么我把LSMW的Batch Input Recording当成迁移兜底方案

做SAP数据迁移的人,十有八九都遇到过这种场景:业务给了你一张几万行的Excel,要往SAP里建主数据或过账凭证,但既没有现成的BAPI,又没有规范的IDOC,甚至对业务表结构都不熟。这时候我最先翻出来的工具就是LSMW的录屏批量上载,也就是Batch Input Recording方式。LSMW本身是SAP的迁移工作台,它有很多种输入方式,录屏是里头最"笨"但也最"稳"的一种——因为它不挑数据源,不挑事务代码,SAP的标准事务能不能支持批量创建,全靠你用手点一遍然后让系统记下来。

这个方案的核心思路很简单:你操作事务代码的过程被录制下来,LSMW把你录的每一步界面字段保存成"批输入会话",再用Excel里的数据去替换录屏里的固定值,然后回放到目标事务里执行。它适合所有事务代码,无论是MM01创建物料主数据,还是FB50记账,甚至自定义事务码,只要你能手点保存,就能让它批量执行。对新手来说,录屏方式入门门槛低,不用写ABAP,BAPI和IDOC的接口开发可以慢慢学,录屏是当天就能出活的那种。

本篇我不打算给你讲一堆理论,直接按我在真实项目里操作LSMW的顺序往下走,从录屏、建项目、映射字段到排错,一步步说清楚。没有特殊说明的话,我用的都是SAP GUI的普通操作,S4/HANA和ECC都适用。如果你是第一次做迁移,照着一章一章点下去也能跑通。如果你已经做过几次,重点看看第4章的坑,那些都是我实打实翻过车的地方。

2. 录屏之前:用SHDB录事务代码的完整过程与参数选择

2.1 SHDB录屏与LSMW录屏的关系

很多人分不清SHDB和LSMW里的Recording到底是不是一回事。严格讲,SHDB是SAP的录屏事务代码,它录出来的东西可以单独运行,也可以导出给LSMW用。LSMW在创建录屏时,其实也是调用了同样的录屏引擎,只是把结果保存在LSMW的项目里。SHDB的优势是它在录屏时能把屏幕字段和字段值都展示出来,方便你确认该映射哪些字段;LSMW自带录屏也可以,但字段检查的体验不如SHDB直观。

我一般的操作习惯是:先在SHDB里录一遍,确认事务代码每一步都能走通,然后再进LSMW,用"创建录屏"的方式把同样的步骤再操作一遍。为啥要录两遍?因为SHDB录的屏幕字段清单可以随时打开看,而LSMW里面改录屏时界面比较笨重。你第一遍录屏时如果把输入框里的固定值填错了,后面映射字段还得反复改,不如先在SHDB里把屏幕字段和值的关系理清。

2.2 录制前要准备的数据与录屏步骤

录屏前最重要的一件事是把事务代码的"全流程"定下来。所谓全流程,不是只录到保存,而是包括弹出确认框、选视图、填字段、回车、再进下一个界面,一直到屏幕上出现"已保存"为止。很多新手录屏只录到保存那一步就停了,结果批输入会话回放时,后面的弹窗没人点,数据就卡在半路。

以创建物料主数据MM01为例,我建议用这样一个录制清单:

步骤屏幕操作输入内容说明
1输入事务代码MM01回车进入初始屏
2填写物料号例如&TB_DATA这个位置后面要用源字段替换
3填写行业领域、物料类型固定值或占位符记录创建的基本框架
4选择视图勾选基本数据、销售等视图选错会导致后面字段缺失
5回车进入维护屏等待屏幕刷新
6填写各视图字段字段值公司代码/工厂区域等非必填尽量不录
7回车或点保存一定要等到"数据已保存"的消息

录制时,所有要批量替换的数据字段,统一填一个不会重复的占位符,比如物料号填ZTEST001,名称填TEMP_NAME。这样后面在LSMW里用源字段替换时不容易认错。固定值(比如物料类型ZMAT)可以直接填实际值,后续不用映射。

进入SHDB后,点击"录制"按钮,输入事务代码MM01,系统开始自动记录你的每一步操作。录制过程中留意一点:不要用鼠标点屏幕上的图标按钮,尽量用回车和Tab键切换字段。因为批输入回放是按字段顺序定位的,鼠标点击可能不会记录字段名,导致回放时找不到输入位置。

2.3 录屏的常见录制选项和校验点

SHDB的录屏界面里,录制完成后会显示一串屏幕字段列表。列表里每一条都对应一个屏幕上的输入框,字段名类似于RMMG1-MATNRMAKT-MAKTX。你需要在这里确认两件事:第一,每个要替换的字段名是否出现在列表里;第二,字段名后面显示的"屏幕值"是不是你刚刚填入的占位符。如果发现某个字段不在列表里,说明录入时用的是下拉列表或自定义控件,这种字段在录屏回放时很容易出问题。

录制选项里有"同时记录屏幕图像"和"用于重复录制"等开关。我的经验是,除非你需要逐步调试会话,否则不要勾选"屏幕图像",因为会占用额外存储空间,处理大文件时影响性能。LSMW录屏选项里的"批输入大小"建议设成1,即每条数据单独一个会话。虽然这样会产生大量会话,但单条出错时不会影响整批,方便你精确定位问题。

录屏完成后,务必先在SHDB里手动运行一次这个录屏,确认它能把占位符的数据成功创建出来。手动运行成功,才说明录屏本身没问题。如果这一步就报错,不要急着去LSMW里映射字段,先把事务代码的录制过程修正。这里有个小技巧:SHDB里运行录屏后,系统会自动显示生成的批输入表,你可以在执行前临时改一下物料号,验证录屏的可替换性。

3. 在LSMW中把录屏变成批输入会话:项目映射与执行

3.1 创建LSMW项目并导入录屏

进入事务代码LSMW后,首先看到的是LSMW初始界面。你需要先维护一个项目对象,这包括三个层级:项目(Project)、子项目(Subproject)和对象(Object)。命名上没有特殊限制,但我在生产项目里建议用业务含义命名,例如MM_MASTERFI_OPENITEM,这样后续多人维护时一眼就能看懂。命名规则一旦定下来,整个项目生命周期内不要随意改,因为LSMW的配置记录是跟着这个对象组合走的。

LSMW对象创建完成后,系统会弹出一系列维护步骤,从"维护对象属性"一直到"执行批输入会话"。每一步对应一个编号,必须按顺序做。创建录屏时,在第二步里勾选"批输入录制",然后点击"录制"按钮。此时系统会要求你输入事务代码,并进入录屏界面。这个操作和第2章里SHDB的行为几乎一样,但有一点差别:LSMW会提示你为录屏起一个内部名称,后面字段映射时这个名称会出现在对象树里。

从SHDB导入录屏到LSMW也是可行的操作。如果你之前已经在SHDB里录好了,可以在LSMW的"维护录屏"步骤里选择"导入录屏",填上SHDB里录屏的名称。这个功能在数据量大的时候特别好用,因为你可以让业务顾问单独去录屏,由开发顾问在LSMW里做映射,两边互不阻塞。

3.2 源结构、源字段与字段映射的对应关系

LSMW录屏方式里的数据来源是Excel文件,但LSMW读文件之前,你需要先定义源结构和源字段。源结构可以理解成Excel表格的"一行数据";源字段就是这一行里的每一列。如果你要上传的物料主数据有10个要填的字段,那源结构里至少要有10个源字段。

定义源结构时,我习惯把源字段名称设置成和SAP屏幕字段相似的名字,比如MATNRMAKTXMBRSH。这不是必需的,但字段映射时会轻松很多,因为LSMW的映射界面里会同时显示源字段和目标字段,名字相近不容易看花眼。每个源字段的数据类型和长度尽量接近目标字段,例如物料号在SAP里是CHAR40,而你Excel里如果定义成CHAR40,在读取时就不会出现截断报错。

源结构维护好后,进入"维护映射关系"界面。LSMW提供三种映射方式:固定值、常量、源字段。你需要把录屏里出现的屏幕字段与源字段一一对应。举个例子,录屏时物料号字段RMMG1-MATNR的值是ZTEST001,在映射界面里点击这个字段,选择"源字段",再选中你Excel模板里的MATNR字段,系统就会在生成会话时用Excel里每行的物料号替换掉ZTEST001。而像工厂WERKS字段,如果你所有物料都进同一个工厂,可以直接映射成固定值1000

映射关系维护完,最好用"显示映射关系"功能整体过一遍,重点看有没有遗漏的必填字段。批输入会话和手动操作一样,事务代码里必填字段如果为空,回放时就会报错。所以要特别留意录屏时那些明明为空但屏幕高亮的字段,它们通常也要在源结构里给一个空格或初始值。

3.3 读取数据、生成批输入会话与运行会话

映射做完,接下来把Excel文件上传到LSMW。在LSMW左侧维护步骤树里找到"读取数据",点击"读取"按钮后,指定本地文件路径。Excel文件的第一行必须是字段名,和第二行开始的每行数据。LSMW读取完成后会显示读取的总记录数,这个数字应该和Excel行数减一相等。如果读取的数字不对,检查文件编码,CSV文件建议用TAB分隔,直接复制Excel内容到TAB分隔的文本里最不容易出问题。

读取成功后,下一步是"生成批输入会话"。生成前要设置会话参数,关键参数是"批输入方式"和"批输入大小"。批输入方式有两种:一种是"前台运行",批输入会话执行时会一个屏幕一个屏幕地走;另一种是"后台运行",不显示界面。生成会话时建议选"后台运行",因为前台运行会在你电脑上疯狂弹窗。批输入大小设成1,每条数据生成一个会话,是排错最方便的模式。

批输入会话生成后,可以在SM35事务代码里查看所有会话。每一个会话的标题就是你之前维护的LSMW对象名称加序号。双击一个会话,可以看到这条数据对应的所有屏幕字段和替换后的值。这一步是我必做的:随机抽三条数据,逐个屏幕检查字段值是否被正确替换。如果替换乱了,多半是源字段和目标字段顺序对不上,回映射界面调整后再重新生成会话。

一切正常后,选中所有会话,点击"执行"按钮。执行方式建议先选"处理",再选"显示所有的错误消息"。等系统跑完后,你会看到会话状态变成"已处理"或"错误"。真正投入生产批量前,我建议先用10条真实数据小跑一遍,确认没问题后再放全量。跑出来的财务凭证或主数据,记得截图留底,方便出问题时追责。

4. 避坑:LSMW录屏批量上载的10个常见问题与排查

4.1 现象:录屏保存时报"字段无屏幕"或输入不了值

录屏的时候,光标停在某个输入框,但你敲键盘输入却没有任何反应,或是保存录屏时提示字段无屏幕。这个现象在长文本、下拉选择、树形列表控件上尤其常见。原因一般是该屏幕字段不是标准的DATADECL字段,而是由程序控制的特殊控件。解决方法是换一个位置输入同样的业务数据。比如长文本你最初是在页签里输入,可以试试弹出框的形式;日期字段如果日历控件输入不了,就改为直接输入YYYYMMDD。如果实在绕不开,建议放弃用这个事务录屏,改用BAPI或直接数据库更新方案。

4.2 现象:批输入会话运行一半出错,后面全部停掉

SM35里一个会话包含多条数据时,运行到中间某一条报了错,后续数据直接被终止。原因通常是生成会话时设了"批输入大小"为一个大数,导致所有数据挤在一个会话里,任何一条出错都会中断整个会话。解决方法是把批输入大小改成1,重新生成会话。这样每笔数据独立执行,即便某一条出错,其他正常会话还能继续处理。但要注意,改成1会生成大量会话,SM35列表会非常长,建议在"从头开始选择"处加上时间和状态过滤,只挑未处理的会话。

4.3 现象:日期和数字格式对不上,显示"00.00.0000"

Excel里的日期列明明是2024-01-15,上载后到SAP里却变成了00.00.0000,或者数字变成了1,000这种千分位格式,导致金额翻倍。根本原因是LSMW读取文本数据时,没有按日期格式转换,直接把字符串塞给了屏幕字段。解决方法是:在源结构里把日期字段定义为C(字符)类型,长度10,然后在映射关系里通过"转换规则"追加一个转换步骤,把YYYYMMDD转成SAP内部格式。如果Excel里是2024-01-15,通常转换为20240115即可。也可以用LSMW里的"字段转换"功能,选择DATE_FORMAT规则,源格式填YYYYMMDD,目标格式填空,系统会自动转换。

数字字段的问题大多是Excel里单元格显示成带千分位的格式,导出到文件时就带上了逗号。处理这类问题的标准做法是,在Excel里先把所有数字列设置为0位小数,并且不使用千位分隔符,再另存为TXT文件。如果你用别人发来的Excel,又没权限改格式,可以在LSMW的源字段定义里把类型设为字符,然后用字符串去逗号替换,再转数字。

4.4 现象:录屏时录入的内容是固定值,导致每次批量上载都是同一笔

映射关系里,某个屏幕字段没有和被任何源字段或常量绑定,而是保持了录制时的原值。于是不管Excel里填了什么,最终上载到SAP的都是录制时的那个固定值。比如录屏时在文本字段里敲了"TEMP",你忘了映射它,结果每行数据的文本都是"TEMP"。排查方法:在映射界面里点击"显示映射清单",凡是没显示来源的字段,要么是录制时为空才允许,要么是固定值残留。建议对录屏里所有非空的字段逐一确认映射来源。数值型字段(如金额、数量)如果不需要替换,就显式映射成常量0或常量值,不要留空。

4.5 现象:批输入会话堵在后台,SM35一直黄或红

会话执行后长时间卡在"待处理"状态,或者状态一直是"后台处理中"红色。查看SM35会话列表,发现系统提示批输入事务被锁。原因通常是同一用户或同一设备同时启动了多个批输入处理,或者某条数据触发了SAP的锁表机制。解决方法是先在SM35里找到状态为"计划"的会话,右键选择"删除",清理卡住的会话任务。然后到进程管理里把多余的批输入任务取消。最稳妥的是,一个大批上载期间,只开一个SAP GUI窗口处理SM35,别同时操作同一事务的其他数据录入。

5. 进阶:让LSMW录屏上载从"能跑"到"用得顺"的几个技巧

批输入会话跑通后,你会发现很多改善体验的空间。第一个技巧是在Excel里直接生成LSMW要求的源文件格式。拿MM01来说,如果每次业务都给你不同列顺序的Excel,你可以在Excel里做一个模板Sheet,用VLOOKUP把业务填的表单映射到LSMW源文件固定的列顺序上,然后另存为TXT。这样LSMW项目里的源字段和映射关系可以一直保持不变,上载新批次时只需要用模板刷新数据。这种模板我维护了好几年,上线新工厂时直接套用,省了不少重复配置的时间。

第二个技巧是学会读SM35的出错信息。出错时不要只看第一行红色报错,要双击错误消息,系统会跳到对应的屏幕和字段上,并显示导致错误的值是什么。大多数时候是"字段长度超出"或"字段不完整"。把这些报错信息按事务代码和字段名整理成一个常见错误对照表,下次遇到相同问题,直接按对照表操作。比每次临时猜更快。

第三个技巧是写一个小工具用于批量生成TXT文件。如果你要上载的数据来自多个部门,每个部门发的Excel结构都不一样,与其在LSMW里反复改源字段,不如写一个简单的ABAP报表,把多个文件源读进来,统一输出成LSMW标准源文件。这个报表不复杂,原理就是读取本地文件、按映射规则拼字段、生成TAB分隔的文本。我把这个报表放在自定义程序包里,接口都不需要开发,LSMW项目本身就成了一个轻量数据接口。

最后一个建议是,正式跑大单前一定要准备一个"RFM预案"。所谓RFM,这里是指回滚和重复运行的机制。批输入会话不像BAPI那样天然有事务回滚特性,如果跑到一半失败,你要手动清理已创建的数据。所以在大规模上载前,我会先把源文件按照主数据操作或财务凭证拆分成1000条一组的多个文件,做完一组立刻在系统里抽查结果,确认无误再进行下一组。这样就算出了问题,损失也只在一个小范围内。

上面这些习惯和技巧,是我在一个又一个上载项目里熬出来的。早期我图省事,一个会话塞几万条数据,一出错整个会话报废,光排查问题就耗了两天。现在宁可多分几个会话,也要保证每次上载可定位、可回滚。LSMW的录屏方式虽然看起来不够"高科技",但只要把控好录屏细节和会话粒度,它是SAP数据迁移里最稳妥的后备方案。希望这套方法论和踩过的坑,能在你下次面对"怎么把这堆Excel塞进SAP"这个问题时,帮你少走点弯路。

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

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

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

立即咨询