RPA開發教程丨ERP系統的RPA開發實施技巧
- 2019 年 10 月 7 日
- 筆記
最近做了幾個有關ERP系統的RPA流程自動化,感覺其中遇到的一些問題可以做一次分享與總結。
此次RPA開發教程涉及的ERP中主要涵蓋了兩塊:BW和BCS。
BW財務模組
BW財務模組 就是SAP GUI,這一塊涉及到刷報表流程的第一步數據準備和第二步數據收集。因為沒有事務碼,整個流程的穩定性是一個不小的挑戰。
數據準備中,不涉及多個相同元素圖標的情況下,基本都採用了UiBot中強大的影像元素判斷和影像點擊,自動化和穩定性都得以很好的解決。(流程遷移需要考慮電腦像素相同)
數據收集中,可以給大家提供一個畫面。

這個頁面我們可以看到大量相同的小圖標,流程操作就是需要從選中的一個公司(名稱裡面縱坐標被掩蓋的就是公司名稱)中,從收據收集那一列右鍵點擊更新,等待收集完畢,然後依次點擊後邊的圖標。
因為裡面有大量相同的圖標,沒辦法去只根據影像元素判斷和影像點擊做穩定高效的自動化,那麼綜合考慮後,唯一可行的就是根據坐標來進行一一點擊更新了,可是這麼多坐標要如何處理,才能不在頁面有偏移或者電腦螢幕大小變化的時候產生錯位。
就像平面幾何一樣,兩線交叉確定一個點,所以如何去找這個點很重要。可以看到圖片中左邊名稱下面公司名字是唯一的,上面每一列的名稱也是唯一的,如此,便可以根據公司找到縱坐標,列名找到橫坐標,交叉點就是需要點擊更新的圖標了,而且是百分百穩定。
此處靈活找坐標,不得不說UiBot另兩個強大的功能的搭配,就是滑鼠移動到影像上以及獲取滑鼠位置,根據這兩個我們就能找到公司名稱的坐標以及列名的坐標,從而確定需要點擊更新的橫坐標以及縱坐標。
而更方便的處理就是多取幾個交叉點的坐標,根據橫坐標的平均差值以及縱坐標的平均差值,來找出更新點的坐標偏移,這樣就可以從找到的第一個點來依次循環處理更新了。
BCS模組
BCS模組 就是SAP中的會計報表合併模組(Business Consolidation System),而合併報表項目是由多個合併科目組成的一個組,用於合併報表展示。
在BCS中,合併科目用於記帳,合併報表項目不能用於記帳。而我們之前所說的ECC(ERP Central Component),用於指代SAP上線企業所使用的記帳系統。那麼此處流程自動化需要對各個公司進行從一級到三級報表的實例生成,重點在下圖:

這個彈框神奇在兩點:一個是關閉彈窗的X圖標 ,裡面index是可變的;另一個就是點擊實例生成後彈框出現的時長。

因為index 的可變性,考慮了兩種方案:
1、一種就是UiBot的影像元素判斷和影像點擊,這樣就不用考慮index是多少了。
2、另一種就是繼續用UiBot的元素判斷和滑鼠點擊目標,但是前提是需要知道index是多少。此處根據前後多次的測試發現,每彈出一次index就自增1,所以可以判定,在第一級報表實例生成的時候,index默認是1,此後報表查看還會彈出一次,依次可以循環做元素判斷以及滑鼠目標點擊。
當然,如果此處彈框的Index是靈活多變的,那也沒關係,可以利用值循環的方式來根據元素判斷的返回值找出index,從而來進行滑鼠目標點擊。
而點擊報表實例生成後,此彈框什麼時候會彈出來是個問題。根據業務敘述的情況以及測試結果發現,可能在收尾階段以及網速好的情況下幾秒後就彈出來,也可能在實例太多網速擁堵的情況下,幾十分鐘後才彈出來,反正彈框是一定會出來的,只是時間長短不定。
因此此處也考慮了兩種方案:第一種就是元素判斷硬性等待,直到出現關閉再去處理,但是流程整體時間會大大加長,因為即使不彈出繼續刷二級三級都不會產生影響。基於此考慮第二種方案——雙進程。
在雙進程中,主進程正常進行各級實例報表生成,輔助進程專註進行彈出框的發現與關閉。搭配就是主進程在第一次進入第一級報表實例生成的時候,觸發啟動輔助進程來進行對彈出框的監視和處理,依次可以達到高效處理流程的效果,不用再為等待彈框關閉的處理而耗費後面流程處理的時間。
指令我們大概都很熟悉,但是如何根據客戶的實例場景,進行巧妙的運用,是一個需要思考和經驗積累的過程。
以下根據此次分享做了比較詳細的視圖總結,可供參考。
