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