当我从 SAP GUI 打开 T-Code 时,一些字段是从过去的查询中预先填充的。是否可以输入 T 代码并将下一个窗口中的所有字段强制空白?
我为 SAP GUI 开发脚本,如果字段已经包含来自先前查询的内容,则会遇到问题。
当我从 SAP GUI 打开 T-Code 时,一些字段是从过去的查询中预先填充的。是否可以输入 T 代码并将下一个窗口中的所有字段强制空白?
我为 SAP GUI 开发脚本,如果字段已经包含来自先前查询的内容,则会遇到问题。
用户不能禁用历史记录。时期。
要么全部,要么没有。
如果要禁用历史记录,请转到本地数据设置中的 SAPgui 选项
Windows 中的历史记录是一个简单的 Access MDB 文件,但它受密码保护,因此您可以尝试破解它并仅删除您的用户行,但这是一堆工作。
不过,我猜让你抓狂的历史不是我上面描述的,而是SPA/GPA 参数。先检查一下
您可以使用以下命令清空一些字段:
“”
session.findById("wnd[1]/usr/ctxtRMMG1_REF-BWTAR").Text = ""
但不是一直有效...
我的方法是遍历所有字段(并递归地遍历所有子元素)并将它们的文本值设置为空字符串。
在只读字段上它会引发错误,这就是为什么需要“On Error Resume Next”的原因。
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