当前位置:   article > 正文

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

sap自动化脚本

 现在大环境都讲人工智能、自动化办公等场景的应用,这里我们介绍一下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位置和文件名:

  1. dim oExcel,oWb,oSheet
  2. Set oExcel = CreateObject("Excel.Application")
  3. Set oWb = oExcel.Workbooks.Open("D:\mmm.xls")
  4. ON ERROR RESUME Next
  5. 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

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

  1. next
  2. oExcel.WorkBooks.Close
  3. oExcel.Quit

最终Script脚本如下:

  1. If Not IsObject(application) Then
  2. Set SapGuiAuto = GetObject("SAPGUI")
  3. Set application = SapGuiAuto.GetScriptingEngine
  4. End If
  5. If Not IsObject(connection) Then
  6. Set connection = application.Children(0)
  7. End If
  8. If Not IsObject(session) Then
  9. Set session = connection.Children(0)
  10. End If
  11. If IsObject(WScript) Then
  12. WScript.ConnectObject session, "on"
  13. WScript.ConnectObject application, "on"
  14. End If
  15. dim oExcel,oWb,oSheet
  16. Set oExcel = CreateObject("Excel.Application")
  17. Set oWb = oExcel.Workbooks.Open("C:\Users\SAIP\Desktop")
  18. ON ERROR RESUME Next
  19. for i = 1 to 8
  20. session.findById("wnd[0]").maximize
  21. session.findById("wnd[0]/tbar[0]/okcd").text = "VA02"
  22. session.findById("wnd[0]").sendVKey 0
  23. session.findById("wnd[0]/usr/ctxtVBAK-VBELN").text = oExcel.Cells(i,1).Value
  24. session.findById("wnd[0]/usr/ctxtVBAK-VBELN").caretPosition = 10
  25. session.findById("wnd[0]").sendVKey 0
  26. session.findById("wnd[0]/mbar/menu[0]/menu[11]").select
  27. session.findById("wnd[1]/usr/btnSPOP-OPTION1").press
  28. next
  29. oExcel.WorkBooks.Close
  30. oExcel.Quit

原始脚本如下:

  1. If Not IsObject(application) Then
  2. Set SapGuiAuto = GetObject("SAPGUI")
  3. Set application = SapGuiAuto.GetScriptingEngine
  4. End If
  5. If Not IsObject(connection) Then
  6. Set connection = application.Children(0)
  7. End If
  8. If Not IsObject(session) Then
  9. Set session = connection.Children(0)
  10. End If
  11. If IsObject(WScript) Then
  12. WScript.ConnectObject session, "on"
  13. WScript.ConnectObject application, "on"
  14. End If
  15. session.findById("wnd[0]").maximize
  16. session.findById("wnd[0]/tbar[0]/okcd").text = "VA02"
  17. session.findById("wnd[0]").sendVKey 0
  18. session.findById("wnd[0]/usr/ctxtVBAK-VBELN").text = "1000001269"
  19. session.findById("wnd[0]/usr/ctxtVBAK-VBELN").caretPosition = 10
  20. session.findById("wnd[0]").sendVKey 0
  21. session.findById("wnd[0]/mbar/menu[0]/menu[11]").select
  22. session.findById("wnd[1]/usr/btnSPOP-OPTION1").press

第四:提示:

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

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

脚本可以直接双击运行。

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

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

Allways  on  the  way

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/651227
推荐阅读
  

闽ICP备14008679号