当我从SAP GUI打开T代码时,某些字段是根据过去的查询预先填充的。是否可以在下一个窗口中输入T代码并将所有字段强制为空?
我为SAP GUI开发脚本,如果字段已经包含先前查询的内容,则会遇到问题。
答案 0 :(得分:0)
不能根据用户禁用历史记录。期。
全部或没有。
如果要禁用历史记录,请转到SAPgui选项进入本地数据设置
Windows中的历史记录是一个简单的Access MDB文件,但是它受密码保护,因此您可以尝试对其进行破解并仅删除用户行,但这是一堆工作。
但是,我想让您发疯的历史不是我上面描述的,而是SPA/GPA parameters。首先检查
答案 1 :(得分:0)
您可以使用:
清空某些字段“”
session.findById("wnd[1]/usr/ctxtRMMG1_REF-BWTAR").Text = ""
但并非一直如此...
答案 2 :(得分:0)
为此,我的方法是遍历所有字段(并递归所有子元素)并将它们的文本值设置为空字符串。
在只读字段上,它将引发错误,这就是为什么需要“在错误恢复下一个”的原因。
Sub Start_Clearing()
'setup SAP
If Not IsObject(SAPApplication) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPApplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = SAPApplication.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 SAPApplication, "on"
End If
Dim UserArea As Object
Set UserArea = Session.findByID("wnd[0]/usr")
Clear_Fields UserArea
End Sub
'_______________________________
Sub Clear_Fields(Area As Object)
Set SAPApplication = GetObject("SAPGUI").GetScriptingEngine
Dim Obj As Object
Dim NextArea As Object
On Error Resume Next
For i = 0 To Area.Children.Count - 1
Set Obj = Area.Children(CInt(i))
If Obj.ContainerType = True Then
If Obj.Children.Count > 0 Then
Set NextArea = SAPApplication.findByID(Obj.ID)
Clear_Fields NextArea
End If
End If
Obj.Text = ""
Next i
End Sub