一、大数据输出困惑
ERP系统稳定运行后,随着时间的流逝,系统中业务数据的量级也随之攀升。特别是以SAP、Oracle商务套件为依托的ERP系统,数据增量更为惊人。以笔者所在企业为例:该企业部署了SAP公司的ERP系统,应用涵盖时尚行业、零售行业两大解决方案;其中,零售解决方案的数据增量尤为惊人;如:终端零售数据以平均每年1亿条记录的量级增长,对应的库存事务、财务凭证数据都在1亿条以上。如此海量数据的沉淀,业务用户想快速输出近期明细数据(实时性较强的数据)却成了一种奢望,近期交易数据尚且如此,历史明细数据输出更为艰难。如何满足用户的愿望,实现明细数据的快速输出变得迫在眉睫。好在SAP系统提供了“数据压缩”技术和“信息结构”技术,让明细数据的快速输出成为了现实。笔者与其技术团队运用上述两大核心技术解决了大数据明细输出问题。
二、数据实时存储
要保证明细数据快速输出,首先要借助“信息结构”技术实现数据的实时存储和简单整合。所谓“信息结构”技术,即:用户根据自身的需要定义数据结构,确定数据整合逻辑及数据汇集粒度;待确定无误后激活该数据结构。一旦被激活,任何与之相关的业务操作都会按照事先设定的业务逻辑要求自动刷新(添加、修改、删除等)对应的数据表(Table)。通过“信息结构”整合后的数据其存储容量大大减少,同时,实现了明细数据的实时存储。与数据仓库比较而言,其特点就在于“实时”又“明细”。
三、“数据压缩”技术
事实上,“信息结构”中数据记录超过1亿条后,其查询速度也将变慢;这样以来,效率低下的问题依然存在。这时,可使用“簇数据表”技术来解决数据输出速度慢的问题。“簇数据表”以数据块为对象进行存储,其数据表内条目减少50倍左右;而且,其逻辑存储和物理存储完全是一致的,因此,明细数据查询直接定位物理存储,保证数据快速输出。可将“信息结构”中的数据按照一定的逻辑进行分类形成若干个数据块,分类完毕后,“簇数据表”首先存储数据的分类逻辑;而后,将数据块的物理地址与之关联并存储。到此为止,就实现了明细数据的压缩机制。
四、“数据解压”过程
明细数据需要输出时,一旦用户确定数据的输出条件,程序根据条件内容直接到对应的“簇数据表”中查找符合条件的记录,然后,根据记录中物理地址的指向将数据块释放到内存中。这样以来,就完成了明细数据的快速输出。在实际数据输出时,由于用户所需数据与数据块中的数据不完全一致,同时,也要从多个数据块中获取,为了提高输出效率,可使用“M+N”匹配法从多个数据块中筛选出符合用户需求的明细数据。
五、应用案例
笔者所在企业的ERP系统中营销数据约4亿条记录,即使通过“信息结构”简单压缩后,数据量仍然在2.5亿左右。当下,在如此海量的数据表中查找近期一个月内的明细数据,依然困难重重。为此,索性引进“数据压缩”技术解决该问题。相关技术部署完毕后,数据输出测试结果:1000万条数据记录可在40秒内输出到显示器上。
以下描述重在阐述该技术的应用过程,期待对用户有所启发和帮助。
1、“信息结构”配置
1.1 定义数据元素(SE11)
创建“信息结构”时可以借用ERP系统的字段(Field);由于描述不清晰,故,可自行添加数据元素。
1.2 扩展结构MCBEST(SE11)
点击“附件结构…”,将新建数据元素加入结构MCBEST中。
1.3 维护自定义字段目录(MC18)
作用:便于在创建信息结构时字段选择。
1.4 维护公式(MC1P)
例一:入库数量公式;
例二:出库数量公式;
例三:入库库金额公式;
例四:出库金额公式;
1.5 维护自定义“信息结构”(MC21)
1.6 维护数据更新规则(MC24)
显示其中之一:移动/调整入库数量配置参数;
如何处理:“发票校验”、“修改价格”等无数量更新而有价值更新业务。
1.7 激活更新(OMO9)
1.8 初始化“信息结构”的数据
T-CODE:OLI1用于更新BF事件历史数据;
T-CODE:OLIZ用于UM事件历史数据。
由发票校验引起的价值更新,即可以通过OLI1更新,也可以通过OLIZ更新;因此,数据初始化时应避免重复,造成数据重复计算。
2、“簇数据表”
2.1 数据簇
概念:数据簇是一个数据块,该数据块聚合了若干ABAP/4中的数据对象(如图所示)。
(图1)
图1备注1:数据簇 = 数据对象聚合 ,ABAP/4中基本字段,字符串,内表都是数据对象。
图1备注2:数据簇可以在ABAP/4内存或数据表进行存取。
2.2 “簇数据表”
定义:存储数据簇的特殊透明表,称为簇数据表。
结构:见图2:
(图2)
图2中3(关键字)是数据簇的标识,即通过这个标识来找到这个数据簇;它由若干个字段组成,由用户定义。
图2中5(用户数据)由用户定义,不是必须字段,可以不定义。
图2中7(数据簇)字段名由系统默认,用户可以修改字段默认的长度,用于存数据簇。
图2中1(集团)、2(区域)、4(行计算器)、6(数据长度)这四个字段名由系统默认,用户不能修改。定义“簇数据表”结构时,图2中的字段顺序不能改变。
2.3 创建“簇数据表”(SE11)
2.4 “簇数据表”操作语法
*在“簇数据表”中存储数据对象:
2.5 为什么使用“簇数据表”
*透明表条目数太多,用SQL查询很慢,几乎不可查询。
*“簇数据表”将透明表内容压缩为数据块进行存储,条目数大大减少。
*“簇数据表”若干个数据块做为一个物理记录,实现逻辑和物理存储一致,查询速度更快。
3、实例—“店铺期间销售数量和销售金额查询”
3.1 “信息结构”创建
按照1.1至1.8步骤创建“信息结构”S911,用来记录物料在工厂和存储地点下的数量和金额每一笔记录。
3.2 创建“簇数据表”ZTS911(SE11)
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:“数据压缩”技术助力SAP/ERP 系统大数据快速输出
本文网址:http://www.toberp.com/html/consultation/10819917038.html