SAP 技巧篇:Script脚本模拟人工操作批量录入数据

" 现在大环境都讲人工智能、自动化办公等场景的应用,这里我们介绍一下SAP本身自带的自动化工具**" 文章最后附最终脚本**

01


背景需求

SAP:批量录入工具:LSMW/BDC/Script 三大工具

LSMW:应用场景多,实现方法多,但有些事务代码不能录制;

BDC:需要一定开发经验,适用于开发者;

Script:需要简单开发经验,但是容易出错;

02


实现

第一步:系统设置

检查系统SAP脚本录制和回放功能有无启用

执行事务代码:RZ11

输入参数:sapgui/user_scripting

然后回车

如果当前值为FALSE则改为TURE,如果当前值为TURE,则表示已经启用,就不需要更改了,改完之后点击保存,会提示,如果系统重启服务,则需要在此更改这里的配置,否则就不生效了。

然后退出所有窗口,在SAP GUI中打开设置

点击启用脚本>应用>确认,后重启SAP GUI

第二步:脚本录制

进入脚本的录制:

点击增加

复制保存到后面的文件路径,打开文件,粘贴路径打开

此时该路径下已有13个脚本,可以更改路径脚本名称为14,如下图

然后点击红色按钮进行录制操作,就是把需要重复的动作在SAP内执行一遍,执行过程中不要有多余的操作,精简不必要的操作,录制完成之后回来点黄色按钮即录制完成。

绿色按钮为执行按钮,录入完成之后可以点这里执行脚本。

第三步:修改脚本,让脚本能重复执行:

找到对应脚本,点击鼠标右键,用记事本打开

END IF之前的不需要修改,直接忽略

然后在第一个session之前加入打开Excel与循环的语句,明确打开Excel位置和文件名:

dim oExcel,oWb,oSheet

Set oExcel = CreateObject("Excel.Application")

Set oWb = oExcel.Workbooks.Open("D:\mmm.xls")

ON ERROR RESUME Next
for i = 2 to 623

然后修改文件路径:

Set oWb = oExcel.Workbooks.Open("C:\Users\XXX\Desktop\10.xlsx")

为需要录入的数据源文档所在路径,这里按照保存路径修改;

for i = 2 to 2 为EXCL中从第几行开始到第几行结束,比如从第一行开始到第8行结束,则为for i = 1 to 8

把原来手工输入数据的地方,改为从excel中读取数据

比如

session.findById("wnd[0]/usr/ctxtVBAK-VBELN").text = "1000001269"

改成

session.findById("wnd[0]/usr/ctxtVBAK-VBELN").text = oExcel.Cells(i,1).Value

然后在最后加上关闭语句:

next
oExcel.WorkBooks.Close
oExcel.Quit

最终Script脚本如下:

If Not IsObject(application) Then
   Set SapGuiAuto  = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session    = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session,     "on"
   WScript.ConnectObject application, "on"
End If
dim oExcel,oWb,oSheet
Set oExcel = CreateObject("Excel.Application")
Set oWb = oExcel.Workbooks.Open("C:\Users\SAIP\Desktop")
ON ERROR RESUME Next
for i = 1 to 8
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "VA02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtVBAK-VBELN").text = oExcel.Cells(i,1).Value
session.findById("wnd[0]/usr/ctxtVBAK-VBELN").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/mbar/menu[0]/menu[11]").select
session.findById("wnd[1]/usr/btnSPOP-OPTION1").press
next
oExcel.WorkBooks.Close
oExcel.Quit

原始脚本如下:

If Not IsObject(application) Then
   Set SapGuiAuto  = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session    = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session,     "on"
   WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "VA02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtVBAK-VBELN").text = "1000001269"
session.findById("wnd[0]/usr/ctxtVBAK-VBELN").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/mbar/menu[0]/menu[11]").select
session.findById("wnd[1]/usr/btnSPOP-OPTION1").press

第四:提示:

保存执行前SAP GUI只能留一个界面是打开的,然后直接运行Script脚本,

窗口会一步步在前台执行操作,直到结束,但如果有报错,会直接跳入到下一行数据,所以创建后一定要再检查数据,是否有错误,这里也是Script脚本的缺点。

脚本可以直接双击运行。

公告:周一至周五每日一更,周六日存稿,请您点"关注"和"在看",后续推送的时候不至于看不到每日更新内容,感谢。

这是一条刮刮乐,按住全部选中:点关注的人最帅最美,欢迎:分享+收藏+在看+点赞+关注!

Allways on the way

相关推荐
吃面不喝汤6644 分钟前
如何配置和使用自己的私有 Docker Registry
运维·docker·容器
Rookie_explorers1 小时前
Linux下go环境安装、环境配置并执行第一个go程序
linux·运维·golang
学习向前冲1 小时前
AD域控服务器
运维·服务器
hgdlip1 小时前
查看ip地址的方法有几种?探索多样方法
运维·服务器·ip地址
丶21361 小时前
【Nginx】在 Docker 上安装 Nginx 的详细指南
运维·nginx·docker
神即道 道法自然 如来2 小时前
Jenkins怎么设置每日自动执行构建任务?
运维·jenkins
hanniuniu132 小时前
详细解读,F5服务器负载均衡的技术优势
运维·服务器·负载均衡
鱼饼6号2 小时前
Prometheus 上手指南
linux·运维·centos·prometheus
m0_609000424 小时前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
小安运维日记5 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql