news 2026/10/2 5:04:31

SAP批量导入实战:BDC与LSMW从录屏到字段映射全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SAP批量导入实战:BDC与LSMW从录屏到字段映射全解析

简介:SAP两种主流批处理工具BDC与LSMW的实操讲解文档,面向SAP顾问、ABAP开发及内部IT支持人员,重点解决数据迁移、批量维护主数据、重复事务处理等高频场景。文档从SHDB录屏入手,完整演示物料账期逐月打开业务,说明录制时应避免多余键盘鼠标操作、如何修改字段再执行,以及如何导出脚本模板、结合Office邮件合并生成20个批量执行脚本并重新导入;同时对比前台/后台执行方式的不同适用场景。LSMW部分覆盖创建对象、定义数据文件、源/目标结构、转换规则到实际数据传输的完整流程,并说明不同系统版本(IDES 4.71与ECC 6.0)的步骤差异,帮助读者根据任务规模选择合适工具。资源包为1个docx文件,大小约2.49MB,内含步骤截图、字段说明和操作界面讲解,按功能模块组织,便于速查。已有1748人学习下载,适合希望系统掌握SAP批处理实操技巧的顾问与开发人员。

1. 两种批处理工具,先搞清楚该用哪一个

在SAP项目里,最磨人的往往不是写程序,而是把几千条主数据或凭证从Excel搬进系统。手工一屏一屏地录,录完眼睛花、腰也酸,还经常漏字段。SAP给的两条路——BDC和LSMW——就是干这个的。BDC(Batch Data Communication)靠录屏回放,把你在SAP GUI上的每一步操作记下来,然后像放录像一样重新执行成千上万次;LSMW(Legacy System Migration Workbench)更像一个向导,录制屏幕、字段映射、批量导入一条龙,能少写很多ABAP代码。这篇文章写给要用批处理工具做数据迁移、日常导入、系统切换的顾问和内部IT,把两种工具的原理、操作步骤、参数调法和坑一次讲透,让你看完能直接上手跑一批数据。

2. BDC实战:录屏、生成脚本与三个关键参数

2.1 BDC原理:SAP GUI上的每一步都是一张传输表

BDC的核心思想是模拟用户操作。你在SAP GUI上每填一个字段、按一次回车,系统后台都会记下一个“屏幕+字段+值”的指令。BDC把这一串指令存起来,之后用程序按顺序重放,SAP就以为是一个人在不停操作。这个机制决定了它不挑业务:创建物料、记账凭证、修改主数据,只要能用手工完成的事务,理论上都能用BDC批量做。

需要理解的数据结构是BDCDATA表。它主要包含四部分:程序名(PROGRAM)、屏幕号(DYNPRO)、字段名(FNAM)和字段值(FVAL)。还有一行特殊的DYNBEGIN,标记着新的屏幕开始。录屏工具SHDB生成的源代码,就是把这些结构一行行填进去。不要死记屏幕号,因为SAP版本、增强包、自定义逻辑都会改变屏幕流程。真正常用的是录出来的那段脚本——它是你的“黑匣子钥匙”。

我见过太多人以为BDC就是录个屏,却不知道BDC对操作顺序极其敏感。录屏时多点了一个隐藏按钮,回放时所有数据都会卡在那一屏。这也是为什么我坚持让录屏的人先对着业务流程文档走一遍,而不是边想边录。

2.2 用SHDB录制一段BDC:从零到脚本

事务码SHDB进入批输入记录器,点“新建记录”,填一个记录名,比如ZBDC_MM01_CREATE,输入事务码MM01,再点“开始录制”。然后像平时创建物料主数据一样操作,完成保存后回到SHDB,你会发现所有屏幕和字段都被记下来了。录制完成后,选中记录,点“程序”->“源代码”,系统会生成一段ABAP代码。这段代码可以直接复制到你的程序里,也可以导出保存。

录制时有个习惯:把选择屏幕的“跳过初始屏幕”功能打开。比如MM01一进去有个物料号、行业领域的选择界面,如果你每次都要手动勾选“按行业领域维护”复选框,录制时就要多录一个屏幕。我一般让用户直接把常用条件录进去,减少批处理时的屏幕切换。

下面是我常用的最小BDC调用框架,以MM01创建物料为例:

DATA: lt_bdcdata TYPE TABLE OF bdcdata, ls_bdcdata LIKE LINE OF lt_bdcdata, lt_msg TYPE TABLE OF bdcmsgcoll. * 填充录屏数据:这里省略从SHDB复制出来的填充代码 PERFORM fill_bdcdata CHANGING lt_bdcdata. * 调用事务码,MODE 'N' 表示完全后台 CALL TRANSACTION 'MM01' USING lt_bdcdata MODE 'N' UPDATE 'S' MESSAGES INTO lt_msg. * 逐条查看返回消息 LOOP AT lt_msg INTO DATA(ls_msg). WRITE: / ls_msg-msgtyp, ls_msg-msgv1, ls_msg-msgv2, ls_msg-msgv3. ENDLOOP.

这段代码的逻辑很直白:先填好BDC数据表,再调用CALL TRANSACTION执行。“MODE”有三个可选值:A代表前台逐屏播放,适合向业务演示;E代表出错时才弹出屏幕,是我调试时的首选;N代表完全后台跑,适合大批量。注意“UPDATE”参数:S是同步更新,实际生产中默认用它;A是异步更新,速度快但发生连环错误时回滚麻烦;L是本地更新,只用于技术测试,生产环境千万别选。MESSAGES INTO必须写,否则执行完你连失败原因都不知道。

2.3 批处理会话(Batch Input Session)与前台调用的区别

除了CALL TRANSACTION,BDC还有一种执行途径:建一个批处理会话。典型流程是先把一批数据写入会话,再用事务码SM35去处理。我推荐两者的使用场景完全不同:

对比项CALL TRANSACTION批处理会话(SM35)
执行位置在ABAP程序中SAP后台会话队列
数据量适合几百到几千条适合几万条以上
错误处理每一条都要程序自己判断失败条目不阻塞其他条目
占用GUI需要后台作业或程序运行不占前台
可计划性手动触发可以设置处理时间和日期
回滚代价程序内可自己控制要删除整个会话

实际项目里我的原则是:千条级别用CALL TRANSACTION,因为可以嵌套业务逻辑,比如导入前查重复、导入后发通知;万条级别以上用批处理会话,尤其当网络不稳定时,会话可以断点续传。批处理会话是SAP内部自己排队消化的,就算SM35处理到一半系统重启,重启后还能继续处理未完成的数据。

有一个细节值得注意:批处理会话会记录“处理日期/时间”。可以把大批量导入安排在凌晨执行。我一般会在前一天下午把会话建好,让运维在凌晨2点跑后台作业,第二天早上看SM35统计。这样避开了白天大量MIGO、CO11N事务的锁竞争。

2.4 BDC 的必调参数与错误处理的三个层级

BDC报错有三种层级,排错顺序不能乱。第一层是字段级:录屏脚本里的字段在目标屏幕上不存在,或字段名写错。解决办法是回到SHDB,重新录制或手工修改BDC数据里的字段名。第二层是业务级:字段存在但值不合法,比如物料类型不允许、公司代码没有分配。这要看具体业务校验消息。第三层是数据库级:记录被其他用户锁住,或者更新冲突。先到SM12查锁,再决定是等待还是删除冲突。

我处理的策略是:字段级错误直接修脚本;业务级错误要回头检查Excel源数据,不要试图在BDC里硬塞;数据库锁通常是暂时的,重跑一次往往就好。为了快速定位,程序里要对消息类型为E(错误)和A(中止)的条目单独记录。

DATA: lv_error TYPE c. LOOP AT lt_msg INTO ls_msg. IF ls_msg-msgtyp = 'E' OR ls_msg-msgtyp = 'A'. lv_error = 'X'. WRITE: / '导入失败:', ls_msg-msgv1, ls_msg-msgv2. ENDIF. ENDLOOP. IF lv_error = 'X'. ROLLBACK WORK. ENDIF.

这一段代码的逻辑是:只要消息里有错误或中止类型,就回滚当前事务。注意CALL TRANSACTION本身在出错时会自动回滚当前屏幕数据,但为了日志完整,我习惯在程序里再写一个回滚标记。实际项目中,建议在每次导入前先跑10条测试数据,用MODE 'E'逐屏观察,如果没有报错再放量。否则全量跑完发现一半数据带病,撤销可比导入麻烦十倍。

提示:BDC录屏生成的代码里,BDC_OKCODE和BDC_CURSOR不要乱删。BDC_OKCODE相当于按回车或保存键,删了脚本就停在原地不动;BDC_CURSOR控制光标位置,出问题会导致屏幕跳转到错误字段。

3. LSMW实战:录制、映射到导入的完整路径

3.1 LSMW是什么:一个不用写代码的批处理向导

LSMW的全称是Legacy System Migration Workbench,中文常叫“旧系统迁移工作台”,但实际用途远不止迁移。它把录屏、字段映射、数据转换、批输入会话整合成一个向导,业务顾问不用写ABAP也能完成批量导入。LSMW的本质仍是BDC或BAPI,但它包了一层更友好的配置界面,特别适合Excel数据导入主数据、凭证和自定义表。

与BDC相比,LSMW的价值在于“映射”的维护成本。BDC录屏得到的代码一长串,别人看不懂;LSMW把源字段和目标字段列成表,谁都能检查逻辑。代价是配置步骤多,一个对象从建立到执行通常要经历十五个节点,新手很容易在“何处定义字段映射”环节迷失。

我的做法是:不管多简单的LSMW对象,先跑一次不带Excel的固定值数据,把链路打通,再引入真实文件。这样可以过滤掉大部分映射配置错误,比如字段拼写、目标结构选择错。LSMW对象本身存储在系统里,不是代码,因此别把它当成一次性的临时工具,应当当成数据迁移资产来维护。

3.2 从创建对象到导入数据:六个必做步骤

进入事务码LSMW,点“创建”按钮,输入对象名。对象名建议用前缀LSMW加业务场景,例如LSMW_MM01_CREATE_202405。接下来会看到一堆配置节点,我习惯按以下顺序操作:

  1. 设置对象属性:选择对象类型,通常用“录屏”或“BAPI”。BAPI比录屏稳定,优先用BAPI;没有现成BAPI的事务再用录屏。
  2. 定义源结构:源结构是你的Excel表格模型。定义字段,一个字段对应Excel的一列。字段名最好用SAP目标字段的语义,比如MATNR、WERKS。
  3. 导入源数据定义:指定文件类型和格式。选择PC文件时,路径要小心,LSMW默认从应用服务器读取,要配置前端文件才能读本地。
  4. 在录制程序或BAPI中定义字段映射:这是核心步骤。左侧是源字段,右侧是目标字段,用鼠标拖拽建立对应关系。
  5. 读取和转换数据:先“读取数据”预览Excel内容,确认行数和列名没有识别错误;再“转换数据”让LSMW执行映射规则。
  6. 创建批输入会话:点击后LSMW会把转换结果交给SM35处理。之后去SM35执行会话。

这里有一份我常用的配置参数表:

配置项推荐值说明
对象类型0050(BAPI)优先,0010(录屏)兜底BAPI更稳定
文件类型PC文件(Excel 97-2003格式)新版本xlsx要注意兼容性
读取行数2(跳过表头)表头不参与映射
源字段分隔符分号避免Excel单元格内的逗号干扰
转换后处理创建批输入会话推荐先建会话再执行
会话处理方式后台处理大批量时避免锁表

3.3 字段映射的三种方式:录屏、固定值、ABAP代码

LSWM的映射绝不只是一对一。在“字段映射”界面双击目标字段,会弹出三个标签页:源字段/固定值/公式。源字段就是直接选用Excel对应的列;固定值适合所有行都一样的值,比如公司代码1000、语言ZH;公式页可以写一小段ABAP表达式。

公式映射的威力非常大。比如导入物料主数据时,Excel里有一列“物料组”,一列“物料类型”,SAP里需要合并成一个内部字段,就可以在公式页写拼接逻辑。再比如你只有一串“20240101”的日期文本,但目标字段要求隔开格式,可以用+和SUBSTRING处理。虽然LSMW的编辑框很小,但它支持完整的ABAP表达式,我用它处理过文本清洗和数制转换。

注意一个常见误导:公式页不是写完整函数的地方,它只允许写一个表达式,不能声明类型。复杂逻辑可以先写到一个增强的转换程序和FORM里,再用公式调用。不过对大部分数据迁移,IF-THEN-ELSE表达式足够用了。

3.4 LSMW的批输入会话执行:SM35里的残局处理

LSMW创建会话后,真正的执行是在事务码SM35。SM35列表会显示所有批输入会话,包括来自BDC和LSMW的。选中你的会话,点“处理”后会询问前台或后台处理。前台处理会逐屏播放,适合几十条验证;后台处理直接静默跑完,适合大批量。

会话中如果有失败记录,SM35里会标红。双击标红的行,能看到每笔数据停在哪一屏、报什么错。处理残局有两种路径:一是回到LSMW修改源数据或映射,重新读取数据并重新建会话;二是直接删除失败的那几条记录,手工在业务事务里处理。我的习惯是先分类:同一类错误5条以内,直接手工补;超过20条,说明映射有问题,必须回头修LSMW。

SM35会话有一个坑:它不会自动清理已处理的菜单。处理完成后会话还留在列表里,只是状态变了。如果你重新处理同一个会话,SAP会提醒你“会话已处理过”。最好的做法是处理完一批后立刻在SM35里删除旧会话,同时保留日志截图,否则两个月后自己都分不清哪些是有效的。

4. 选型对比:什么时候用BDC,什么时候用LSMW

4.1 一张表看清两种工具的边界

维度BDCLSMW
是否需要ABAP编码需要,至少能看懂和修改不需要,纯配置
学习曲线中,要理解屏幕流中高,节点多但逻辑直观
灵活性高,可嵌入任意程序逻辑中,受限于映射和转换框架
大批量稳定性依赖开发者自己控制自带会话管理,相对稳定
错误排查靠ABAP消息和断点靠SM35会话日志,简单直接
可维护性代码版本可管理映射关系可传输,但需导出备份

这张表是我在十几个项目里的切身体会。如果你已经在一个BDC程序里做了大量字段拼接、自定义检查、多事务联动,那就继续用BDC,不要硬迁到LSMW。如果只是把Excel导入标准事务,LSMW明显更省事。但不要误会LSMW不需要BDC——LSMW录屏时生成的就是BDC数据,只是它帮你管理和执行了。

4.2 从维护成本和权限角度做决定

长期维护看,LSMW优于BDC。BDC录屏产生的脚本是一堆字段赋值代码,SAP版本升级或增强包更新后,屏幕结构变化,脚本可能失效,需要重新录屏并修改ABAP。LSMW把所有映射存成配置,屏幕变了可以重新录一个屏幕并重新映射,不需要动代码。

权限上两者要求不同。BDC本身不需要特殊事务码,但CALL TRANSACTION运行在ABAP程序里,需要程序执行权限;批处理会话处理需要SM35权限。LSMW除了SM35,还需要LSMW自己的对象权限。生产环境中,通常给顾问分配一个“LSMW_EXEC”权限角色,包含查询和执行的权限就够了。

真正的坑在于权限检查会影响你的测试。我用一个没有LSMW维护权限的账号在测试机上试跑,结果在“转换数据”节点一直报无权限。排查半天才发现是权限角色缺了“维护”动作。所以上线前必须明确:负责配LSMW的人要有维护权限,负责跑批的人只要有执行权限。

4.3 混合使用:在用LSMW时嵌入自定义逻辑

有三分之一的场景,两样要合起来用。比如导入一批物料主数据,标准字段可以用LSMW负责,但物料组需要根据文本匹配自动判断,这个判断逻辑写LSMW公式太别扭,不如把数据先放入自定义表,用一小段BDC程序扫尾处理。

具体做法是:LSMW只处理能稳定映射的字段,剩下的脏活交给一段ABAP,通过BAPI或CALL TRANSACTION完成。我在一次固定资产主数据迁移中,LSMW导入基础视图,BDC程序负责检查折旧码并激活资产。两套工具配合,4小时跑完10万条资产主数据。混合方案要做好先后顺序控制,比如用状态字段判断是否已被上一阶段处理,否则重复跑会把数据搞乱。

4.4 数据量和频率决定第三条路

不要忽略另一种选择:直接用BAPI。BDC和LSMW都是“人机对话模拟”,而BAPI是直接调用功能模块,不需要录屏。SAP几乎每个主数据都有BAPI,比如BAPI_MATERIAL_SAVEDATA、BAPI_ACC_DOCUMENT_POST。BAPI的执行速度比BDC快,错误信息也更结构化,但需要会查BAPI参数。

我的建议很直接:如果你已经在写ABAP程序,且目标事务有现成的BAPI,优先用BAPI;只有BAPI覆盖不了那些“操作型”功能时,才退回BDC或LSMW。LSMW也支持BAPI对象类型,所以在LSMW里选BAPI对象,是兼顾配置便利和运行效率的折中方案。但BAPI对象没有录屏过程,配置时你需要知道BAPI的输入参数,对新手反而更难。

5. 批处理工具避坑:5个高频故障与处理方案

5.1 现象一:录屏时字段没录到,运行时报找不到字段

我在录制CO01(生产订单)时,明明填了“物料”和“工厂”,生成的BDC脚本里却没有那个字段。回放时程序直接报“屏幕字段丢失”。后来发现,字段所在的子屏幕在录制时没有真正触发,或者字段属于选择屏幕的隐藏区域,录屏时没聚焦到。解决办法是重新录制,放慢操作速度,每填完一个字段就按一下回车。录完后要逐屏检查SHDB里的字段列表。如果目标字段缺失,可以回到SHDB点“编辑记录”,手动添加该屏幕的字段名和默认值。

5.2 现象二:LSMW导入成功但数据不对,少了一行

有次LSMW显示成功导入5000条客户主数据,在XK03里查询只有4999条。所有人盯着“处理成功:5000”都以为没有异常。实际上Excel里有一行数据因为客户号已存在,LSMW在更新模式下把这条当成了更新,没有新增记录。解决方式很明确:导入前先做唯一性检查,查一下Excel里哪些客户号在SAP已存在。LSMW的批输入会话里也能看到该条记录的消息,一般会提示“客户已存在”。处理方法是在Excel中排除重复行,或者改为正确的更新模式。

5.3 现象三:BDC批处理会话后台执行卡住,一直绿灯

SM35里某个会话状态一直是“处理中”,绿灯不灭。常见原因是这个会话处理的数据里,某个物料号被另一个后台作业锁住,或者系统内存不够,更新进程排队。排查步骤先到SM12查锁条目,确认锁的持有者;再查SM37看后台作业是否还在运行;如果后台作业已结束但会话仍在“处理中”,说明处理进程可能异常终止。这时可以重新触发处理,但不要立刻删除会话,否则会丢失所有记录。我遇到过一次会话卡了两小时,原因是有个增强在导入时调用了一个长时间运行的报表,把系统资源占满。这种情况下,只能等或调高会话处理的优先级。

5.4 现象四:LSMW字段映射时报长度不够,被截断

LSMW读取Excel后,映射报“字段值太长”是常见的字段长度问题。比如Excel里描述字段写了50字符,目标字段只有40字符,SAP会拒绝写入并报错。这个错误在“转换数据”阶段就能看到。解决方式:在字段映射里给目标字段添加公式,用source+0(40)截断,或者在Excel模板里设有效验限制。千万不要靠“反正系统会截断”的念头,因为SAP对于超过长度的字符直接报错,而不是静默截断。必须显式处理。

5.5 现象五:日期格式和本地化小数点导致数据错乱

LSMW里最容易踩的坑是日期格式。Excel单元格显示的“2024/1/1”,读取到LSMW后可能变成一串数字串,映射到SAP日期字段显示为“01012024”,完全错乱。原因是SAP内部日期固定为YYYYMMDD,而Excel的日期显示会根据区域设置变化。解决办法是:把所有日期列在Excel中设成文本格式,手工录入20240101。数字的小数点也一样,中文环境下Excel默认逗号,导入后SAP可能不认识。我的习惯是在数据模板里增加格式说明页,用红色标错误单元格。这项规范让团队导入错误率下降了七成。

6. 进阶:把BDC和LSMW变成团队可复用的资产

6.1 建立一套录屏规范

录屏最怕来回试错。我给团队定的规范是:录屏前先检查SAP GUI版本和语言环境,版本不同可能导致字段名空间不同;用一个专门的“批处理记录账号”,避免个人用户菜单和权限影响录屏。每一条录屏记录,名字带上业务场景和日期,例如ZLSMW_MM01_CREATE_20240115。录制完成后,立即导出源码保存到知识库,同时记录SAP ECC版本。这样SAP升级后,你能判断哪些录屏需要重录。

6.2 用版本管理保存映射和源数据

LSMW对象本质是系统配置,但它能通过传输请求导出到其他环境。我要求每个LSMW对象必须关联一个传输请求,并把数据模板Excel和映射规则截图放在版本库里。尤其是用了公式映射的,务必把公式文本复制到外部文档中。否则换一个环境重建对象时,那些复杂表达式只能靠回忆重新写。实际带过的项目里,最惨的是LSMW对象被误删,又找不到传输请求,最后花了三天时间重新搭。这是血泪教训。

6.3 批处理日志:给每条数据留好后悔药

用BDC时,程序里务必把错误消息落库。我会建一张自定义表,记录程序名、事务码、主键字段、消息类型和消息文本。这样每次跑完,查这张表就能统计成功和失败数量。LSMW也自带日志,但SM35里的旧会话会被清理,过期之后查询很痛苦。我的习惯是每次跑完LSMW,立刻把SM35会话消息导出成Excel存档。哪怕后台全部成功,也要看一眼统计,防止某个消息被忽略。

这些做法让我从“会用工具”进阶到“把工具变成团队能力”。哪怕三个月后换个顾问接手,只要看录屏规范、映射版本和日志表,就能知道这批数据是怎么进去的、有没有隐患。SAP导入这件事,翻车不可怕,可怕的是没有翻车预警。希望帮到你。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 5:04:05

游戏引擎架构的本质:团队分工如何决定代码分层

做引擎这些年,我反复被问到同一个问题:到底什么是游戏引擎架构。有人觉得是把渲染、物理、动画这些模块画在一张架构图上,有人觉得是选ECS还是OOP的组织方式,还有人觉得是决定用C还是Rust。这些回答都对,但都只摸到了象…

作者头像 李华
网站建设 2026/10/2 5:04:01

从RAG到开源知识库实战:本地问答系统搭建与优化全解析

先说明下这篇博文的来龙去脉。这几天技术社区里都在转“微信开源了一个神级知识库项目”这个说法,我点进去看了好几篇,发现很多人其实没讲清楚这个项目到底是什么、能用来做什么、怎么落地。作为一个常年折腾知识库工具链的人,我决定把这块拆…

作者头像 李华
网站建设 2026/10/2 5:03:49

Yule-Walker方程实战:AR参数估计与Levinson-Durbin避坑指南

简介:这是一份关于Yule-Walker方程求解与AR模型建立的实验报告PDF,面向生物医学信号处理及CS信号分析方向的学习者,适合需要掌握自回归模型参数估计、自相关函数与矩阵方程求解的读者。资源以大学生物医学信号处理实验为背景,系统…

作者头像 李华
网站建设 2026/10/2 5:03:44

大模型推理精度与硬件匹配实战指南

1. 这不是“选精度”,而是给模型配一副合脚的跑鞋你有没有遇到过这样的情况:花大价钱买了块顶配显卡,结果跑一个开源大模型时,显卡利用率卡在30%,显存只用了不到一半,推理延迟却高得离谱?或者反…

作者头像 李华
网站建设 2026/10/2 5:02:17

Switch大气层Goldfinger调试工具深度解析

1. 项目概述:这不是“金手指”,是Switch大气层生态里最常被误读的底层调试工具“金手指”这三个字在Switch玩家圈里,几乎成了一个自带魔力的词。一提它,有人立刻想到游戏里无限生命、秒杀Boss的爽快感;有人条件反射点开…

作者头像 李华
网站建设 2026/10/2 5:01:39

AI-Native SDLC实战:Claude Code与CLAUDE.md全流程指南

1. 从“能跑就行”到“AI原生”:SDLC到底在变什么“AI-Native SDLC”这个词最近被聊得很多,但真正落地到日常开发流程里的团队其实还不多。我最早接触这个概念是在去年底,当时团队里有人提了一句“能不能让AI直接参与需求拆解和代码评审”&am…

作者头像 李华