python驱动SAP完成数据导出(一)
写在前面
我们使用Python驱动SAP时,经常会需要导出一些SAP报表数据至本地Excel文件。这个看似简单的问题背后,其实暗藏玄机,今天小爬就带各位同学好好捋捋。
以事务代码FB03(凭证清单)为例,进入清单界面后,SAP会为我们加载默认布局,布局决定了我们报表中显示哪些字段,以什么样式来显示,最后我们导出的表格样式也大抵如此。
问题一:
倘若默认布局不是我们当前想要的(每个用户的SAP界面针对特定事务代码,默认布局不尽相同,如果我们导出数据前不统一布局,后续导出的excel文件模板就没法统一,给后续的数据批量处理带来诸多不便),我们又不想修改默认布局,该怎么做呢?
回答一:
我们可以先预设一个统一的全局布局,每次数据加载完后,我们的自动化脚本先设置布局至我们想要的,然后再执行数据的导出;


问题二:
为啥SAP的布局在不同账号下呈现两种界面样式,该如何处理(示例界面:FAGLB03)?


回答二:
我们可以点击【选择布局】后,判断弹窗的窗口标题,因为两种布局界面下的标题不一样。我们可以判断当前布局所属的样式,再决定是否自动点击SAP菜单栏的【设置】-【切换清单】。将布局样式一调整为样式二之后,再来进行后续的自动化操作。

问题三:
为啥布局要先自动切换到【界面样式二】模式,该模式方便在哪儿?
回答三:
我们通过之前系列【python驱动SAP完成自动化】文章中提到的Tracker工具,利用其Analyser功能,得到两者的布局界面(ID:/app/con[0]/ses[2]/wnd[1])的分布:


由于布局样式二的界面主体是GridView,它可以通过GetCellValue方法快速得到某个Cell(类似于单元格)的值,从而方便我们快速基于布局名称,定位并切换到想要的布局;与之对应,布局样式一的主体是GuiLabel对象,遍历每行布局相对没有那么方便。

不难看出,SAP的GUI自动化并不是一招鲜,吃遍天,真正实践时有太多的细节需要我们关注,希望看了这篇文章,你们可以少踩坑,快速积累实战经验!
快来扫码关注我的公众号 获取更多爬虫、数据分析的知识!

python驱动SAP完成数据导出(一)的更多相关文章
- python驱动SAP完成数据导出(二)
在上一篇 python驱动SAP完成数据导出(一)中,我们提到了数据导出前,SAP布局的重要性,如何识别当前布局模式,以及如何切换到想要的布局.本篇小爬将着重讲讲数据导出的注意事项. 我们可以通过如下 ...
- Python 把数据库的数据导出到excel表
import io,xlwt def export_excel(request): """导出数据到excel表""" list_obj = ...
- VBA驱动SAP GUI实现办公自动化(一)
小爬之前写过一系列Python驱动SAP GUI实现办公自动化的文章,其实如果我们的实际业务不是太复杂,且我们对VBA语法比较熟悉的话,我们完全可以借助Excel VBA来驱动SAP GUI做很多自动 ...
- API例子:用Python驱动Firefox采集网页数据
1,引言 本文讲解怎样用Python驱动Firefox浏览器写一个简易的网页数据采集器.开源Python即时网络爬虫项目将与Scrapy(基于twisted的异步网络框架)集成,所以本例将使用Scra ...
- python打造漏洞数据导出工具
功能 [x] 支持导出的数据:IP地址.漏洞名称.风险等级.整改建议.漏洞描述.漏洞CVE编号.漏洞对应端口.漏洞对应协议.漏洞对应服务等. [x] 导出不同端口的同一个漏洞,也就是一个端口对应一个漏 ...
- python学习笔记3.2_数据导出
一.data.to_csv:数据导出 1.to_csv:将数据导出为逗号分隔的文件 2.输出为其他分隔符的文件 写入到控制台,并打印:sys.stdout na_rep:对空值进行标注 二.serie ...
- Python结合SAP GUI Script操作sap的简易教程
众所周知,如果要用Python做一些桌面WIN32应用的自动化工作,就需要用到著名的pywin32尤其是其中的win32com.client模块,pywin32的安装不能直接通过pip install ...
- hive的数据导入与数据导出:(本地,云hdfs,hbase),列分隔符的设置,以及hdfs上传给pig如何处理
hive表的数据源有四种: hbase hdfs 本地 其他hive表 而hive表本身有两种: 内部表和外部表. 而hbase的数据在hive中,可以建立对应的外部表(参看hive和hbase整合) ...
- Python 进程之间共享数据
最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看. 一.Python multiprocessing 跨进程对象共享 在mp库当中,跨进程对象共享有三种方式,第一种 ...
随机推荐
- Apache Log4j2,RASP 防御优势及原理
Apache Log4j2 远程代码执行漏洞已爆发一周,安全厂商提供各类防御方案和检测工具,甲方团队连夜应急. 影响持续至今,网上流传的各种利用和绕过姿势还在层出不穷,影响面持续扩大.所有安全人都开始 ...
- Python 中更安全的 eval
问题 想要将一段列表形式的字符串转为 list,但是担心这个动态的字符串可能是恶意的代码?使用 eval 将带来安全隐患.比如: # 期望是 eval('[1, 2, 3]') # 实际上是 eval ...
- 2. Go中defer使用注意事项
1. 简介 defer 会在当前函数返回前执行传入的函数,它会经常被用于关闭文件描述符.关闭数据库连接以及解锁资源. 理解这句话主要在三个方面: 当前函数 返回前执行,当然函数可能没有返回值 传入的函 ...
- MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称
MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称 在上文说了用自动站的数据经过插值绘制色斑图,这种一般是在geoserver上叠加图片呈现,但遇到后端导出图片,我们又想添加 ...
- More Effective C++ 基础议题(条款1-4)总结
More Effective C++ 基础议题(条款1-4)总结 条款1:仔细区别pointers和references 如果有一个变量,其目的是用来指向(代表)另一个对象,但是也有可能它不指向(代表 ...
- 为dokcer中最简版ubuntu(70M)增加apt安装能力
如果要在docker中安装软件,除了直接找对应的软件镜像,一般我们会先安装Linux系统,然后再在里面安装各种需要的软件. 比如我想安装乌班图,直接下载官方的版本: 这个目前是Ubuntu20.04, ...
- nim_duilib(5)之option
introduction 更多控件用法,请参考 here 和 源码. 本文的代码基于这里 xml文件添加代码 基于上一篇, 继续向basic.xml中添加下面关于Option的代码. xml完整源码在 ...
- 【LeetCode】333. Largest BST Subtree 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 日期 题目地址:https://leetcod ...
- spoj-SUBSUMS - Subset Sums
SUBSUMS - Subset Sums Given a sequence of N (1 ≤ N ≤ 34) numbers S1, ..., SN (-20,000,000 ≤ Si ≤ 20, ...
- LeetCode1239串联字符串的最大长度
题目 给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串,如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解. 请返回所有可行解 s 中最长长度. 解题 ...