吳健



摘要:Python語言因其具有易讀以及可擴展等特性,在各行各業中均得以應用。金融行業存在大量性質相同或完全類似的業務,這些業務若全部由人工處理耗時耗力,通過研究使用Python語言開發程序,利用程序來對SAP財務軟件實現操控,從而實現賬務業務的自動處理,達到替代人工操作的目的,也使得賬務處理的效率和準確率大幅提高。
關鍵詞:Python;SAP財務軟件;賬務處理
中圖分類號:TP311? 文獻標志碼:A
0 引言
Python語言發明于1989年,1991年公開發行。Python語言具有簡單、易學、同時支持面向對象和過程、具有可移植性、可擴展性和可嵌入性等特點[1-3],應用非常廣泛,滲透到各個領域[4-5]。財務行業中一般使用金蝶、用友、SAP等財務軟件,其中SAP財務軟件使用越來越廣泛,軟件使用單位的軟件操作人員難免會遇到一些操作步驟相同或者近似的且重復次數很多的業務,在這種情況下,業務流程的自動化就成了迫切需要和必然的趨勢。
1 相關背景
1.1 SAP介紹
SAP(Systems Applications and Products in Data Processing)財務軟件是全球第三大獨立軟件供應商(前兩位為Microsoft和Oracle),在企業管理軟件領域市場占有率排名第一,是ERP市場的絕對領導者。SAP在中國的發展可以分為3個階段:第一個階段的標志是90年代的“燈塔計劃”,SAP開始進入中國,與部分大型國企進行合作;第二個階段是許多大型集團企業開始實施SAP,SAP在中國迅速擴張;第三個階段是近些年許多中型企業開始選擇SAP以及房地產、醫藥等行業實施SAP。SAP具有功能強大、邏輯嚴謹、財務業務一體化、流程規范、信息可追溯以及功能全面等一系列特點,因此,在國內,SAP擁有超過15 000家客戶,并且越來越多的企業選擇SAP。企業使用SAP后,在進行賬務處理過程中,難免會遇到大量同類型的業務,靠人工輸入,會消耗大量人力和時間,且準確率也會打折扣,此時可以通過程序開發獲得一個替代人工、可用性高、效率高、準確率高的工具。
1.2 流程自動化
業務流程是指按照既定順序執行的相互銜接的工作流程、活動和任務,旨在實現特定的業務成果。流程自動化是指實現部分或所有相關流程的數字化,旨在提升業務流程的效率、敏捷性和合規性。通過程序實現流程自動化,就是用設計的程序流程來完成工作信息與業務的交互,特別是工作信息與業務交互較多時,流程自動化就可以高效地解決這些復雜的流程。流程自動化帶來的好處是可以節約成本、加速轉型、提高質量以及解放人力。
2 系統設計
本次系統開發以Python語言為基礎,以常用的Python模塊如Pandas,Thinter為支撐,結合數據庫技術,以實現前臺人機交互,導入相關數據,調用SAP財務軟件,并在其中自動進行賬務處理,處理完成結果反饋以及錯誤提示判斷等一系列過程。
2.1 架構設計
為實現上述功能,基于C/S架構進行設計與開發。用戶啟動客戶端程序,程序連接服務器進行版本校驗,版本低于服務器上現有版本,則下載服務器現有版本進行替換更新,輸入用戶信息登錄,進入操作界面,根據業務需要提交所需數據信息后,程序調用SAP財務軟件,按照程序編寫預置好的邏輯進行賬務處理,處理結果反饋給程序執行人,執行人檢查核對,若有錯誤做相應調整,直至無誤后保存相關信息,結束程序執行。整個開發將客戶端作為核心應用軟件,后端負責客戶端調用情況監測和版本更新校驗,這樣既利于開發又便于后期維護和用戶使用。系統整體的功能流程如圖1所示。
2.2 具體功能實現
功能的實現基于 Python3.7.7 版本的基本編譯環境,使用Sublime Text 3.1.1版 本 作 為 編 譯 工 具,結 合 了Win32api, Win32gui, Win32con,Pandas,Pymysql等算法庫,使用了SAP配套開發工具Scripting Tracker,確保了程序執行時對SAP操控的穩定性。
2.2.1 啟動SAP軟件
程序啟動后需要調用打開系統中安裝的SAP財務軟件,可以通過調用Win32api算法庫中的ShellExecute()函數,啟動SAP程序。
ShellExecute函數原型及參數含義如下:
win32api.ShellExecute(hWnd:HWND;Operation,FileName,Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall。
hWnd:用于指定父窗口句柄。當函數調用過程出現錯誤時,它將作為Windows消息窗口的父窗口。例如,可以將其設置為應用程序主窗口句柄,即Application.Handle,也可以將其設置為桌面窗口句柄(用GetDesktopWindow函數獲得)。
Operation:用于指定要進行的操作。其中“open”操作表示執行由FileName參數指定的程序或打開由FileName參數指定的文件或文件夾;“print”操作表示打印由FileName參數指定的文件;“explore”操作表示瀏覽由FileName參數指定的文件夾。當參數設為nil時,表示執行默認操作“open”。
FileName:用于指定要打開的文件名、要執行的程序文件名或要瀏覽的文件夾名。
Parameters:若FileName參數是一個可執行程序,則此參數指定命令行參數,否則此參數應為nil或PChar(0)。
Directory:用于指定默認目錄。
ShowCmd:若FileName參數是一個可執行程序,則此參數指定程序窗口的初始顯示方式,否則此參數應設置為0。
若ShellExecute函數調用成功,則返回值為被執行程序的實例句柄。若返回值小于32,則表示出現錯誤。
系統中的SAP軟件的默認SAP安裝路徑為“C:\Program Files (x86)\SAP\FrontEnd\SAPgui\SAPgui.exe”,服務器地址為“192.168.1.101”,則啟動ASP程序登錄界面的代碼為:win32api.ShellExecute(0, 'open', r'C:\Program Files (x86)\SAP\FrontEnd\SAPgui\SAPgui.exe', '/M/192.168.1.101/S/sapmsPS7/G/PS7', '',1)。需要注意的是,如果系統中安裝SAP沒有選擇默認路徑安裝,則可能會導致程序調用啟動失敗。
2.2.2 登錄SAP用戶
程序連接SAP登錄界面程序腳本為:
SapGuiAuto =win32com.client.GetObject("SAPGUI")
application = SapGuiAuto.GetScriptingEngine
connection = application.Children(0)
session = connection.Children(0)
輸入用戶名和密碼程序腳本為:
session.findById("wnd[0]/usr/txtRSYST-BNAME").text = username
session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = password
此處username和password為程序執行人的用戶名和密碼,從安全角度考慮,程序不對用戶名和密碼直接做封裝,而是由程序執行人在程序調用時直接輸入,就需要留有接口便于程序執行人做輸入操作,考慮到通過文件讀取的方式獲取到執行人預先保存在文件中的用戶名和密碼的方式交互界面不夠友善,且密碼不能明文保存,決定通過設計一個登錄界面,由程序執行人在界面對話框中輸入用戶名和密碼,于是使用Python的Tkinter模塊做界面設計,登錄界面如圖2所示。Tkinter,即 tk interface,是 Python 的標準 GUI 庫,本質上,它是對 TCL/TK 工具包的一種Python 接口封裝。Tkinter 是 Python 自帶的標準庫,因此無須另行安裝,它支持跨平臺運行,不僅可以在Windows 平臺上運行,還支持在Linux和Mac平臺上運行。Tkinter 編寫的程序,也稱為 GUI 程序,GUI (Graphical User Interface)指的是“圖形用戶界面”,它是計算機圖形學(CG)的一門分支,主要研究如何在計算機中表示圖形以及利用計算機進行圖形的計算、處理和顯示等相關工作。
2.2.3 執行事務操作
SAP自帶了腳本的錄制和回放的功能,在SAP界面的定制本地布局選項下有個腳本錄制和回放的功能,在點下界面上的錄制按鈕后,會自動記錄在當前窗口SAP下的每一步操作記錄,記錄結束后點擊停止,步驟記錄會以VBS格式文件保存到用戶自行指定的目錄。
為了提高開發的效率,使用了SAP配套開發工具Scripting Tracker,用來進行操作步驟的記錄。Scripting Tracker是一個支持SAP GUI腳本開發的實用程序,程序有分析器和記錄器兩個主要功能,分析器為每個腳本對象顯示了許多技術細節,如ID、位置等,在該選項卡中采用了樹結構的顯示,包含了所有SAP會話及其腳本對象。記錄器顯示了用于加載、編輯和執行SAP GUI腳本的基本編輯器,可以選擇并使用所需的會話,以便在此會話中運行腳本。分析器提供了用紅色框架識別SAP GUI的每個腳本對象的可能性。有兩種方法可以實現這一點:第一種方法是從層次中選擇一個對象,然后按鼠標右鍵。第二種方法是從層次結構中選擇一個對象并按下標識按鈕。接下來,需要將鼠標指針移動到選定的會話窗口,識別腳本對象后,可以將其技術名稱(稱為ID)復制到剪貼板并在其他上下文中使用。此功能等同于SAP GUI腳本向導。通過記錄器,該工具可以在PowerShellWindows和PowerShellCore,Visual Basic Script,AutoIt,Python和JShell for Java中記錄、編輯和執行SAPGUI活動。腳本跟蹤程序使用SAP GUI和PowerShellWindows或PowerShellCore、Windows腳本主機(WSH)VBScript、AutoIt腳本或Python引擎。
2.3.4 Pandas庫
程序設計過程中主要用到了Pandas庫Pandas.read_excel函數和DataFrame.to_excel函數用來讀取和寫入Excel文件。
(1)Pandas.read_excel函數。
Pandas.read_excel函數的用法為:
Pandas.read_excel(io,sheet_name=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skip_footer=0,skipfooter=0,convert_float=True,mangle_dupe_cols=True,**kwds)
參數說明如表1所示。
(2)DataFrame.to_excel函數。
DataFrame.to_excel函數的用法為:
DataFrame.to_excel(excel_writer,sheet_name="Sheet1",na_rep="",float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,encoding=None,inf_rep="inf",verbose=True,freeze_panes=None)
參數說明如表2所示。
3 系統測試
程序編寫完成后,為了確??煽啃裕梢栽跍y試系統進行模擬和測試,通過輸出結果檢驗程序執行是否正確,確認無誤后修改SAP地址移植至生產機進行運行。需要注意的是,在程序執行之前,需在SAP軟件的選項的輔助功能和腳本選項下,禁用在腳本附加到SAP GUI時發出通知和在腳本打開連接時發出通知這兩個功能。如果SAP程序服務器上禁用了SAP GUI腳本,則無法使用SAP自帶的腳本錄制和回放功能,同時,配套開發工具Scripting Tracker也無法使用。
4 結語
本文闡述了使用Python編程語言,通過腳本錄制和編程的方式操作SAP財務軟件,此方法實現了賬務的自動處理,特別是在遇到大量重復工作的時候,用程序替代人工進行賬務處理,很大程度上縮短了處理時間,提高了效率和準確率。
參考文獻
[1]肖旻,陳行.基于Python語言編程特點及應用之探討[J].電腦知識與技術,2014(12):8177-8178.
[2]羅霄,任勇,山秀明.基于Python的混合語言編程及其實現[J].計算機應用與軟件,2004(12):17-18.
[3]嚴婷,文欣秀.基于Python的可視化數據分析平臺設計與實現[J].計算機時代,2017(12):54-57.
[4]李永剛.基于Python的計算機軟件應用技術研究[J].無線互聯科技,2021(18):36-37.
[5]宋永生,黃蓉美,王軍.基于Python的數據分析與可視化平臺研究[J].現代信息科技,2019(21):7-9.
(編輯 王雪芬)
Design and implementation of automatic accounting processing of SAP financial software based
on Python
Wu? Jian
(YangZhou ServiceDepartment,Sinopec Shared Srvices Co., Ltd., Yangzhou 225000, China)
Abstract: Python language is used in all walks of life because of its readability and extensibility. In the financial industry, there are a large number of businesses with the same or completely similar nature, which are time-consuming and labor-intensive if all of them are manually processed. By studying and using Python language to develop programs, we can use programs to manipulate SAP financial software, so as to achieve automatic processing of accounting business, achieve the purpose of replacing manual operations, and also greatly improve the efficiency and accuracy of accounting processing.
Key words: Python; SAP financial software; accounting treatment