ERP实施中报表框架代码的开发
2018-01-17刘晓文
刘晓文
摘 要 在ERP系统实施过程中,为实现SAP系统数据报表的快速开发,构建了变量类库、通用类库、EXCEL类库文件及框架代码模型,设计了报表打印、Excel数据导出框架代码。本文定义了程序数据显示流程、选择流程、Excel数据导出流程,并介绍了程序关键技术,文章最后给出报表打印和EXCEL数据导出的报表实例,报表开发时间少、程序修改量较小,从而证明了报表框架代码的必要性、有效性。
【关键词】ERP 报表开发 框架代码 数据导出
二十一世纪信息技术迅猛发展,企业通过实施管理信息系统全面提高企业管理水平,整合企业资源,控制生产成本,提高企业核心竞争力。实施ERP系统是企业信息化首选,SAP公司ERP系统因为产品成熟稳定、拓展性强逐为众多企业所认可。笔者公司在开展实施SAP公司ERP系统以来,已经实施上线了FI、TR、MRO、PS、HR等多个模块,目前系统运行稳定,达到预先管理效果。众所周知,由于企业实际管理情况千差万别,企业实施ERP难度大、周期长、工作繁重,其中开发定制报表也是一项繁重工作。笔者在参与企业ERP项目实施过程中,由于企业人员少、开发报表多、报表格式调整频繁,报表开发工作进度不尽人意。
1 问题提出
如何提高开发人员工作效率,利用有限时间完成报表预定开发工作,成为报表开发人员急需解决的问题。在参与ERP实施过程中,作为ABAP关键用户笔者通过实践发现: ABAP关键用户最主要工作量是报表开发,报表开发主要技术实现方法如下:
(1)利用ABAP开发语言、依托Write技术实现报表开发。
(2)利用ABAP开发语言构建程序将数据导入到Excel中实现报表开发。
(3)利用ABAP开发语言和SAP的Scriptform工具实现报表开发。
经分析确认,在项目实际开发过程中,报表开发最主要开发方式就是第1种和第2种方式。开发初期,如果报表程序构架不合理,ABAP关键用户需花费大量时间、精力调整开发程序,极大影响程序开发进度。针对这种情况,笔者提出一种开发框架代码解决方案,通过开发构架代码,将开发程序功能模块化,以便重复利用代码,减少程序修改量,提高工作效率。
2 解决方案
2.1 报表开发工作流程
在报表实际开发中,ABAP开发人员首先获取报表开发功能说明书,按照开发功能说明书定义变量、编写取数逻辑SQL语句、获取数据、通过Write技术显示数据,具体开发流程如下:
(1)定义变量。
(2)根据取数逻辑SQL语句,获取数据后存储到系统内表中。
(3)在屏幕上显示所需数据、选择、更改数据,然后将数据回写到相应内表。
(4)根据选择数据和报表格式导出、打印报表。
经分析发现第1、第3、第4步骤均可开发框架代码。其中第1部分:可在类库文件中定义所需内表,然后在开发程序中实例化该内表,节省变量定义工作量,便与重复利用。第3部分:利用框架代码定义内表存储报表数据、显示格式信息,然后遍历内表,根据需要处理所需数据。第4部分:利用框架代码打印报表或者导出Excel。
2.2 框架代码模型构建
为了达到预期目的,需精心构建框架代码模型,具体框架代码模型构建如下:
2.2.1 构建底层模型
构建程序开发所需通用变量、通用函数库、通用Excel函数库、变量模型、报表头、报表行数据、报表尾数据储存显示模型。因篇幅所限,下面涉及的类库、内表、函数、变量数量均进行了缩减。
(1)变量类库构建:定义程序中常用内表,便于在程序中实例化,具体信息如表1所示。
(2)导出Excel函数库(Z_GS_ZS_Excel)构建:构建导出到Excel常用函数库,名称示例为TEMPLETDOWNLOAD、STARTExcel等。
(3)通用函数库构建(Z_GS_ZS_FRM):构建通用函数库,名称示例为SPILITSTR、NUMTOWORD等。
(4)变量模型构建:类库名称为Z_GS_ZS_TABLE,内表名称为SAVETABLESTYLE,报表程序定义报表表头和表尾数据内表(HEADFOOTROW_ITAB),报表表头和表尾格式数据内表(HEADFOOTCOL_ITAB),报表行数据内表(ROW_ITAB)等。
(5)报表头、报表尾数据显示模型构建:类库为Z_GS_ZS_TABLE,内表名称为SAVEHEADFOOTSTYLE,利用内表HEADFOOTROW_ITAB储存表头、表尾数据,利用内表SAVEHEADFOOTSTYLE储存表头、表尾格式数据,具体变量名称示例为LENGTH、ALIGN、STYLE等:
(6)报表行数据存储显示模型构建:类库名称为Z_GS_ZS_TABLE,内表名称为SAVETABLESTYLE,利用内表ROW_ITAB储存行项目数据,利用内表COL_ITAB储存行项目格式数据,具体变量名称与第5条量相同。
2.2.2 报表数据显示
报表程序数据接口:报表表头、表尾、表头格式、表尾格式、行数据、行数据格式内表以及每页显示数据条数。
报表显示流程:报表框架程序根据报表程序数据,经过动态计算显示数据报表,具体显示流程如下:
(1)根据报表行数以及每页显示行数,计算报表页数。
(2)根據报表页数,循环遍历,显示每页信息内容。
(3)遍历表头内表,根据格式信息显示数据。
(4)遍历报表行数据,根据格式信息显示数据,列宽能够动态修改。
(5)遍历表尾内表,根据表尾格式信息显示数据,页码能够动态生成。endprint
报表显示内容:根据内表信息和内表储存格式信息显示报表内容。
利用技术:动态读取内表字段信息,读取内表定义字段长度、类型等信息,并利用循环动态读取内表数据,该技术是实现框架代码关键技术。
2.2.3 报表数据选择流程
(1)根据内表数据计算WRITE到屏幕上总行数。
(2)根据屏幕上数据总行数遍历屏幕,判断屏幕上是否选择该数据,如果选择了该数据,则添加数据到SELECTEDROW_ITAB内表中,然后程序指向下一行数据。
(3)判断是否为最后一行,如果是退出循环,否则循环指向下一行。
(4)利用技术:READ技术,读取屏幕数据到相应变量中,通过解析字符串,写入数据到内表中。
2.2.4 报表数据打印
接口:报表表头、表尾,表头格式、表尾格式内表、行数据、行数据格式内表以及每页显示数据条数。
报表数据打印流程:
(1)根据数据行数和每页显示行数,计算报表页数。
(2)根据报表页数,循环遍历显示每页信息内容。
(3)遍历表头内表,根据表头格式信息显示数据。
(4)遍历报表行数据,根据表身格式信息显示数据,列宽能够动态修改。
(5)遍历表尾内表,根据表尾格式信息显示数据,页码能够动态生成。
Excel数据报表导出流程:
(1)遍历表头内表,根据表储存格式信息显示数据。
(2)遍历报表行数据,根据表身格式信息显示数据,列宽能够动态修改。
(3)遍历表尾内表,根据表尾格式信息显示数据。
(4)关键技术:Excel模板下载、Excel文档开启、Excel文档写入、Excel格式控制(如单元格对齐方式、字体等格式),通过Z_GS_ZS_Excel类库文件实现。
2.3 框架代码实例
通过利用精心构建的框架代码,参考开发报表具体格式,实际开发了利用WRITE技术和Excel数据导出格式报表,具体开发实例如图1所示。
3 结论
通过对报表开发中问题分析,提出报表开发框架代码解决方案,最终给出框架代码开发报表实例,通过具体实例开发我们得出如下结论:
(1)利用框架代码提高代码开发效率及代码使用率。
(2)有效减少开发报表时间。
(3)降低报表开发门槛,利于初学者上手。
因此,利用框架代码在进行报表快速开发是行之有效的,能够很好解决在ERP系统实施过程中报表开发工作量大、人员少的问题。
参考文献
[1]贾英新.ABAP在SAP系统开发中的应用[J].信息通信,2015(03).
[2]张伟.ERP系统实施方法及其成功要素分析[J].电子技术与软件工程,2016(09).
[3]魏黎黎.应用ABAP/4在SAPR/3系统中进行报表开发[J].企业技术开发,2014(04).
[4]黄玲.应用ABAP在SAP系统中进行报表开发[J].中国电子商务,2011(10).
[5]朱超.框架技术在信息系统开发中的应用研究[J].网络安全技术与应用,2016(11).
[6]任泽坤.ABAP程序开发基础及开发方法[J].软件,2011(06).
作者單位
1.中国石化青岛炼油化工有限责任公司 山东省青岛市 266500
2.青岛裕安石化装备有限公司 山东省青岛市 266500endprint