劉曉文
摘 要 在ERP系統(tǒng)實施過程中,為實現(xiàn)SAP系統(tǒng)數(shù)據(jù)報表的快速開發(fā),構建了變量類庫、通用類庫、EXCEL類庫文件及框架代碼模型,設計了報表打印、Excel數(shù)據(jù)導出框架代碼。本文定義了程序數(shù)據(jù)顯示流程、選擇流程、Excel數(shù)據(jù)導出流程,并介紹了程序關鍵技術,文章最后給出報表打印和EXCEL數(shù)據(jù)導出的報表實例,報表開發(fā)時間少、程序修改量較小,從而證明了報表框架代碼的必要性、有效性。
【關鍵詞】ERP 報表開發(fā) 框架代碼 數(shù)據(jù)導出
二十一世紀信息技術迅猛發(fā)展,企業(yè)通過實施管理信息系統(tǒng)全面提高企業(yè)管理水平,整合企業(yè)資源,控制生產(chǎn)成本,提高企業(yè)核心競爭力。實施ERP系統(tǒng)是企業(yè)信息化首選,SAP公司ERP系統(tǒng)因為產(chǎn)品成熟穩(wěn)定、拓展性強逐為眾多企業(yè)所認可。筆者公司在開展實施SAP公司ERP系統(tǒng)以來,已經(jīng)實施上線了FI、TR、MRO、PS、HR等多個模塊,目前系統(tǒng)運行穩(wěn)定,達到預先管理效果。眾所周知,由于企業(yè)實際管理情況千差萬別,企業(yè)實施ERP難度大、周期長、工作繁重,其中開發(fā)定制報表也是一項繁重工作。筆者在參與企業(yè)ERP項目實施過程中,由于企業(yè)人員少、開發(fā)報表多、報表格式調整頻繁,報表開發(fā)工作進度不盡人意。
1 問題提出
如何提高開發(fā)人員工作效率,利用有限時間完成報表預定開發(fā)工作,成為報表開發(fā)人員急需解決的問題。在參與ERP實施過程中,作為ABAP關鍵用戶筆者通過實踐發(fā)現(xiàn): ABAP關鍵用戶最主要工作量是報表開發(fā),報表開發(fā)主要技術實現(xiàn)方法如下:
(1)利用ABAP開發(fā)語言、依托Write技術實現(xiàn)報表開發(fā)。
(2)利用ABAP開發(fā)語言構建程序將數(shù)據(jù)導入到Excel中實現(xiàn)報表開發(fā)。
(3)利用ABAP開發(fā)語言和SAP的Scriptform工具實現(xiàn)報表開發(fā)。
經(jīng)分析確認,在項目實際開發(fā)過程中,報表開發(fā)最主要開發(fā)方式就是第1種和第2種方式。開發(fā)初期,如果報表程序構架不合理,ABAP關鍵用戶需花費大量時間、精力調整開發(fā)程序,極大影響程序開發(fā)進度。針對這種情況,筆者提出一種開發(fā)框架代碼解決方案,通過開發(fā)構架代碼,將開發(fā)程序功能模塊化,以便重復利用代碼,減少程序修改量,提高工作效率。
2 解決方案
2.1 報表開發(fā)工作流程
在報表實際開發(fā)中,ABAP開發(fā)人員首先獲取報表開發(fā)功能說明書,按照開發(fā)功能說明書定義變量、編寫取數(shù)邏輯SQL語句、獲取數(shù)據(jù)、通過Write技術顯示數(shù)據(jù),具體開發(fā)流程如下:
(1)定義變量。
(2)根據(jù)取數(shù)邏輯SQL語句,獲取數(shù)據(jù)后存儲到系統(tǒng)內表中。
(3)在屏幕上顯示所需數(shù)據(jù)、選擇、更改數(shù)據(jù),然后將數(shù)據(jù)回寫到相應內表。
(4)根據(jù)選擇數(shù)據(jù)和報表格式導出、打印報表。
經(jīng)分析發(fā)現(xiàn)第1、第3、第4步驟均可開發(fā)框架代碼。其中第1部分:可在類庫文件中定義所需內表,然后在開發(fā)程序中實例化該內表,節(jié)省變量定義工作量,便與重復利用。第3部分:利用框架代碼定義內表存儲報表數(shù)據(jù)、顯示格式信息,然后遍歷內表,根據(jù)需要處理所需數(shù)據(jù)。第4部分:利用框架代碼打印報表或者導出Excel。
2.2 框架代碼模型構建
為了達到預期目的,需精心構建框架代碼模型,具體框架代碼模型構建如下:
2.2.1 構建底層模型
構建程序開發(fā)所需通用變量、通用函數(shù)庫、通用Excel函數(shù)庫、變量模型、報表頭、報表行數(shù)據(jù)、報表尾數(shù)據(jù)儲存顯示模型。因篇幅所限,下面涉及的類庫、內表、函數(shù)、變量數(shù)量均進行了縮減。
(1)變量類庫構建:定義程序中常用內表,便于在程序中實例化,具體信息如表1所示。
(2)導出Excel函數(shù)庫(Z_GS_ZS_Excel)構建:構建導出到Excel常用函數(shù)庫,名稱示例為TEMPLETDOWNLOAD、STARTExcel等。
(3)通用函數(shù)庫構建(Z_GS_ZS_FRM):構建通用函數(shù)庫,名稱示例為SPILITSTR、NUMTOWORD等。
(4)變量模型構建:類庫名稱為Z_GS_ZS_TABLE,內表名稱為SAVETABLESTYLE,報表程序定義報表表頭和表尾數(shù)據(jù)內表(HEADFOOTROW_ITAB),報表表頭和表尾格式數(shù)據(jù)內表(HEADFOOTCOL_ITAB),報表行數(shù)據(jù)內表(ROW_ITAB)等。
(5)報表頭、報表尾數(shù)據(jù)顯示模型構建:類庫為Z_GS_ZS_TABLE,內表名稱為SAVEHEADFOOTSTYLE,利用內表HEADFOOTROW_ITAB儲存表頭、表尾數(shù)據(jù),利用內表SAVEHEADFOOTSTYLE儲存表頭、表尾格式數(shù)據(jù),具體變量名稱示例為LENGTH、ALIGN、STYLE等:
(6)報表行數(shù)據(jù)存儲顯示模型構建:類庫名稱為Z_GS_ZS_TABLE,內表名稱為SAVETABLESTYLE,利用內表ROW_ITAB儲存行項目數(shù)據(jù),利用內表COL_ITAB儲存行項目格式數(shù)據(jù),具體變量名稱與第5條量相同。
2.2.2 報表數(shù)據(jù)顯示
報表程序數(shù)據(jù)接口:報表表頭、表尾、表頭格式、表尾格式、行數(shù)據(jù)、行數(shù)據(jù)格式內表以及每頁顯示數(shù)據(jù)條數(shù)。
報表顯示流程:報表框架程序根據(jù)報表程序數(shù)據(jù),經(jīng)過動態(tài)計算顯示數(shù)據(jù)報表,具體顯示流程如下:
(1)根據(jù)報表行數(shù)以及每頁顯示行數(shù),計算報表頁數(shù)。
(2)根據(jù)報表頁數(shù),循環(huán)遍歷,顯示每頁信息內容。
(3)遍歷表頭內表,根據(jù)格式信息顯示數(shù)據(jù)。
(4)遍歷報表行數(shù)據(jù),根據(jù)格式信息顯示數(shù)據(jù),列寬能夠動態(tài)修改。
(5)遍歷表尾內表,根據(jù)表尾格式信息顯示數(shù)據(jù),頁碼能夠動態(tài)生成。endprint
報表顯示內容:根據(jù)內表信息和內表儲存格式信息顯示報表內容。
利用技術:動態(tài)讀取內表字段信息,讀取內表定義字段長度、類型等信息,并利用循環(huán)動態(tài)讀取內表數(shù)據(jù),該技術是實現(xiàn)框架代碼關鍵技術。
2.2.3 報表數(shù)據(jù)選擇流程
(1)根據(jù)內表數(shù)據(jù)計算WRITE到屏幕上總行數(shù)。
(2)根據(jù)屏幕上數(shù)據(jù)總行數(shù)遍歷屏幕,判斷屏幕上是否選擇該數(shù)據(jù),如果選擇了該數(shù)據(jù),則添加數(shù)據(jù)到SELECTEDROW_ITAB內表中,然后程序指向下一行數(shù)據(jù)。
(3)判斷是否為最后一行,如果是退出循環(huán),否則循環(huán)指向下一行。
(4)利用技術:READ技術,讀取屏幕數(shù)據(jù)到相應變量中,通過解析字符串,寫入數(shù)據(jù)到內表中。
2.2.4 報表數(shù)據(jù)打印
接口:報表表頭、表尾,表頭格式、表尾格式內表、行數(shù)據(jù)、行數(shù)據(jù)格式內表以及每頁顯示數(shù)據(jù)條數(shù)。
報表數(shù)據(jù)打印流程:
(1)根據(jù)數(shù)據(jù)行數(shù)和每頁顯示行數(shù),計算報表頁數(shù)。
(2)根據(jù)報表頁數(shù),循環(huán)遍歷顯示每頁信息內容。
(3)遍歷表頭內表,根據(jù)表頭格式信息顯示數(shù)據(jù)。
(4)遍歷報表行數(shù)據(jù),根據(jù)表身格式信息顯示數(shù)據(jù),列寬能夠動態(tài)修改。
(5)遍歷表尾內表,根據(jù)表尾格式信息顯示數(shù)據(jù),頁碼能夠動態(tài)生成。
Excel數(shù)據(jù)報表導出流程:
(1)遍歷表頭內表,根據(jù)表儲存格式信息顯示數(shù)據(jù)。
(2)遍歷報表行數(shù)據(jù),根據(jù)表身格式信息顯示數(shù)據(jù),列寬能夠動態(tài)修改。
(3)遍歷表尾內表,根據(jù)表尾格式信息顯示數(shù)據(jù)。
(4)關鍵技術:Excel模板下載、Excel文檔開啟、Excel文檔寫入、Excel格式控制(如單元格對齊方式、字體等格式),通過Z_GS_ZS_Excel類庫文件實現(xiàn)。
2.3 框架代碼實例
通過利用精心構建的框架代碼,參考開發(fā)報表具體格式,實際開發(fā)了利用WRITE技術和Excel數(shù)據(jù)導出格式報表,具體開發(fā)實例如圖1所示。
3 結論
通過對報表開發(fā)中問題分析,提出報表開發(fā)框架代碼解決方案,最終給出框架代碼開發(fā)報表實例,通過具體實例開發(fā)我們得出如下結論:
(1)利用框架代碼提高代碼開發(fā)效率及代碼使用率。
(2)有效減少開發(fā)報表時間。
(3)降低報表開發(fā)門檻,利于初學者上手。
因此,利用框架代碼在進行報表快速開發(fā)是行之有效的,能夠很好解決在ERP系統(tǒng)實施過程中報表開發(fā)工作量大、人員少的問題。
參考文獻
[1]賈英新.ABAP在SAP系統(tǒng)開發(fā)中的應用[J].信息通信,2015(03).
[2]張偉.ERP系統(tǒng)實施方法及其成功要素分析[J].電子技術與軟件工程,2016(09).
[3]魏黎黎.應用ABAP/4在SAPR/3系統(tǒng)中進行報表開發(fā)[J].企業(yè)技術開發(fā),2014(04).
[4]黃玲.應用ABAP在SAP系統(tǒng)中進行報表開發(fā)[J].中國電子商務,2011(10).
[5]朱超.框架技術在信息系統(tǒng)開發(fā)中的應用研究[J].網(wǎng)絡安全技術與應用,2016(11).
[6]任澤坤.ABAP程序開發(fā)基礎及開發(fā)方法[J].軟件,2011(06).
作者單位
1.中國石化青島煉油化工有限責任公司 山東省青島市 266500
2.青島裕安石化裝備有限公司 山東省青島市 266500endprint