最近做了几个有关ERP系统的流程自动化,感觉其中遇到的一些问题可以做一次分享与总结。
此次涉及的ERP中主要涵盖了两块:BW和BCS
BW财务模块
BW财务模块 就是SAP GUI,这一块涉及到刷报表流程的第一步数据准备和第二步数据收集。因为没有事务码,整个流程的稳定性是一个不小的挑战。
数据准备中,不涉及多个相同元素图标的情况下,基本都采用了UiBot中强大的图像元素判断和图像点击,自动化和稳定性都得以很好的解决。(流程迁移需要考虑电脑像素相同)
数据收集中,可以给大家提供一个画面。
这个页面我们可以看到大量相同的小图标,流程操作就是需要从选中的一个公司(名称里面纵坐标被掩盖的就是公司名称)中,从收据收集那一列右键点击更新,等待收集完毕,然后依次点击后边的图标。
因为里面有大量相同的图标,没办法去只根据图像元素判断和图像点击做稳定高效的自动化,那么综合考虑后,唯一可行的就是根据坐标来进行一一点击更新了,可是这么多坐标要如何处理,才能不在页面有偏移或者电脑屏幕大小变化的时候产生错位。
就像平面几何一样,两线交叉确定一个点,所以如何去找这个点很重要。可以看到图片中左边名称下面公司名字是唯一的,上面每一列的名称也是唯一的,如此,便可以根据公司找到纵坐标,列名找到横坐标,交叉点就是需要点击更新的图标了,而且是百分百稳定。
此处灵活找坐标,不得不说UiBot另两个强大的功能的搭配,就是鼠标移动到图像上以及获取鼠标位置,根据这两个我们就能找到公司名称的坐标以及列名的坐标,从而确定需要点击更新的横坐标以及纵坐标。
而更方便的处理就是多取几个交叉点的坐标,根据横坐标的平均差值以及纵坐标的平均差值,来找出更新点的坐标偏移,这样就可以从找到的第一个点来依次循环处理更新了。
BCS模块
BCS模块 就是SAP中的会计报表合并模块(Business Consolidation System),而合并报表项目是由多个合并科目组成的一个组,用于合并报表展示。
在BCS中,合并科目用于记帐,合并报表项目不能用于记帐。而我们之前所说的ECC(ERP Central Component),用于指代SAP上线企业所使用的记帐系统。那么此处流程自动化需要对各个公司进行从一级到三级报表的实例生成,重点在下图:
这个弹框神奇在两点:
· 一个是关闭弹窗的X图标 ,里面index是可变的。
· 另一个就是点击实例生成后弹框出现的时长。
因为index 的可变性,考虑了两种方案:
一种就是UiBot的图像元素判断和图像点击,这样就不用考虑index是多少了。
另一种就是继续用UiBot的元素判断和鼠标点击目标,但是前提是需要知道index是多少。此处根据前后多次的测试发现,每弹出一次index就自增1,所以可以判定,在第一级报表实例生成的时候,index默认是1,此后报表查看还会弹出一次,依次可以循环做元素判断以及鼠标目标点击。
当然,如果此处弹框的Index是灵活多变的,那也没关系,可以利用值循环的方式来根据元素判断的返回值找出index,从而来进行鼠标目标点击。
而点击报表实例生成后,此弹框什么时候会弹出来是个问题。根据业务叙述的情况以及测试结果发现,可能在收尾阶段以及网速好的情况下几秒后就弹出来,也可能在实例太多网速拥堵的情况下,几十分钟后才弹出来,反正弹框是一定会出来的,只是时间长短不定。
因此此处也考虑了两种方案:第一种就是元素判断硬性等待,直到出现关闭再去处理,但是流程整体时间会大大加长,因为即使不弹出继续刷二级三级都不会产生影响。基于此考虑第二种方案——双进程。
在双进程中,主进程正常进行各级实例报表生成,辅助进程专注进行弹出框的发现与关闭。搭配就是主进程在第一次进入第一级报表实例生成的时候,触发启动辅助进程来进行对弹出框的监视和处理,依次可以达到高效处理流程的效果,不用再为等待弹框关闭的处理而耗费后面流程处理的时间。
指令我们大概都很熟悉,但是如何根据客户的实例场景,进行巧妙的运用,是一个需要思考和经验积累的过程。
以下根据此次分享做了比较详细的视图总结,可供参考。