Technical Articles
Scripting Tracker Lite – Development Tool for SAP GUI Scripting
OSS note 1633639 tells us very clear the status about the SAP GUI Development Tools with Windows 7. Also we see the problems with the wizard here.
Scripting Tracker is an alternative. It is a small utility to replace the SAP GUI Scripting wizard.
The program shows a clearly arranged tree with all SAP sessions and its scripting objects. Also it shows for each scripting object, after the selection in the tree with a single mouse click, a lot of technical details like e.g. ID, position etc.
With the Analyzer the program offers the possibility to identify each scripting object with a red frame. It is possible on the one hand to select an object from the hierarchy tree and to press the right mouse button. One the other hand it is possible to select a session from the hierarchy tree and to press the identify button. Now it is necessary to move the mouse pointer to the selected session window. This functionality is equal to the SAP GUI Scripting wizard. After the identifying of the scripting object it is possible to copy its technical name, called ID, to the clipboard and to use them in another context.
Scripting Tracker Lite is replaced by Scripting Tracker. Scripting Tracker is free and you can download it from tracker.stschnell.de
Yes seems to work well thanks!
Hi Stefan
Great tool , I have found that the controls paths can vary slightly when running against different clients eg (test and prod ) not sure why. Your tool would be good if it has a find function..
For example i have found that a TAB control changes in different environments (test and prod) ...so i just get the path using a find rather than hard coded path for each control. Using this code (below). There may already be a find function but I wrote one in VB (i'm sure you can work it out below).
Also now that the wizard is gone? - it should be easy to creating a pointing device like the wizard had. I don't know what your tool is written in (but if its auto it should be 'easy' to create a pointing device like the wizard had). I noticed that the GuiMainWindow object has a property Visualize (Calling this method of a component will display a red frame around the specified component) just like the wizard used to do? I tested it and it does what the wizard did. So a wizard like tool could be made.. Q. Do you know how to detect a click on the SAP GUI ...is there a click event? If you build it they might include it in the SAP GUI Good work!
Anyway here is the code i use to find a control (i'm sure you can work it out but here it is)...
Function sFindCtrlFullPath(sfind As String) As String
' find the first control that matches (contains) sfind in the controls path.
' eg.
' g_sIDTABPath = sFindCtrlPath("tabpSCREEN_1100_TAB_03")
Set ctrl = oFindCtrl(sfind)
If Not ctrl Is Nothing Then
sFindCtrlFullPath = ctrl.ID
End If
Set ctrl = Nothing
End Function
Function oFindCtrl(sfind As String, Optional isap_window_num As Integer = 0) As Object
Set ctrl = sap_session.findById("wnd[" & isap_window_num & "]")
Set oFindCtrl = ctrlwalker(ctrl.Children, sfind)
Set ctrl = Nothing
End Function
Function ctrlwalker(ctrl As Object, sfind As String, Optional s As String = "") As Object
Dim i As Integer
' find the first control that matches (contains) sfind in the controls path.
' eg.
'
' set ctrl = ctrlwalker(sap_session.findById("wnd[0]").Children, "tblSAPLBUD0TCTRL_BUT0ID")
For i = 0 To ctrl.Count - 1
s = s & "+-"
If InStr("" & ctrl.Item(0 + i).ID, sfind) Then
Debug.Print "FOUND " & sfind
Debug.Print ctrl.Item(0 + i).ID & "( " & ctrl.Item(0 + i).Type & " )" & "( " & ctrl.Item(0 + i).Name & " )"
Set ctrlwalker = ctrl.Item(0 + i)
Exit Function
End If
' search children
If ctrl.Item(0 + i).containertype = True Then
Set ctrlwalker = ctrlwalker(ctrl.Item(0 + i).Children, sfind)
End If
If Not ctrlwalker Is Nothing Then
Set ctrl = Nothing ' to prevent memory leakage
Exit Function ' bailing found
End If
Next i
Set ctrl = Nothing
End Function
Hello Mic,
thanks for your reply. And thanks for the hint of the vary control path, it is very interesting.
This is one of the reasons why I implemented the CSV export functionality in the new version of Scripting Tracker Lite. Now it is very easy possible to export the object hierarchy of the same screen e.g. from different systems to find differences fast and completely.
The functionality to identify any scripting object with a red frame is already integrated in Scripting Tracker Lite. Choose the scripting object you want from the tree hierarchy with the right mouse button click and you will see the red frame around the control element.
Another way is to press the toggle button "Identify scripting object from SAP GUI in Tracker hierarchy" from the Analyzer toolbar and to move the mose pointer to the session. Each object under the mouse pointer will be identified with a red frame and in the Scripting Tracker Lite tree this object will be selected and its technical details will be shown. This is the same functionality like SAP GUI Development Tools.
Q: Do you know how to detect a click on the SAP GUI ...is there a click event?
A: Sorry, but I don't know a way to detect a click event on a SAP GUI.
Thanks for your source code. I will implement a search functionality on scripting objects hierarchy in a later version of Scripting Tracker Lite.
Cheers
Stefan
Awesome - the wizard is back..? Works great. Wasn't obvious to me , my suggestion would be to change the mouse pointer to 'cross - hairs' or even the button icon to cross hairs..(see the autoIT Au3Info.exe for what i'm talking about) I started writing similar highlighting tool but you've done it.! well done.
Only other gotcha is ..if the notify when script attaches is checked in the SAP GUI under options (tbar[0]/btn[446]) then a popup comes up 'do you want to attach' for every item for every item. I can't see the control path for this option (so you could detect it in advance). if you select the GUI options menu 'SAP GUI options RT3 window' this window is invisible to the tracker?, even if you refresh.
Also you must refresh the tracker , if a popup comes up, maybe traverse the tree like my find ctrl routine - in real time...but might be slow..
The csv files - yes control paths can be different i
basically do this code in an automation program, before i start, rather than hard coding in programs
if g_controlxpath = "" then
g_controlxpath = sFindCtrlFullPath("xxx_control")
endif
anyway great tool...
Hello Mic,
thanks for your reply.
Disable in your SAP Logon the requester. Choose in the system menu the item Options. Select in the tree Accessibility & Scripting and the menu item Scripting. Disable the checkboxes "Notify when a script attaches to SAP GUI" and "Notify when a script opens a connection",
The options window is not part of the SAP GUI Scripting hierarchy, so it is for SAP GUI Scripting invisible. If it is invisible for SAP GUI Scripting, it is also invisible for the Scripting Tracker. Take a little test, try to record your activities on the options window. You will see no result.
I don't know an event to catch a new upcoming window or requester. It is necessary, after a change on the SAP GUI, to refresh the Scripting Tracker hierarchy.
A good idea to store the scripting object and to check its existence.
Cheers
Stefan
Hi Stefan ..I've finally got around to getting my wizard tool working (not as good as yours) . check it out if interested. You can click on any GUI or popup and no refresh
http://www.autoitscript.com/forum/topic/149540-sapwizardudf/
Hello mic,
groovy 🙂
Cheers
Stefan
Thanks Stefan - find works well..
of course find prev would be useful..;)
find next - works too - only suggestion the find should only search leaf node text. Eg if you searched for a directory name in windows- you wouldn't expect all the files in each directory to be listed. eg. if you search for a table tblSAPLBUD0TCTRL_BUT0ID, your 'find next' lists all sub fields. I think the 'find' should only search the leaf node text. eg if you search boxGV in BP transaction with indentification tab selected the 'find next' works as expected highlighting the next boxGV. Minor point - hope it makes sense..
good work again..
Hello mic,
thanks for you reply.
It is hard for me to differentiate automatically on which level a leaf node begins or not. I think I have no chance. If you are searching e.g. for tblSAPLBUD0TCTRL_BUT0ID you find all entries with the find next button. I don't know what a user exactly means with its search. Is he searching for each tblSAPLBUD0TCTRL_BUT0ID entry or not? At the moment you must define a specific entry, which you are looking for, at the begin of your search, otherwise you get all the stuff.
Cheers
Stefan
Brilliant tools! Makes my life as a n00b VBA script writer much, much easier!
For a beginner in SAP scripting, this tool helps a lot in understanding the structure of SAP scripting objects.
Minimize the effort in getting to the object using the SAP script recorder and then to edit the codes that the recorder generated.
Thanks! 🙂
Hello Sayuti,
thanks for your reply.
Cheers
Stefan
Nice tool. Thanks for sharing.
this is awesome! Thank you for sharing
Hi Stefen,
I encountered a screen reader for GUI in service market place, please let me know whether it is same as tracker lite or is it something different.
Thanks in advance.
Hello Pramod,
thanks for your reply. Scripting Tracker and SAP GUI Screen Reader are different applications, but in the most cases they have the same functionality. With Scripting Tracker you can e.g. export the object hierarchy as CSV file and you can search inside the object hierarchy for a special object, also it supports SAP NetWeaver Business Client (NWBC) for desktop. With the SAP GUI Screen Reader you get the source code and, if you own an older VB Version, you can change it, if you like. As you see, each of them has pro and cons.
Cheers
Stefan
hello Stephan,
Watched the video tracker Scripting (https://www.youtube.com/watch?v=jZQP6vwedsc) and found it very nice. Even I have done downloading the lite version. I would like to know how to download the version with the option to record scripts. I liked the added functionality of recording options.
Thank you,
Evando