automation - 扩展 SAP 树
问题描述
我正在使用 UFT (vbscript) 来自动化 SAP 和网页之间的流程。使用 SAP transaction S_ALR_87013534
,我在 UFT 中有一段代码将完全展开树并提取与订单号之一关联的值:
set tree = SAPGuiSession("Session").SAPGuiWindow("Execute Drilldown Report").SAPGuiTree("TableTreeControl")
tree.OpenItemContextMenu "PRJ "&projNum,"PRJ "&projNum
tree.SelectMenuItemById "&EXPAND"
tree.SelectNode "PRJ "&projNum
colKey_plan1 = getColNameFromTitle(tree, "Plan 2--Overall")
rowContainingOrdNum = findBudget(tree, ordNum)
plannedProjectBudget = tree.Object.GetItemText(tree.Object.GetAllNodeKeys(rowContainingOrdNum(0)), colKey_plan1)
Function getColNameFromTitle(tree, title)
set colNames = tree.Object.GetColumnNames
For i = 1 To (colNames.length-1)
selectedColTitle = tree.Object.GetColumnTitleFromName(colNames(i))
If selectedColTitle = title Then
getColNameFromTitle = colNames(i)
Exit For
End If
Next
End Function
Function findBudget(tree, ordNum)
rowContainingOrdNum = Array()
Set columnNames = tree.Object.GetColumnNames()
set columnKeys = tree.Object.GetColumnCol(columnNames(0))
For i = 1 To (columnKeys.length-1)
If InStr(columnKeys(i), ordNum)>0 Then
AddItem rowContainingOrdNum, i
Exit For
End If
Next
findBudget = rowContainingOrdNum
End Function
Function AddItem(arr, val)
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr)) = val
AddItem = arr
End Function
这完美地工作,但是当我使用不同的报告时S_ALR_87013543
,它仍然被识别为树,但上面的代码不起作用,因为对象标题处没有 EXPAND 选项。我对 SAP 及其所有树以及如何使用自动化不是很熟悉,因此任何指导或提示都值得赞赏。
左边是我需要展开的报告,右边是代码使用的报告:
解决方案
解决方案:
Set TreeObj = SAPGuiSession("Session").SAPGuiWindow("Actual/Plan/Variance").SAPGuiTree("TableTreeControl").Object
Set AllValues = TreeObj.GetAllNodeKeys
Count = AllValues.Count
Found = 0
For i = 0 to Count-1
NodeText = TreeObj.GetNodeTextByKey(AllValues(i))
If NodeText = WBSelement Then
Found = 1
Exit For
End if
Next
If Found = 1 Then
SAPGuiSession("Session").SAPGuiWindow("Actual/Plan/Variance").SAPGuiTree("TableTreeControl").SelectNode WBS
End If
推荐阅读
- python - tf.reduce_sum 对axis = -1有什么作用?
- javascript - Spring Boot 和 React:在 Spring 应用程序的 index.html 中渲染 app.js
- node.js - 服务器上的应用程序更新后如何重新加载 vuejs
- database - 近乎实时地维护/更新计数器的最佳数据库架构
- java - Android:如何启用来自不同活动的设置?
- excel - 如何获取所有 TFS 测试用例的列表,这些测试用例是在使用 Excel 数据仓库或查询的特定版本/构建上执行的?
- javascript - JS - 通过只选择你需要的东西来解构
- c# - Uri 对象不一致地对 url 进行转义
- angular - 具有ngForm的有用步进组件在角度6中验证
- javascript - 使用 Refs 从 react.js 中的表单获取文本输入