今天跟大家聊点“技术”,不知道大家有没有经历过数据迁移工作,这是一项在SAP项目中非常技术性的工作,数据迁移的需求来源于业务需求,很多公司特别是一些制造型企业,有很多复杂的数据需要迁移,比如物料、物料清单、图纸等,因为这些数据是企业的核心数据,并且对将来的售后服务也很重要。数据迁移又需要顾问对SAP的表结构、字段等非常了解,另外还需要一定的ABAP功底,虽然不一定是自己写的程序,但是我们需要了解出错问题的根源,判断是数据问题还是程序问题,甚至还是迁移策略的问题。所以这是一项非常考验顾问技术能力的工作。
对于迁移到S4HANA又有很多特殊性,比如我们在ECC上常用的工具”老是摸我”(LSMW-Legacy System Migration Workbench),SAP不更新了,导致有些场景下没有办法使用,比如银行主数据从配置转到了Fiori APP里面作为主数据维护了,在Fiori是没法使用LSMW。还有比如在S4HANA中业务伙伴(business Partner)必须启用,所以在迁移客户和供应商主数据的时候,还要考虑数据的映射和转换。
我们一直说,没有数据就没有办法上线(Go-Live),只有上线第一天必要的数据进了系统才能支持用户开展正常的业务。另外我们还有一句很著名的话:Garbage-in Garbage-Out, 直译过来就是垃圾进垃圾出,意思是如果你在SAP里面输入了垃圾数据,那么SAP反馈给你的也是垃圾数据。所以我们可以看到数据迁移的重要性。下面我会通过回答一系列的问题来阐述这个话题。
-
什么是数据迁移(Data Migration)?
顾名思义,数据迁移是指把旧系统的数据或者文件迁移到新系统的过程。由于我们这里只讲S4HANA的数据迁移,所以我们会把迁移范围局限在旧的ERP系统到S4HANA的迁移过程。这里讲的旧系统可以包括SAP ECC系统、其他ERP系统、Excel中的数据、图纸等物理文件。大家可能觉得奇怪,为什么还有excel文件,其实一点都不用奇怪,即使有旧的ERP系统,你作为顾问能相信用户所有的数据都维护在ERP系统里面吗?很多时候都会有额外的数据,甚至还有数据不完善没有办法满足迁移要求,需要新建excel来满足迁移的要求的情况。S4HANA包括本地部署和云部署的版本,云部署又包括公有版本(public editon)和私有版本(private edition),相应的迁移工具又会有些差别。
-
数据迁移有哪几种策略?
在我之前的文章《SAP项目管理之二-通往S4HANA之路》提到过转换到S4HANA平台有三条道路,分别是:系统升级(system conversion)、全新实施(New Implementation)和选择性的数据转换(Selective Data Transition)。由于选择性的数据转换比较少见,本文暂不提及。系统升级和全新实施的迁移策略有很大不同,系统升级会把所有的数据一次性全部迁移到新系统;而全新实施由于新旧流程的差异或者是旧系统不是SAP系统,一般迁移的数据局限于必要的主数据和在执行的业务数据,有时候甚至在执行的业务数据也不迁移。下面来说一下几种迁移策略的具体差别。
全下注(All-in)- 这是我自己取的名字
适用道路:系统升级
适用场景:公司现有SAP流程比较完善、能满足公司业务发展、历史数据的参考价值和重用度比较高。旧系统必须是SAP系统。
优点:对于用户来说所有的历史数据都存在,与旧系统相比没有任何差别。对于业务有延续性的公司特别友好,比如进行售后服务的时候可以查询图纸、物料清单等信息,这些信息可能还能用于其他订单。
缺点:如果历史数据有很多垃圾数据,那么也会带到新系统来,这不但会影响流程的执行,也会对未来大数据的应用,比如人工智能(AI)、数字孪生(Digital Twin)等应用产生很大影响。
数据范围:迁移所有旧系统中的数据,但是要做必要的数据转换,比如客户和供应商主数据必须要建业务伙伴数据。
大爆炸(Big-bang)
适用道路:全新实施
适用场景:公司现有ERP系统的流程已经不能满足公司发展的要求、历史数据有一定的参考价值和重用度、上线起只用新系统的情况。旧系统可以是SAP系统或者其他ERP系统。
优点:数据可以经过选择、清理、合并、转换后再迁移,以保证数据都是符合S4HANA要求的。
缺点:只有部分数据,大部分历史数据需要在旧系统中查询。
数据范围:因为这种策略要求第一天开始就只用新系统,所以要包含必要的主数据和所有在执行的业务数据。主数据的范围一般看将来的业务发展需要来决定是否全部或者部分迁移,业务数据决定条件是看是否包含在在执行的项目或者订单中。有时候业务数据的范围会影响主数据的范围,比如库存迁移会影响物料迁移范围。有些库存可能放了很多年,物料早已经不使用了,但是为了迁移库存,相应的物料也必须要迁移。还有个决定因素是财务,所有与资产负债表相关的数据必须要迁移,不然迁移后财务报表不平就会带来很大麻烦。
分阶段(Phase-in Phase-Out)
适用道路:全新实施。
适用场景:与大爆炸类似,唯一的区别是上线后新旧系统并行,采用这种策略的目的是减少数据迁移的数量、降低上线压力。
优点:同大爆炸。
缺点:只有部分主数据,大部分历史数据需要在旧系统中查询。新旧订单、项目需要在不同的系统中执行。
数据范围:这种方式和大爆炸类似,不同的地方是这种策略新旧系统并行,只需要迁移部分主数据,上线后实行旧订单、旧项目在旧系统执行,新订单、新项目在新系统执行。所以包括销售订单、采购订单等数据都不需要迁移。唯一要考虑的业务数据是财务数据,一般的建议是虽然两个系统并行,资产负债表最好都做在新系统里面,因为要在在两个系统中进行财务记账并都执行月结步骤,最后做出合并后的资产负债表,这是一件非常难的事情。所以每个月月底最好把旧系统中所有的财务明细同步到新系统,然后在新系统执行月结步骤。
-
数据迁移有哪些步骤?
数据迁移的主要步骤就是ETL(抽取Extract, 转换Transform, 加载Load),可能有些人也听过或者使用过一些ETL的工具。除了ETL还有些准备工作。考虑到全新实施是我们最常见的S4HANA的项目形式,下面我将以这种道路为基准讲述。
数据范围
除了前面我讲到的数据范围的基本原则,还需要从其他几个维度考虑确定数据范围:
不同的数据类型:每个数据类型都需要定义单独的迁移范围,比如物料,一般重复使用的物料号需要在迁移范围内;如果是订单或者项目特有的,可能就是需要选择特定物料迁移。
不同的订单或者项目类型:订单或者项目在不同的状态下,迁移的方式会有所不同。比如全新订单、发货但没有开票的订单、开完票的订单,这三种状态下,会影响订单中采购订单、生产工单、甚至每个订单行项的迁移方式,所有这些因素都会决定各种数据类型的迁移范围。
法律法规要求:最直接的法律法规要求是财务报表新旧系统肯定要一致的,所有显示在资产负债表上有价值的东西,比如库存、资产等都需要迁移。还有一些国家可能有特殊要求,除了迁移当月的资产负债表之外,还需要迁移去年财年底的资产负债表。
数据的相互依赖关系:像我前面提到的,库存和物料之间的关系,我们熟悉的物料清单和物料之间的关系。有时候我们可能比较理想化,有些旧的物料类型都决定不迁移,但是根据物料清单的范围,会发现没有一种物料类型可以置身事外。
数据映射
数据映射是指新旧数据结构和字段的对应,确定转换规则。数据映射的前提是新系统的配置已经完成,明确新的数据需要哪些字段;还有就是数据迁移范围,只有知道了范围才能确定有多少种情况需要考虑。在映射的时候,需要逐个字段进行对应,对应规则一般有:1)1:1,就是直接拷贝,一般比如文本字段。2)根据对应规则,比如物料类型,可能有些物料类型已经不用了合并到其他类型去了,那么这个时候需要有一个对应规则表来帮助映射。3)复杂对应规则,一般是指根据旧值来判断对应到新值,而且不能一一列举对应规则。
数据映射是接下来的数据准备和程序开发的基础,只有有了确定的规则才知道怎么准备数据、程序需要迁移哪些字段、怎么转换数据。
数据准备
数据准备包括了数据清理、数据合并、数据完整性维护等工作。数据清理是指清理一些无用的数据,比如一些长久没有关闭的订单等,会干扰数据迁移的范围。数据合并是指数据有重复的,比如客户主数据,那么需要在旧系统中把其中一个客户主数据打上删除标记。当然合并过程没有那么容易,需要逐步清理跟这个客户主数据相关的订单、财务未清项等才可以。数据完整性维护是指为了适应S4HANA对数据的要求,比如有些必输字段等,进行的数据维护。一般这种类型的字段是需要人为判断才能填写的,所以不能通过制定规则的方式来进行转换。如果选择的ETL工具很强大,可以把一部分数据准备工作放在数据转换的时候做,这样省去了很大一部分工作量。
迁移程序开发
这个环节大家都能理解,数据迁移离不开迁移程序。程序包括下载程序、上传程序,有时候还会需要一些数据准备的辅助程序等。作为数据迁移的顾问,如果是全新开发程序或者基于已有工具需要扩展,你需要尽可能把技术需求文档写清楚,把前面提到的数据选取范围逻辑、字段、转换规则等一一列清楚,才能让ABAPer知道程序的需求。程序如果旧系统是其他ERP系统,还需要与该ERP的顾问紧密合作,才能按时完成下载程序。关于数据迁移的工具和程序,我会在后面的问题中做详细的解释。
数据抽取(下载)
数据抽取(下载)就是把数据从旧系统根据一定的逻辑导出来的过程,根据使用的迁移工具或者程序,可能是excel或者csv文件,或者是直接导入到ETL工具中。下载程序尽量要保持逻辑简单,只下载原始的数据信息,不要把过多的转换规则写在下载程序里面,主要的原因是下载数据的负责人往往不是数据映射规则的制定者。下载程序还有一个很大的功能是检查数据的完整性,可以定时的导出数据来看看数据质量是否符合上传要求。
数据转换
这是新旧数据转化的重要环节,所有的映射规则都在在这一步体现。如果我们采用比较传统的方式比如LSMW录屏,那么这个环节也没有那么高级,大部分时候我们用的是excel vlookup公式来实现新旧数据替换的。当然也可以把这一步集成到上传程序中,在上传前进行替换。如果有ETL工具,那么工具本身就可以根据制定的规则进行替换。
数据加载(上传)
数据加载(上传)是在新系统中创建数据的过程。在上传的时候,最好做一些必要性检查,以确保数据质量,特别是有些数据上传后没有修改机会,比如需要保证旧号段的财务凭证等。数据上传的方式根据使用的技术不同,大致可以分为3类:录屏、BAPI或者Function Module、直接写表 。三种方式各有优劣,后面我会详细讲解。
数据校验
数据上传完不是数据迁移的终点,还需要进行数据校验,因为不符合要求的数据不但会影响后续的数据迁移,还会影响以后的业务运行。校验的目的就是看数据的完整性和一致性,完整性是指预期的数据是否都已经创建,一致性是指根据数据映射规则,数据有没有创建正确。根据数据的重要性可以决定是抽检还是全部检查。
本期先分享到这里,下期我将分享数据迁移中用到的技术和工具,以及数据迁移的最佳实践、常见问题等,敬请期待。