GP/QTP Automation: GUI Mapping script

Categories: Great PlainsSource code

All related posts: Reference Page – GP/QTP Automation

Purpose: extract object descriptions from Dexterity Dictionary and create custom XML-based GUI Map file for QTP.

Used resources: Service Functions – XML (QTP, VBScript)

Option Explicit
' Purpose: Map GP Dexterity GUI into XML file
' Requirements: GP App started (don't have to login)
'Output: ".....\DexGUI.xml"
Dim GPApp, objForm, objWindow, objWndField
Dim sGPMapXML, sCurrentProduct
Dim FormIter, WinIter, FieldIter
Dim objGPMapXML, objRoot, objFormMapXML, objWndMapXML, objFldMapXML
Set GPApp = GetObject("", "Dynamics.Application")
sCurrentProduct = GPApp.CurrentProduct
'Define or parameterize your output folder here
sGPMapXML = "C:\TEMP\" & "\DexGUI.xml"
Set objGPMapXML = XMLUtil.CreateXML("DexGUI")
Set objRoot = objGPMapXML.GetRootElement
FormIter = 1
Set objForm = GPApp.GetFirstForm()
Do
 If Not (objForm is Nothing) Then
 Set objFormMapXML = CreateChildElementByName(objRoot, "Form", "")
 objFormMapXML.AddAttribute "name", objForm.GetName()
 objFormMapXML.AddAttribute "childcount", CStr(objForm.CountWindows())
 WinIter = 1
 Set objWindow = objForm.GetFirstWindow()
 Do
 If Not (objWindow is Nothing) Then
 Set objWndMapXML = CreateChildElementByName(objFormMapXML, "Window", "")
 objWndMapXML.AddAttribute "name", objWindow.GetName()
 objWndMapXML.AddAttribute "childcount", CStr(objWindow.CountFields())
 FieldIter = 1
 Set objWndField = objWindow.GetFirstWindowField()
 Do
 If Not (objWndField is Nothing) Then
 Set objFldMapXML = CreateChildElementByName(objWndMapXML, "Field", "")
 objFldMapXML.AddAttribute "name", objWndField.GetName()
 objFldMapXML.AddAttribute "id", CStr(objWndField.GetID())
 End If
 FieldIter = FieldIter +1
 Set objWndField = objWindow.GetNextWindowField()
 Loop While FieldIter <= objWindow.CountFields()
 End If
 Set objWindow = objForm.GetNextWindow()
 WinIter = WinIter + 1
 Loop While WinIter <= objForm.CountWindows()
 End If
 Set objForm = GPApp.GetNextForm()
 FormIter = FormIter + 1
Loop While FormIter <= GPApp.CountForms()
objGPMapXML.SaveFile sGPMapXML
Set GPApp = Nothing
Set objForm = Nothing
Set objWindow = Nothing
Set objWndField = Nothing
Set objGPMapXML = Nothing
Set objRoot = Nothing
Set objFormMapXML = Nothing
Set objWndMapXML = Nothing
Set objFldMapXML = Nothing

Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported
This work by the author is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported.