【问题标题】:Expanding a SAP Tree扩展 SAP 树
【发布时间】:2021-05-25 07:47:39
【问题描述】:

我正在使用 UFT (vbscript) 来自动化 SAP 和网页之间的流程。使用 SAP 事务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 及其所有树以及如何使用自动化不是很熟悉,因此我非常感谢任何指导或提示。

左边是我需要展开的报表,右边是代码使用的报表:

【问题讨论】:

  • 您是在询问是否有人知道这些交易代码是“由什么制成的”。我认为您最好提供有关当前 VBScript 问题的更多信息。请提供最小的可重现示例+您当前遇到的错误,在哪一行。
  • 我认为我当前的代码没有问题,它只是不适用于不同类型的 SAP 树。所以我只需要弄清楚如何使用第二棵树
  • 您只能自动执行用户可以执行的操作。 S_ALR_87013543 屏幕中真的有带有“&EXPAND”功能代码的上下文菜单项吗?如果不是,那么你不能自动化它。如果您的问题是如何点击树节点前面的“小箭头按钮”来展开他们的子节点,那么请编辑您的问题,我可以回答。

标签: automation vbscript hp-uft sap-gui


【解决方案1】:

解决方案:

   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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2011-09-02
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多