Quantcast
Channel: Scripting Languages
Viewing all articles
Browse latest Browse all 42

Function FindAllByType and FindAllByTypeEx in SAP GUI Scripting

$
0
0

Hello community,

 

here are two functions to detect all controls of one type of a collection, called FindAllByType and FindAllByTypeEx. The function FindAllByType has the parameters obj which describes a collection of objects and strType which describes the type of the control as string, e.g. GuiLabel. The function FindAllByTypeEx has the parameters obj which describes a collection of objects and lngType which describes the type of the control as long, e.g. 30 for GuiLabel. Both delivers an array of objects of the required type of the control.

 

'-Begin-----------------------------------------------------------------

 

  '-Directives----------------------------------------------------------

    Option Explicit

 

  '-Global Variables----------------------------------------------------

    Dim gColl()

 

  '-Function FindAllByType----------------------------------------------

    Function FindAllByType(Obj, strType)

 

      '-Variables-------------------------------------------------------   

        Dim cntObj, i, j, Child

 

      On Error Resume Next    

      cntObj = Obj.Children.Count()    

      If cntObj > 0 Then    

        For i = 0 To cntObj - 1    

          Set Child = Obj.Children.Item(CLng(i))    

          FindAllByType Child, strType

          If UCase(Child.Type()) = UCase(strType) Then

            ReDim Preserve gColl(j)

            Set gColl(j) = Child

            j = j + 1

          End If

        Next    

      End If    

      On Error Goto 0  

      FindAllByType = gColl

 

    End Function

 

  '-Function FindAllByType----------------------------------------------

    Function FindAllByTypeEx(Obj, lngType)

 

      '-Variables-------------------------------------------------------   

        Dim cntObj, i, j, Child

 

      On Error Resume Next    

      cntObj = Obj.Children.Count()    

      If cntObj > 0 Then    

        For i = 0 To cntObj - 1    

          Set Child = Obj.Children.Item(CLng(i))    

          FindAllByTypeEx Child, lngType

          If Child.TypeAsNumber() = lngType Then

            ReDim Preserve gColl(j)

            Set gColl(j) = Child

            j = j + 1

          End If

        Next    

      End If    

      On Error Goto 0  

      FindAllByTypeEx = gColl

 

    End Function

 

  '-Sub Main------------------------------------------------------------

    Sub Main()

 

      '-Variables-------------------------------------------------------

        Dim SapGuiAuto, application, connection, session, Coll, i

        Dim OutText

 

      If Not IsObject(application) Then

        Set SapGuiAuto = GetObject("SAPGUI")

        Set application = SapGuiAuto.GetScriptingEngine

      End If

 

      If Not IsObject(connection) Then

        Set connection = application.Children(0)

      End If

 

      If Not IsObject(session) Then

        Set session = connection.Children(0)

      End If 

 

      Erase gColl

      Coll = FindAllByType(session, "GuiLabel")

      For i = 0 To UBound(Coll)

        OutText = OutText & Coll(i).ID() & vbCrLf

      Next

 

      Erase gColl

      Coll = FindAllByTypeEx(session, 31) 'GuiTextField

      For i = 0 To UBound(Coll)

        OutText = OutText & Coll(i).ID() & vbCrLf

      Next

 

      MsgBox OutText

   

    End Sub

 

  '-Main----------------------------------------------------------------

    Main

 

'-End-------------------------------------------------------------------

 

Enjoy it.

 

Cheers

Stefan


Viewing all articles
Browse latest Browse all 42

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>