SAP CK13N транзакция чтения текста из полей таблицы с использованием VBA - PullRequest
0 голосов
/ 15 февраля 2019


Я ищу решение, как читать текст из таблицы SAP.Я могу выбрать конкретную ячейку в таблице, но не знаю ссылку, чтобы получить ее текстовое значение.

Соответствующая часть кода

Dim SapGuiAuto, SAP, Connection, Session

If Not IsObject(SAP) Then
    Set SapGuiAuto = GetObject("SAPGUI")
    Set SAP = SapGuiAuto.GetScriptingEngine
    Set Connection = SAP.Children(0)
    Set Session = Connection.Children(0)
End If

ReDim ArrSap(1 To 1, 1 To 1)
Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[0]").pressButton "MATE"
Session.findById("wnd[0]").iconify

On Error Resume Next

For i = 1 To 999
    Select Case i
        Case Is > 99
            Case Is > 99
            Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").selectItem "        " & i & "", "C         10"
            Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").expandNode "        " & i & ""
        Case Is > 9
            Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").selectItem "         " & i & "", "C         10"
            Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").expandNode "         " & i & ""
        Case Else
            Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").selectItem "          " & i & "", "C         10"
            Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").expandNode "          " & i & ""
    End Select
Next i 

Итак, выше работает нормально, но мне нужновместо selectItem мне нужно получить текст из этого предмета.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Более быстрое решение может выглядеть так:

...
set myTree = Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]") 
For i = 1 To 999
 myTree.selectItem right(space(10) & cstr(i),11) , "C         10"
 myTree.expandNode right(space(10) & cstr(i),11)
 myText = myTree.getItemText (right(space(10) & cstr(i),11) , "C         10")
 msgbox myText
Next i 

С уважением, ScriptMan

0 голосов
/ 15 февраля 2019

Я знаю обходной путь.

например:

...
For i = 1 To 999
 Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").selectItem right(space(10) & cstr(i),11) , "C         10"
 Session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").expandNode right(space(10) & cstr(i),11)
 session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").itemContextMenu right(space(10) & cstr(i),11) , "C         10"
 session.findById("wnd[0]/shellcont[0]/shell/shellcont[1]/shell[1]").selectContextMenuItem "&FIND"
 myText = session.findById("wnd[1]/usr/txtLVC_S_SEA-STRING").text
 session.findById("wnd[1]/tbar[0]/btn[12]").press
 msgbox myText
Next i 

С уважением, ScriptMan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...