打开T代码后,如何清除所有SAP GUI字段?

时间:2019-05-17 15:53:53

标签: sap sap-gui

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

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

3 个答案:

答案 0 :(得分:0)

不能根据用户禁用历史记录。期。

全部或没有。

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

enter image description here

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