劉曉文
摘 要 在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