“数据压缩”技术助力SAP系统大数据快速输出.docx_第1页
“数据压缩”技术助力SAP系统大数据快速输出.docx_第2页
“数据压缩”技术助力SAP系统大数据快速输出.docx_第3页
“数据压缩”技术助力SAP系统大数据快速输出.docx_第4页
“数据压缩”技术助力SAP系统大数据快速输出.docx_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息化应用实践“数据压缩”技术助力SAP系统大数据快速输出2014-10-14周清湘、韩占峰一、大数据输出困惑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 “簇数据表”操作语法 在“簇数据表”中存储数据对象:EXPORT FROM FROM .TO DATABASE () CLIENT ID 。 从“簇数据表”中读取数据对象:IMPORT TO TO .FROM DATABASE () CLIENT ID 。 从“簇数据表”中删除数据簇:DELETE FROM DATABASE () CLIENT ID 。 语法备注: 为数据簇中数据对象; ABAP/4中用户定义数据对象;簇数据表名;簇数据表中的区域字段;客户端;簇数据表中关键字,用于标识数据簇;2.5 为什么使用“簇数据表” 透明表条目数太多,用SQL查询很慢,几乎不可查询。 “簇数据表”将透明表内容压缩为数据块进行存储,条目数大大减少。 “簇数据表”若干个数据块做为一个物理记录,实现逻辑和物理存储一致,查询速度更快。3、实例“店铺期间销售数量和销售金额查询”3.1 “信息结构”创建按照1.1至1.8步骤创建“信息结构”S911,用来记录物料在工厂和存储地点下的数量和金额每一笔记录。3.2 创建“簇数据表”ZTS911(SE11)3.3“信息结构”透明表S911内容压缩至“簇数据表”ZTS911代码明细如下:REPORTZHT010.TYPES:BEGINOFT_KEY,SPMONTYPEZTS911-SPMON,WERKSTYPEZTS911-WERKS,ENDOFT_KEY.DATAGS_KEYTYPET_KEY.DATAGT_S911TYPETABLEOFS911.SELECTION-SCREENBEGINOFBLOCKB10WITHFRAMETITLETEXT-010.PARAMETERS:P_SPMONTYPESPMONOBLIGATORY,P_WERKSTYPEWERKS_DOBLIGATORY.SELECTION-SCREENENDOFBLOCKB10.START-OF-SELECTION.DATA:L_DATELTYPESY-DATUM,L_DATEHTYPESY-DATUM.CLEAR:L_DATEL,L_DATEH.L_DATEL+0(6)=P_SPMON.L_DATEL+6(2)=01.L_DATEH=L_DATEL+32.L_DATEH+6(2)=01.L_DATEH=L_DATEH-1.CLEAR:GT_S911,GT_S911.SELECT*INTOCORRESPONDINGFIELDSOFTABLEGT_S911FROMS911WHERESPTAG=L_DATELANDSPTAG=L_DATEHANDWERKS=P_WERKS.CLEARGS_KEY.GS_KEY-SPMON=P_SPMON.GS_KEY-WERKS=P_WERKS.EXPORTS911_DLFROMGT_S911TODATABASEZTS911(DL)IDGS_KEY.COMMITWORKANDWAIT. 3.4店铺期间销售报表(用M+N法筛选数据)代码明细如下:REPORTZHT008.TABLES:T001L,MARA,S911.TYPES:BEGINOFT_MARA,MATNRTYPEMARA-MATNR,MTARTTYPEMARA-MTART,ENDOFT_MARA.DATA:GT_MARATYPETABLEOFT_MARA,GS_MARATYPET_MARA.DATA:G_LINES_MARATYPEINT4.TYPES:BEGINOFT_DATA,WERKSTYPES911-WERKS,工厂LGORTTYPES911-LGORT,门店SPTAGTYPES911-SPTAG,过账日期MATNRTYPES911-MATNR,物料代码MTARTTYPEMARA-MTART,物料类型M_YIDTYPES911-ZMRECI,销售数量W_YIDTYPES911-ZWRECI,销售金额ENDOFT_DATA.DATA:GT_DATATYPETABLEOFT_DATA,GS_DATATYPET_DATA.DATA:GT_S911TYPETABLEOFS911,GS_S911TYPES911.TYPES:BEGINOFT_KEY,SPMONTYPES991-SPMON,WERKSTYPES991-WERKS,ENDOFT_KEY.DATA:GS_KEYTYPET_KEY.TYPES:BEGINOFT_SPMON,SPMONTYPES991-SPMON,WERKSTYPES991-WERKS,ENDOFT_SPMON.DATA:GS_SPMONTYPET_SPMON,GT_SPMONTYPETABLEOFT_SPMON.TYPES:BEGINOFT_LGORT,WERKSTYPET001L-WERKS,LGORTTYPET001L-LGORT,ENDOFT_LGORT.DATA:GS_LGORTTYPET_LGORT,GT_LGORTTYPETABLEOFT_LGORT.DATA:GS_WERKSTYPET_LGORT,GT_WERKSTYPETABLEOFT_LGORT.RANGESR_LGORTFORT001L-LGORT.SELECTION-SCREENBEGINOFBLOCKB10WITHFRAMETITLETEXT-010.SELECT-OPTIONS:S_WERKSFORT001L-WERKS.工厂代码SELECT-OPTIONS:S_LGORTFORT001L-LGORT.门店代码SELECT-OPTIONS:S_MTARTFORMARA-MTARTOBLIGATORY.物料类型SELECT-OPTIONS:S_SPTAGFORS911-SPTAGOBLIGATORY.销售日期SELECTION-SCREENENDOFBLOCKB10.START-OF-SELECTION.*准备数据DELETEADJACENTDUPLICATESFROMS_SPTAG.IFS_SPTAG-HIGHISINITIAL.S_SPTAG-HIGH=S_SPTAG-LOW.ENDIF.CLEAR:GT_SPMON,GT_SPMON.DATAL_DATE1TYPESY-DATUM.DATAL_DATE2TYPESY-DATUM.CLEAR:L_DATE1,L_DATE2.L_DATE1=S_SPTAG-LOW.L_DATE1+6(2)=01.L_DATE2=S_SPTAG-HIGH.L_DATE2+6(2)=01.WHILEL_DATE1=L_DATE2.GS_SPMON-SPMON=L_DATE1+0(6).APPENDGS_SPMONTOGT_SPMON.CLEARGS_SPMON.L_DATE1+6(2)=01.L_DATE1=L_DATE1+32.L_DATE1+6(2)=01.ENDWHILE.CLEAR:L_DATE1,L_DATE2.L_DATE1=S_SPTAG-LOW.L_DATE2=S_SPTAG-HIGH.CLEAR:GT_LGORT,GT_LGORT.SELECTWERKSLGORTINTOCORRESPONDINGFIELDSOFTABLEGT_LGORTFROMT001LWHEREWERKSINS_WERKSANDLGORTINS_LGORT.CLEAR:GT_WERKS,GT_WERKS.GT_WERKS=GT_LGORT.SORTGT_WERKSBYWERKS.DELETEADJACENTDUPLICATESFROMGT_WERKSCOMPARINGWERKS.*第一步:筛选合适的物料CLEAR:GT_MARA,GT_MARA.SELECTMATNRMTARTINTOCORRESPONDINGFIELDSOFTABLEGT_MARAFROMMARAWHEREMTARTINS_MTART.物料类型*第二步:从簇数据表中取数据块CLEAR:GT_DATA,GT_DATA.LOOPATGT_WERKSINTOGS_WERKS.LOOPATGT_SPMONINTOGS_SPMON.CLEARGS_KEY.GS_KEY-SPMON=GS_SPMON-SPMON.GS_KEY-WERKS=GS_WERKS-WERKS.CLEAR:GT_S911,GT_S911,GS_KEY.IMPORTS911_DLTOGT_S911FROMDATABASEZTS911(DL)IDGS_KEY.*第三步:从数据块中筛选数据-筛选存储地点和日期范围CLEAR:R_LGORT,R_LGORT.LOOPATGT_LGORTINTOGS_LGORTWHEREWERKS=GS_WERKS-WERKS.R_LGORT-SIGN=I.R_LGORT-OPTION=EQ.R_LGORT-LOW=GS_LGORT-LGORT.R_LGORT-HIGH=GS_LGORT-LGORT.APPENDR_LGORT.CLEARR_LGORT.CLEARGS_LGORT.ENDLOOP.DELETEGT_S911WHERELGORTNOTINR_LGORT.门店代码DELETEGT_S911WHERESPTAGL_DATE2.*第四步:用M+N法继续从数据块中筛选数据-把符合的数据放到内表GT_DATA中*M+N筛选法*开始*DATAL_DELETETYPECHAR1.CLEARL_DELETE.DATAL_FUZHITYPECHAR1.CLEARL_FUZHI.DATAL_MATNRTYPEMARA-MATNR.CLEARL_MATNR.DATAL_INDEXTYPEINT4.CLEARL_INDEX.L_INDEX=1.SORTGT_MARABYMATNR.SORTGT_S911BYMATNR.CLEARGS_MARA.LOOPATGT_S911INTOGS_S911.IFG_LINES_MARAL_INDEX-1.EXIT.ENDIF.IFGS_S911-MATNRL_MATNR.L_MATNR=GS_S911-MATNR.DO.IFG_LINES_MARAL_INDEX-1.EXIT.ENDIF.CLEARL_DELETE.CLEARL_FUZHI.CLEARGS_MARA.READTABLEGT_MARAINTOGS_MARAINDEXL_INDEX.IFGS_S911-MATNR=GS_MARA-MATNR.跳出内循环,且外循环赋值L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论