在不同窗口中运行多个事务的脚本

2020-09-04 15:54发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨!

我最近发现了SAP中脚本记录的功能,并发现它非常有用。 我记录了一些我经常使用的脚本,但是当我这样做时,我手动打开了一个新会话并在每个窗口中启动了不同的脚本。 有什么办法可以让我的脚本自动运行所有脚本? 我在论坛上进行了搜索,并找到了一些类似问题的线程,但是由于我对脚本的了解不多,所以我无法将在其他线程中找到的任何示例转换为适合我的脚本。 也许有人可以给我写一个我可以使用的例子?

我想:

1。 运行事务zpm3n并执行

2。 开启新的会话

3。 运行事务cm07并执行

4。 开启新的会话

5。 运行事务IW38并执行

我可能希望为每笔交易提供一些其他输入,但是我认为我可以自己添加。

每个函数都有一个单独的脚本,如果创建一个脚本来逐个运行每个脚本会更容易。

这是我的脚本之一(记录在SAP中),如何重写它以打开新会话并切换到新会话?

这将打开zpm3n并获取我为此交易创建的变体。

-------- START ---------

如果不是IsObject(application)那么

设置SapGuiAuto = GetObject(" SAPGUI")

设置应用程序= SapGuiAuto.GetScriptingEngine

如果结束

如果不是IsObject(连接),则

设置连接= application.Children(0)

如果结束

如果不是IsObject(session)那么

设置会话= connection.Children(0)

如果结束

如果IsObject(WScript)然后

WScript.ConnectObject会话,"打开"

WScript.ConnectObject应用程序,"打开"

如果结束

session.findById(" wnd [0]")。maximize

session.findById(" wnd [0]/tbar [0]/okcd")。text =" zpm3n"

session.findById(" wnd [0]")。sendVKey 0

session.findById(" wnd [0]/tbar [1]/btn [17]")。按

session.findById(" wnd [1]/usr/txtV-LOW")。text =" u_429395"

session.findById(" wnd [1]/usr/txtENAME-LOW")。text =""

session.findById(" wnd [1]")。sendVKey 8

session.findById(" wnd [0]/tbar [1]/btn [8]")。按

----------- END -------------

感谢所有帮助!

Espen

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨!

我最近发现了SAP中脚本记录的功能,并发现它非常有用。 我记录了一些我经常使用的脚本,但是当我这样做时,我手动打开了一个新会话并在每个窗口中启动了不同的脚本。 有什么办法可以让我的脚本自动运行所有脚本? 我在论坛上进行了搜索,并找到了一些类似问题的线程,但是由于我对脚本的了解不多,所以我无法将在其他线程中找到的任何示例转换为适合我的脚本。 也许有人可以给我写一个我可以使用的例子?

我想:

1。 运行事务zpm3n并执行

2。 开启新的会话

3。 运行事务cm07并执行

4。 开启新的会话

5。 运行事务IW38并执行

我可能希望为每笔交易提供一些其他输入,但是我认为我可以自己添加。

每个函数都有一个单独的脚本,如果创建一个脚本来逐个运行每个脚本会更容易。

这是我的脚本之一(记录在SAP中),如何重写它以打开新会话并切换到新会话?

这将打开zpm3n并获取我为此交易创建的变体。

-------- START ---------

如果不是IsObject(application)那么

设置SapGuiAuto = GetObject(" SAPGUI")

设置应用程序= SapGuiAuto.GetScriptingEngine

如果结束

如果不是IsObject(连接),则

设置连接= application.Children(0)

如果结束

如果不是IsObject(session)那么

设置会话= connection.Children(0)

如果结束

如果IsObject(WScript)然后

WScript.ConnectObject会话,"打开"

WScript.ConnectObject应用程序,"打开"

如果结束

session.findById(" wnd [0]")。maximize

session.findById(" wnd [0]/tbar [0]/okcd")。text =" zpm3n"

session.findById(" wnd [0]")。sendVKey 0

session.findById(" wnd [0]/tbar [1]/btn [17]")。按

session.findById(" wnd [1]/usr/txtV-LOW")。text =" u_429395"

session.findById(" wnd [1]/usr/txtENAME-LOW")。text =""

session.findById(" wnd [1]")。sendVKey 8

session.findById(" wnd [0]/tbar [1]/btn [8]")。按

----------- END -------------

感谢所有帮助!

Espen

付费偷看设置
发送
4条回答
木偶小白
1楼-- · 2020-09-04 16:50

埃斯彭,您好

这并不像看起来那么容易...

如果有一个脚本可以处理所有事务,则它将停止直到每个事务通过所有操作为止。 要在一个脚本中处理所有事务,将需要多线程处理-
在VBS中是不可能的:-)。

前段时间有一篇类似您的帖子……

http://scn.sap.com/thread/3388231

相同的问题-相同的答案.....

路亽曱_Ryan
2楼-- · 2020-09-04 16:51

嗨,

你们可以签出此页面吗? 我无法理解vbs脚本

https://www.smartspate .com/how-you-can-can-auto-work-in-sap-with-vbscript/

xfwsx85
3楼-- · 2020-09-04 16:53

您好Ridhwan,
您不了解其中哪个代码? br>
您也可以复制并粘贴代码或给我们一个更好的问题...

问候

骆驼绵羊
4楼-- · 2020-09-04 16:36

我认为WSF标签 是错的。 据我所见,代码以

而不是
开头,如代码所示。
我已从链接中复制了代码。

 
昏暗的currentNode 设置xmlParser = CreateObject(" Msxml2.DOMDocument") '创建XML声明 xmlParser.appendChild(xmlParser.createProcessingInstruction(" xml","版本='1.0'编码='windows-1251'")) 设置SapGuiAuto = GetObject(" SAPGUI") 设置应用程序= SapGuiAuto.GetScriptingEngine 设置连接= application.Children(0) 设置会话= connection.Children(0) WScript.ConnectObject会话,"打开" WScript.ConnectObject应用程序,"打开" '最大化SAP窗口 session.findById(" wnd [0]")。 最大化 枚举" wnd [0]" '枚举'wnd [0]/usr" MsgBox"完成!",VbSystemModal或vbInformation 子枚举(SAPRootElementId) 设置SAPRootElement = session.findById(SAPRootElementId) '创建根元素 设置XMLRootNode = xmlParser.appendChild(xmlParser.createElement(SAPRootElement.Type)) enumChildrens SAPRootElement,XMLRootNode xmlParser.save(" C:\ SAP_tree.xml") 结束子 子enumChildrens(SAPRootElement,XMLRootNode) 对于i = 0到SAPRootElement.Children.Count-1 设置SAPChildElement = SAPRootElement.Children.ElementAt(i) '创建一个节点 设置XMLSubNode = XMLRootNode.appendChild(xmlParser.createElement(SAPChildElement.Type)) '属性名称 设置attrName = xmlParser.createAttribute("名称") attrName.Value = SAPChildElement.Name XMLSubNode.setAttributeNode(attrName) '属性文字 如果(Len(SAPChildElement.Text)> 0)然后 设置attrText = xmlParser.createAttribute("文本") attrText.Value = SAPChildElement.Text XMLSubNode.setAttributeNode(attrText) 万一 '属性ID 设置attrId = xmlParser.createAttribute(" Id") attrId.Value = SAPChildElement.Id XMLSubNode.setAttributeNode(attrId) '如果当前对象是容器,则遍历子元素 如果为(SAPChildElement.ContainerType),则为enumChildrens SAPChildElement,XMLSubNode 下一个 结束子
 

一周热门 更多>