Определите, существует ли узел дерева - PullRequest
1 голос
/ 21 февраля 2020

Я создаю макрос, в котором в какой-то момент он должен перемещаться по некоторым папкам и подпапкам (узлам дерева с дочерними элементами) внутри SAP

Основная папка раскрывается в следующем коде:

session.findById("wnd[0]/shellcont/shell").expandNode "2**000001"

Подпапка, которую я ищу, следующая:

session.findById("wnd[0]/shellcont/shell").selectedNode = "251000001"

Однако эта подпапка может не существовать.

Я хочу добавить IF оператор, чтобы проверить, существует ли он, или способ получить список подпапок и найти ту, в которой есть текст «Статус 51».

enter image description here

1 Ответ

0 голосов
/ 21 февраля 2020

Я могу распознать GuiTree, который имеет тип 2 (дерево столбцов).

Чтобы определить, существует ли данный узел, если вы знаете его ключ, вы могли бы используйте следующую функцию, которую вы вызываете следующим образом: If TreeNodeExistsByKey(session.findById("wnd[0]/shellcont/shell"),"251000001") Then ...

Function TreeNodeExistsByKey(tree,nodekey)
  On Error Resume Next
  tree.GetHierarchyLevel(nodekey)
  If Err.Number = 0 Then
    result = True
  Else
    result = False
  End If
  TreeNodeExistsByKey = result
End Function

Чтобы получить и итерировать дочерние элементы данного узла:

Set tree = session.findById("wnd[0]/shellcont/shell")
Set coll = tree.GetAllNodeKeys()
For i = 0 to coll.Length - 1
  nodekey = coll.ElementAt(i)
Next

Чтобы получить текст узел по его ключу, используйте метод GetNodeTextByKey:

nodeText = tree.GetNodeTextByKey(nodeKey)
...