VBA驱动SAP GUI自动化:查找页面元素FindAllByName

news2024/11/24 19:56:24

我们在VBA中嵌入SAP原生的【脚本录制与回放】功能生成的VBS脚本,可以实现很多自动化操作。但只有我们对SAP做了一系列动作,才会得到这些动作的脚本。然而,一旦我们需要用代码提前做一些判断,然后再决定后续的动作时,这个判断的代码就无法通过【脚本录制与回放】功能录制得到。这个时候,我们需要学会看SAP GUI Scripting API。

  举个小爬在实际工作中碰到的例子。我们有时候会利用脚本驱动事务代码F-02完成SAP凭证的批量录入。在凭证的行项目录入界面中,某些科目下,SAP需要我们维护【到期日】【基准日】;有些行项目下,则没有这个选项让用户维护,如下图所示:

   我们需要先判断有没有【到期日】这个元素,再决定是不是要给这个元素传值。这个判断的代码就无法去录制代码得到了。

  这也就是小爬今天要分享的知识点:利用FindAllByName()方法去判断是否存在某个元素。这些方法就是通过SAP GUI Scripting API学习得来。

  之所以这里用到FindAllByName()而不是我们熟悉的FindById()方法,是因为当我们使用FindById()去查找某个页面中没有的元素时,程序会直接报错异常,而VBA的异常响应能力天生不足,使用FindAllByName()则完全不会存在这个问题。

   从上图中可以看到,FindAllByName()方法接收两个参数,一个是元素的Name,另一个是元素的Type,而返回值是一个GuiComponentCollection对象,相当于一个数组。当我们没有找到对应的元素时,会返回一个空数组,并不会报错。

以【到期日】这个字段为例,我们还是需要借助万能的Scripting Tracker工具先找到元素的Name和Type。我们可以点击工具中的望远镜图标【查找对象】,输入关键词【到期日】,此时工具会自动帮我们定位到对应对象(灰色背景),如下图所示:

   这里可以看到,【到期日】对象对应的Name:BSEG-ZFBDT,对应的Type:GuiLabel(注意,这里不用输入Type括号后面的数字)。只要判断有这个【到期日】label元素,就可以断定页面中是否有【到期日】这个GuiCTextField输入框元素。

有了这两点,我们可以这样来组织我们的VBA代码,避免程序出错和写不必要的异常响应,代码示例如下:

 1 Sub Main()
 2 
 3     Dim SapGuiAuto As Object
 4     Dim app As Object
 5     Dim connection As Object
 6     Dim session As Object
 7     Dim ZFBDT_collection As Object, cnt As Long
 8 
 9      Set SapGuiAuto = GetObject("SAPGUI")
10      Set app = SapGuiAuto.GetScriptingEngine
11      app.HistoryEnabled = False
12      Set connection = app.Children(0)
13       If connection.DisabledByServer = True Then
14         Exit Sub
15       End If
16       Set session = connection.Children(0)
17       If session.Busy = True Then
18         Exit Sub
19       End If
20       If session.Info.IsLowSpeedConnection = True Then
21         Exit Sub
22       End If
23 
24 
25     session.findById("wnd[0]").maximize
26     Set ZFBDT_collection = session.findById("wnd[0]/usr").FindAllByName("BSEG-ZFBDT", "GuiLabel") '基于Name和Type 查找【到期日】元素
27     cnt = ZFBDT_collection.Count
28     If cnt = 0 Then
29         MsgBox "【到期日】元素在当前SAP会话中不存在!"
30     Else:
31         Debug.Print ZFBDT_collection(0).Text '打印对应的元素的Text属性,佐证是否为【到期日】
32         session.findById("wnd[0]/usr/ctxtBSEG-ZFBDT").Text = "2022.01.01" '找到对应的元素,传值
33     End If
34 End Sub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MBR主引导记录

主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区&…

基于ARM的环境参数检测系统设计(Labview+STM32+ZigBee)

目 录 1 绪论 1 1.1 研究背景和意义 1 1.2 研究现状 2 1.3 研究内容 3 2 系统概述和相关原理 4 2.1 系统的功能分析与设计 4 2.2 LabVIEW介绍 5 2.3 ZigBee技术 5 2.3.1 ZigBee技术概述 5 2.3.2 ZigBee网络协议 6 2.3.3 ZigBee网络拓扑结构 7 2.4 GSM技术 8 2.5 本章小结 8 3 …

【研发工具】Centos下搭建轻量级内网FTP服务器

1 前言 vsftpd是一款非常小巧、高性能、稳定性好、安全易用的Linuxt环境下的的FTP服务器软件。 vsftpd 名称是取自 very secure FTP daemon 的缩写,可以在类UNIX类操作系统上运行。 2 部署 通常情况下可以在线安装, # centos / Redhat 操作系统下 $ yum -y ins…

【历史上的今天】12 月 1 日:新浪网成立;钉钉上线;古登堡计划发布

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2022 年 12 月 1 日,在 1948 年的今天,中国人民银行成立,并发行了第一套人民币;第一套人民币共印制发行了 12 种面额、6…

推荐系统:架构设计

架构设计概述 架构设计是一个很大的话题,这里只讨论和推荐系统相关的部分。更具体地说,我们主要关注的是算法以及其他相关逻辑在时间和空间上的关系——这样一种逻辑上的架构关系。 在前面的章节中我们讲到了很多种算法,每种算法都是用来解决…

[附源码]JAVA毕业设计个人交友网站(系统+LW)

[附源码]JAVA毕业设计个人交友网站(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

【JavaWeb】Servlet系列 --- 关于一个web站点的欢迎页面

web站点的欢迎页面1. 什么是一个web站点的欢迎页面?2. 怎么访问欢迎页面?静态资源进行变换动态资源3. (易错)关于WEB-INF目录1. 什么是一个web站点的欢迎页面? 对于一个webapp来说,我们是可以设置它的欢迎…

Java的I/O框架

目录 一、流的概念 二、流的分类 1.按方向 2.按单位: 3.按功能: 三、字节流 1、文件字节流 (1) FileInputStream: (2)FileOutputStream: (3)完成复…

c++基础(自用)

C基础入门 1 C初识 1.1 第一个C程序 编写一个C程序总共分为4个步骤 创建项目创建文件编写代码运行程序 1.1.1 创建项目 ​ Visual Studio是我们用来编写C程序的主要工具,我们先将它打开 1.1.2 创建文件 右键源文件,选择添加->新建项 给C文件起…

Windows8系统下DOSBox编译、链接、执行汇编语言步骤

下载安装好DOSBox后,同时下载debug、link、masm程序。 (1)建立工作目录,编写汇编语言源文件,并将debug、link、masm程序放在同一目录下。(下图中ass.asm是汇编语言源文件) (2&#x…

2022年第四届大数据与计算国际研讨会(WBDC 2022)

2022年第四届大数据与计算国际研讨会(WBDC 2022) 重要信息 会议网址:www.iwbdc.org 会议时间:2022年12月16-18日 召开地点:中国北京 截稿时间:2022年10月31日 录用通知:投稿后2周内 收录检…

MPI 快速入门

浅学 MPI。 MPI 分布式内存多处理器: 处理器 辅助组件 > 节点一堆节点 > 高性能计算系统 节点 > 进程 节点之间:消息传递 MPI:消息传递接口 安装 还是用 Docker 方便。 宿主机: sudo docker run -idt --name op…

移动WEB开发之流式布局--移动WEB开发之flex布局--携程网首页案例制作

案例:携程网移动端首页 访问地址:携程旅行-酒店预订,机票预订查询,旅游度假,商旅管理-携程无线官网 (ctrip.com) 1. 技术选型 方案:我们采取单独制作移动页面方案 技术:布局采取flex布局 2. 搭建相关文件夹结构 3. 设置视口标…

三、【react-redux】数据共享

文章目录1、优化项目结构2、添加一个新容器组件2.1、新项目结构2.2、CODE2.2.1、reduc/constant.js2.2.2、redux/actions/person.js2.2.3、redux/reducers/person.js2.2.4、redux/store.js2.2.5、Count.jsx2.2.6、Person.jsx2.3、Result3、总结本示例修改自 上一章 求和Demo 1、…

SVN版本控制软件

尚硅谷SVN版本控制软件教程(一套掌握svn操作) 学习网址:https://www.bilibili.com/video/BV1mW411M7yR/?spm_id_from333.999.0.0&vd_source461545ff50a35eaeaa8218ecdc5f7152 学习时长:1小时46分钟 未学习 5.启动服务器 6.…

维视智造明星产品推荐(一) 环外侧工业镜头

维视智造明星产品推荐(一)环外侧工业镜头 市场洞察 产品外观质量检测及标签检测,是工业制造中常见的两个质检场景。根据产品特点及产线环境,往往可以做多种检测方案的选择。在圆柱状产品如药瓶、瓶盖、齿轮、螺母等的生产检测中&a…

11.30排序

目录 一.排序 1.概念 1.1排序 1.2稳定性 2.七大基于比较的排序 二.插入排序 3.1 直接插入排序-原理 2.折半插入排序 3.分析 二.每日一题订正 1.选择题 2.不要二 三.希尔排序 1 原理 2.代码实现 3.分析 四.选择排序 1.原理 2.代码 3.优化版 4.分析 五.测量…

使用Cpolar内网穿透开启群晖WebDAV

文章目录1.前言2.群晖组件安装2.1.软件安装(1)WebDav server套件下载安装(2)cpolar套件下载安装(3)RaiDrive的下载安装2.2.群晖NAS端软件的设置2.3.Cpolar云端设置2.4.Cpolar本地设置3.访问端软件设置4.公网…

Pytorch的入门操作(三)

2.7 使用Pytorch实现手写数字识别 2.7.1 目标 知道如何使用Pytorch完成神经网络的构建知道Pytorch中激活函数的使用方法知道Pytorch中torchvision.transforms 中常见图形处理函数的使用知道如何训练模型和如何评估模型 2.7.2 思路和流程分析 流程: 准备数据,这…

推荐系统-召回-概述(五):一切为了业务

在前面几篇文章里,我们介绍了主流的召回模型和算法。但算法更多地是从个性化推荐的角度来解决问题。许多业务上的问题,如安全问题、商业价值、用户体验、流量扶持等种种业务需求,仅仅基于模型,是无法得到完美解决的,它…