1

当我从 SAP GUI 打开 T-Code 时,一些字段是从过去的查询中预先填充的。是否可以输入 T 代码并将下一个窗口中的所有字段强制空白?

我为 SAP GUI 开发脚本,如果字段已经包含来自先前查询的内容,则会遇到问题。

4

3 回答 3

1

用户不能禁用历史记录。时期。

要么全部,要么没有。

如果要禁用历史记录,请转到本地数据设置中的 SAPgui 选项

在此处输入图像描述

Windows 中的历史记录是一个简单的 Access MDB 文件,但它受密码保护,因此您可以尝试破解它并仅删除您的用户行,但这是一堆工作。

不过,我猜让你抓狂的历史不是我上面描述的,而是SPA/GPA 参数。先检查一下

于 2019-06-06T23:17:52.727 回答
0

您可以使用以下命令清空一些字段:

“”

session.findById("wnd[1]/usr/ctxtRMMG1_REF-BWTAR").Text = ""

但不是一直有效...

于 2020-02-10T08:53:40.477 回答
0

我的方法是遍历所有字段(并递归地遍历所有子元素)并将它们的文本值设置为空字符串。

在只读字段上它会引发错误,这就是为什么需要“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
于 2020-10-01T20:13:39.093 回答