¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como recuperar o valor da última linha em uma coluna específica no SAP com GetCellValue.

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 16 Vistas
0
Cargando...

Olá,

Estou tentando recuperar o valor da última linha em uma coluna específica. Consigo obter a contagem de linhas e, depois de atribuí-la a outra variável para obter o valor usando GetCellValue, não retorna nenhum valor.

rowValue = session.findById("wnd[0]/usr/subSCREEN_3000_RESIZING_AREA:SAPLBUS_LOCATOR:2036/subSCREEN_1010_LEFT_AREA:SAPLBUS_LOCATOR:3100/tabsGS_SCREEN_3100_TABSTRIP/tabpBUS_LOCATOR_TAB_02/ssubSCREEN_3100_TABSTRIP_AREA:SAPLBUS_LOCATOR:3200/subSCREEN_3200_SEARCH_AREA:SAPLBUS_LOCATOR:3211/subSCREEN_3200_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1060/ssubSCREEN_1060_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1080/cntlSCREEN_1080_CONTAINER/shellcont/shell").RowCount

lastRow=rowValue

part=session.findById("wnd[0]/usr/subSCREEN_3000_RESIZING_AREA:SAPLBUS_LOCATOR:2036/subSCREEN_1010_LEFT_AREA:SAPLBUS_LOCATOR:3100/tabsGS_SCREEN_3100_TABSTRIP/tabpBUS_LOCATOR_TAB_02/ssubSCREEN_3100_TABSTRIP_AREA:SAPLBUS_LOCATOR:3200/subSCREEN_3200_SEARCH_AREA:SAPLBUS_LOCATOR:3211/subSCREEN_3200_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1060/ssubSCREEN_1060_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1080/cntlSCREEN_1080_CONTAINER/shellcont/shell").GetCellValue(lastRow,"PART")

print(part)

Parece que não está funcionando. Não consigo entender por que não está capturando o valor.

Ao imprimir o valor da linha, consigo obter o número de linhas.

Saudações,

Ren.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

2 Respuestas

0
Cargando...

Obrigado Daniel pela resposta. Consegui fazê-lo funcionar usando um loop while.

p = 0

rowValue = session.findById("wnd[0]/usr/subSCREEN_3000_RESIZING_AREA:SAPLBUS_LOCATOR:2036/subSCREEN_1010_LEFT_AREA:SAPLBUS_LOCATOR:3100/tabsGS_SCREEN_3100_TABSTRIP/tabpBUS_LOCATOR_TAB_02/ssubSCREEN_3100_TABSTRIP_AREA:SAPLBUS_LOCATOR:3200/subSCREEN_3200_SEARCH_AREA:SAPLBUS_LOCATOR:3211/subSCREEN_3200_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1060/ssubSCREEN_1060_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1080/cntlSCREEN_1080_CONTAINER/shellcont/shell").RowCount

while p < rowValue: part=session.findById("wnd[0]/usr/subSCREEN_3000_RESIZING_AREA:SAPLBUS_LOCATOR:2036/subSCREEN_1010_LEFT_AREA:SAPLBUS_LOCATOR:3100/tabsGS_SCREEN_3100_TABSTRIP/tabpBUS_LOCATOR_TAB_02/ssubSCREEN_3100_TABSTRIP_AREA:SAPLBUS_LOCATOR:3200/subSCREEN_3200_SEARCH_AREA:SAPLBUS_LOCATOR:3211/subSCREEN_3200_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1060/ssubSCREEN_1060_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1080/cntlSCREEN_1080_CONTAINER/shellcont/shell").GetCellValue(p, "PART")

print(part)

p+=1

Saudações,

Ren.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Em VBA, você pode declarar objetos e defini-los no shell, por exemplo.

    Dim zTreeList       As SAPFEWSELib.GuiTree
    Dim zTreeDet        As SAPFEWSELib.GuiShell

A partir daí, você pode revisar alguns dos métodos de conveniência disponíveis para percorrer o GUIShell ou o GUItree.

Pessoalmente, não estou familiarizado com um método para obter o último valor, mas você pode começar de cima usando o seguinte.

'definir objeto
Set zTreeList = session.findById("wnd[0]/usr/subSCREEN_3000_RESIZING_AREA:SAPLBUS_LOCATOR:2036/subSCREEN_1010_LEFT_AREA:SAPLBUS_LOCATOR:3100/tabsGS_SCREEN_3100_TABSTRIP/tabpBUS_LOCATOR_TAB_02/ssubSCREEN_3100_TABSTRIP_AREA:SAPLBUS_LOCATOR:3200/subSCREEN_3200_SEARCH_AREA:SAPLBUS_LOCATOR:3211/subSCREEN_3200_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1060/ssubSCREEN_1060_RESULT_AREA:SAPLBUPA_DIALOG_JOEL:1080/cntlSCREEN_1080_CONTAINER/shellcont/shell")

'definir  inicial
targetItem = zTreeList.TopNode

'fazer algo 
zTreeList.DoubleClickNode (targetItem)

'definir o novo objeto (apenas mostra da subtela SLG1) 
Set zTreeDet = session.FindById("wnd[0]/usr/subSUBSCREEN:SAPLSBAL_DISPLAY:0101/cntlSAPLSBAL_DISPLAY_CONTAINER/shellcont/shell/shellcont[1]/shell")

'neste caso, ler todos os subitens para algum texto
For i = zTreeDet.FirstVisibleRow To zTreeDet.RowCount - 1
    If InStr(1, zTreeDet.GetCellValue(i, "T_MSG"), inp.DataBodyRange(nRow, 1), vbTextCompare) > 0 Then
       foundIt = "X"
       Exit For
    Else:
                              
    End If                
Next

'iterar até o próximo nó
targetItem = zTreeList.GetNextNodeKey(targetItem)

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?