尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SAP批处理与数据迁移实战:BDC和LSMW全流程解析

SAP批处理与数据迁移实战:BDC和LSMW全流程解析 简介SAP批处理工具使用详解是一份面向SAP顾问、运维及数据迁移项目人员的文档型资源重点讲透BDCBatch Data Conversion与LSMWLegacy System Migration Workbench的适用场景与操作流程。压缩包内为1个docx文档大小约2.49MB以图文步骤说明SHDB录屏脚本的录制与执行、前台/后台模式选择、模板导出及Office邮件合并生成批量脚本同时覆盖LSMW对象创建、源结构与目标结构定义、转换规则设定、数据传输等关键环节。文档结合物料账期逐月调整、公司代码维护等实例给出从单个事物码录屏到生成批量执行脚本的完整思路既有录屏与脚本生成的操作截图也有转换规则配置要点便于按图索骥。已有1748人学习下载。对需要快速上手批处理操作的读者可按文档步骤直接实践提升效率并减少手工错误。1. SAP批处理工具从哪入手先分清BDC和LSMW的边界做SAP数据迁移和批处理绕不开BDC和LSMW这两个词。BDC轻量事务码SHDB录屏回放解决几十次这种量级的重复操作LSMW是重武器14个标准步骤走完适合大批量主数据和业务数据迁移。两种工具我都实际用过BDC开物料帐期、LSMW导主数据各有各的顺手和坑。这篇文章按两条线走一遍BDC从录屏到批量执行的完整链路LSMW从数据准备到批输入会话的14步流程参数怎么设、哪些地方容易翻车都写在后面。适合SAP顾问、月结运维和刚接触数据迁移的读者。2. BDC实战用SHDB把21次物料帐期操作压成一次批量执行2.1 SHDB录屏的三个前提事务代码、提交后继续、录屏纪律进入事务码SHDB点“新建记录”弹出来的对话框只有三个关键输入记录名称、事务代码、提交后继续。记录名称自己起能看懂就行事务代码这次填MMPV也就是打开物料帐期的事务码。第三个“提交后继续”要打勾因为MMPV是多屏操作从输入公司代码和期间的屏幕到报警提示屏幕再到结果展示屏幕如果这个选项不打勾录到第一个屏幕结束就停了后面的屏幕进不去。录屏过程中最重要的是纪律不做任何多余操作。点错了按钮、鼠标划过菜单、列表出现时用鼠标拖滚动条这些都会被记录进脚本后面批量执行时就会变成多余的屏幕操作导致脚本错乱。遇到有滚动条的列表用PageUp、PageDown翻页不要用鼠标滚轮。MMPV这个事务码录的过程是三屏第一屏输公司代码0001、期间1998年4月点执行第二屏弹出警告直接回车第三屏显示执行结果连续按退出键返回。回到SHDB后能看到录屏脚本里面有三个屏幕的记录。这时注意脚本里的关键字段I_LFMON是月份2字节I_LFGJA是年份4字节I_VBUKR是公司代码。提示脚本里I_LFMON是两位的月份5月必须写成05写成4会在这个字段上报错。2.2 录制完脚本的两种用法改字段重执行与导出模板录屏脚本在SHDB里可以直接改字段值再点“处理”重新执行。比如把I_LFGJA改成1998、I_LFMON改成05再点处理就把5月的帐期开了。这种方式适合重复次数少的情况比如三五次的手工调整改字段比重新录一遍快。超过十次就不值得手工改了。点导出键把脚本存成文本文件比如ZMMPV.txt这个文件就是批量脚本的模板。导出来以后用Office邮件合并加工把月份、年份替换成变量先生成一个包含20次执行的批量脚本MMPV_BATH.txt。邮件合并的原理不复杂把Excel或Word表里的年月字段和脚本模板里对应的行绑定合并后每条记录展开成一段完整脚本。合并后的脚本长这样BDC_TCODE MMPV BDC_OKCODE /11 BDC_CURSOR I_VBUKR BDC_FIELD I_VBUKR, 0001 BDC_FIELD I_LFGJA, 1998 BDC_FIELD I_LFMON, 05 BDC_OKCODE ONLI BDC_TCODE MMPV BDC_OKCODE /11 BDC_CURSOR I_VBUKR BDC_FIELD I_VBUKR, 0001 BDC_FIELD I_LFGJA, 1998 BDC_FIELD I_LFMON, 06 BDC_OKCODE ONLI每次执行以BDC_TCODE开头后面跟屏幕操作。BDC_OKCODE /11表示回车或执行当前屏幕不同屏幕的操作码不一样BDC_CURSOR是指定光标位置通常放在要输入的字段上BDC_FIELD就是实际要写入的界面字段值格式是字段名、逗号、单引号包住的值。这里注意月份I_LFMON是两位5月要写成05年份I_LFGJA四位1998。按这个格式20次执行就是把20段这样的脚本纵向拼在一起。2.3 导入批量脚本与处理模式前台A还是后台N在SHDB界面点导入键选择MMPV_BATH.txt导入后原来录屏的单条脚本被覆盖列表里能看到第一条显示的已经是1998年5月。20次执行对应261行左右比原来13行多出20倍。点“处理”后会弹处理记录对话框处理模式有前台A和后台N两种。前台模式会把每次执行的屏幕都回放一遍能看到每个屏幕的字段和确认画面适合执行前验证脚本是否正确。后台模式直接在系统里跑看不到屏幕但速度快适合确认过脚本可靠之后的大量执行。本例20次操作选后台。执行完毕SHDB列表会显示处理记录逐条展开能看到每次执行的状态有成功、有失败。下一章把LSMW的14步走一遍。3. LSMW实操14个步骤完成主数据迁移比BDC重但稳3.1 LSMW的三层结构与两种界面LSMW的事务码就是LSMW第一次进入会先看到欢迎界面勾选“下次不再显示”然后确认。管理界面主要做项目对象的管理Project、Subproject、Object三层一个Project是一个迁移项目Subproject可以按数据类型分组比如静态数据、动态数据、业务数据Object就是具体的导入对象比如物料主数据、客户主数据。选定三层对象后点运行进入分步操作界面。IDES 4.71老版本显示20个步骤ECC 6.0只有14个把固定值维护、翻译、用户例程这些合并了。14个步骤从定义对象属性开始一直到运行批输入会话结束整个流程覆盖了“准备数据→定义模板→读取预转换→实际转换”四个阶段。3.2 14个标准步骤拆解对象、结构、映射、转换、执行完整流程见下表步骤名称用途1Define Object Attributes定义对象属性指定源数据语言、转换程序2Maintain Source Structures维护源结构定义数据文件在LSMW里的字段结构3Maintain Source Fields维护源字段逐个定义字段名、类型、长度4Maintain Structure Relations维护结构关系把源结构和目标SAP结构绑定5Maintain Field Mapping and Conversion Rules字段映射与转换规则核心步骤6Maintain Fixed Values, Translations, User-Defined Routines固定值、翻译、自定义例程7Specify Files指定文件路径和文件名8Assign Files把文件分配给对应的源结构9Read Data读取文件数据到LSMW10Display Read Data显示读取的数据检查是否正确11Convert Data按映射规则转换数据12Display Converted Data显示转换后的数据13Create Batch Input Session创建批输入会话14Run Batch Input Session运行批输入会话写入SAP前6步是搭架子和映射规则中间4步是文件和数据读取后4步是转换和实际写入。多数人卡在第5步字段映射多数数据错误都出在第12步之前没仔细看转换结果。3.3 源文件格式与字段映射文本文件怎么排、映射表怎么建LSMW读取源文件有固定格式要求。文本文件通常用分隔符或固定列宽以物料主数据为例我一般用竖线分隔的文本10000001|螺丝M6x20|M-001|STCK|KG|1 10000002|螺母M6|M-001|STCK|KG|2第一列物料号第二列物料描述第三列物料组第四列物料类型第五列基本计量单位第六列净重。文件编码要用SAP的代码页能认的格式中文环境常见的问题是Excel另存的CSV带BOM头读进来第一列第一个字符多了不可见图元。字段映射表在管理界面里维护核心是把源字段对应到目标表字段源字段目标字段说明MATNRMARA-MATNR物料号MAKTXMAKT-MAKTX物料描述MATKLMARA-MATKL物料组MTARTMARA-MTART物料类型MEINSMARA-MEINS基本单位NTGEWMARA-NTGEW净重映射时字段转换规则也很关键。源文件里的值经常和SAP内部值不一样比如计量单位源文件里是KGSAP里要转成内部编码物料组、工厂这类字段存在前导零问题物料号看着是10000001SAP内部可能是补零后的12位。这类转换规则在步骤5里设定。LSMW还支持固定值翻译表把源值映射到目标值比如把“01”翻译成“0001”。3.4 读取、预转换、实际转换三步分开每步都要看结果从第9步开始每步都不能跳。第9步Read Data执行后第10步Display Read Data展示的是从文件读进来的原始数据这步看的是文件有没有读错、字段有没有错位。第11步Convert Data按映射规则转换第12步Display Converted Data看的是转换后的数据这步看的是映射规则有没有生效固定值翻译后的结果对不对。预转换阶段检查完才到第13步Create Batch Input Session。这一步为每条数据生成一个批输入会话相当于把转换好的数据交给录屏脚本去回放。第14步运行会话可以设前台或后台前台一条条看屏幕后台跑完后到SM35里看会话状态。14步走完数据就写入SAP了。LSMW写数据走的是后台批处理提交机制和BDC在SHDB里跑是一样的。4. 选型对比BDC和LSMW什么场景用哪个4.1 底层原理的差异录屏回放 vs 带映射层的回放BDC和LSMW底层都有录屏的影子。BDC就是直接录屏脚本里录了什么执行时就回放什么字段值批量替换。LSMW也有录屏但前面多了源结构定义、字段映射、转换规则这三层录屏只是最后第13步批输入会话的载体。所以LSMW的脚本生成是受控的字段值经过映射再填进屏幕字段BDC则是裸脚本字段值直接替换。这个差异决定了适用边界。数据量小、字段关系简单用BDC数据来自旧系统、字段和SAP字段对不上、需要做值翻译用LSMW。LSMW的映射层相当于把“改脚本”这件事变成了“改映射表”对业务人员更友好。两种方式的对比放在一起看更清楚对比维度BDCSHDBLSMW入口事物码SHDBLSMW核心原理直接录屏回放录像字段映射转换规则典型场景小批量重复操作、期间维护大批量主数据/动态数据迁移脚本可控性弱脚本裸替换强靠映射规则控制错误处理执行后看处理记录预转换阶段可拦截大量错误学习曲线低中高4.2 事务型重复操作用BDC物料帐期、期间维护、批量过账BDC适合的事务型操作有几个特征重复次数多但操作路径固定屏幕字段固定、没有复杂的条件和分支字段值可以用简单规则生成。物料帐期逐月打开就是典型例子事务码MMPV屏幕就三个字段就公司代码、年份、月份值可以按序列生成。公司代码维护、物料凭证结算期间设定这些场景也一样。BDC还有一个场景是后台配置类的批量维护但SHDB不能直接录后台需要先把后台配置转到前台操作或者用SM30、SM34维护视图的方式。很多配置表支持SM30直接维护录一段SM30的脚本把配置行数据批量带进去比一条条在后台点快得多。4.3 大批量数据迁移用LSMW主数据、动态数据、业务数据LSMW适合的是“有一整份数据要进来”的场景。静态数据比如客户、物料、供应商主数据动态数据比如期初库存业务数据比如历史销售订单。这类数据的特征是来自旧系统或Excel字段命名和SAP不一样可能有脏数据、重复数据需要在导入过程中做转换和校验。LSMW的数据量上限比BDC高。BDC生成的脚本文件越大导入越慢因为每一段脚本都是一次屏幕回放LSMW有独立的数据读取和转换阶段数据在转换阶段可以做批量校验最后批输入会话的创建和运行也可以分批控制。做过数据迁移项目的人都知道期初库存导入几十万条用LSMW跑预转换后创建会话分批次运行出错了还能重新读取、重新转换、重新运行不用从头录脚本。4.4 两个工具结合用的习惯实际项目里我常看到两种工具混用。大批量主数据用LSMW导入过程中发现某些业务数据量小但逻辑复杂就用BDC先录一遍再批量执行。LSMW最后创建的批输入会话本质上就是BDC会话运行后能到SM35里看状态。理解了这层关系排障思路就清晰先看映射和转换再看会话里具体报错。5. BDC与LSMW常见问题排查录屏翻车、映射错位、后台失效的五个现场5.1 BDC的坑现象一录屏时多点了按钮批量执行时屏幕跳转错乱。原因SHDB录屏把键盘和鼠标操作全部记录多余的点击、滚动、回车都进了脚本回放时屏幕顺序和预期不一致系统在找不到目标字段时报错。解决重新录屏严格只做目标操作遇到警告屏直接回车列表屏用PageUp、PageDown翻页退出MMPV用退出键不要用鼠标点。现象二后台执行完成状态看起来正常但实际数据没进。原因后台模式不显示屏幕执行结果记录里某几条其实是失败状态或者值没有写入比如MMPV开的期间没生效。解决执行完不要只看“完成”展开处理记录逐条核对状态再进MMPV的显示界面反查开的帐期。批量大时我先拿一条数据前台跑确认屏幕逻辑正常再放量。现象三邮件合并后导入SHDB报错或行数不对。原因邮件合并输出的文件带了额外换行符或编码不对SHDB导入时解析失败常见的是文本文件每段脚本之间的空行数不对系统把空行也当执行块。解决导出文件用纯文本编码保存Windows下用记事本另存时选ANSI或无BOM的UTF-8具体按SAP代码页来合并后检查每个BDC_TCODE前面的空行数和末尾多余行导入前先在记事本里看一遍结构。5.2 LSMW的坑现象四预转换这一步全部正常实际转换后数据有错。原因预转换只校验格式和映射不校验业务逻辑。比如物料号映射对了但单位没有做翻译系统按源值写入后单位字段的值不对或者固定值翻译表只做了部分值漏了某个值第12步显示转换后数据不会明显报错写入后才发现脏数据。解决预转换的展示结果不能只看不报错要抽查几条关键字段物料号位数、工厂、采购组织这些值是否和SAP标准一致固定值翻译覆盖全量清单宁可多做一次转换检查也不要直接创建会话。现象五读取数据显示字段错位物料号跑到描述列。原因源文件的分隔符指定错了或者文件带了BOM头第一列第一个字符多了不可见字符。解决在第9步读取前先确认Specify Files里文件格式设置列分隔符、字符串引号、字符集。文本文件尽量用竖线而不是逗号做分隔符因为物料描述里可能有逗号。如果文件是CSV另存的先检查开头有没有BOM用支持编码转换的编辑器转成纯文本再喂给LSMW。这五条归纳起来就是三件事录屏不干净、文本文件格式不对、转换规则不完整。踩过一次以后我每次做LSMW都会提前把源数据的枚举值拉一遍清单和固定值翻译表对比缺一个补一个。6. 批量执行后的验证技巧从处理记录反查数据正确性BDC执行完毕不要关了屏幕就走。处理记录里每一条执行都能展开看状态红色图标说明那条数据失败双击进去能看到具体报错屏幕。物料帐期这个例子验证最简单的方法是重新打开事务码MMPV进入显示界面直接看公司代码0001的期间开到了哪一个月。对LSMW验证分两步先看SM35会话状态绿的是已执行成功的失败的会留在表里双击能看到卡在哪一步再用事务码或SE16N查目标表比如导物料主数据就查MARA、MAKT对应物料号是否存在或用MM02显示该物料核对描述、物料组、单位这些字段。这里我有个一直保留的习惯批量执行分两批走第一批发两条数据前台模式跑确认屏幕逻辑和数据正确再改后台全量执行。这个习惯救了我很多次特别是用BDC跑大段脚本的时候因为邮件合并出来的脚本如果有细微格式错前台跑第二条就会发现后台跑到底全部失败才回头改模板时间成本差很多。从那以后我每次批量执行前都会强制走一遍“先验两条、再全量跑、最后反查结果”的流程。做SAP批处理数据能进系统只是第一步能验证每一步进了什么才叫真正掌握。这套方法不挑环境照着这份详解走一遍遇到问题再看第五章的排查基本能自己收尾。希望帮到你。本文还有配套的精品资源点击获取
返回列表