Menus do SAP GUI são a interface principal através da qual os usuários interagem com o sistema. Eles organizam as funcionalidades e transações do SAP de maneira hierárquica, facilitando a navegação e o acesso a diferentes processos.
Esses menus estão presentes em praticamente todas as telas do SAP e fornecem acesso a operações essenciais, como criação de documentos, execução de relatórios, ou consultas de dados.
Os menus do SAP são dinâmicos e podem mudar de acordo com o módulo, a transação ativa e os privilégios do usuário.
Estrutura dos menus do SAP
- Menu principal: fica na parte superior da janela do SAP, com opções como Sistema, Editar, Exibir, Favoritos, entre outros. Cada uma dessas opções possui submenus que detalham as funcionalidades específicas.
- Submenus: cada opção de menu principal pode ter múltiplos submenus, que são dispostos em cascata, permitindo acesso a diferentes funcionalidades dentro da mesma categoria.
- Menu de contexto: além dos menus principais e submenus, o SAP GUI também oferece menus de contexto (menus de clique com o botão direito), que variam de acordo com o elemento selecionado ou a ação desejada.
Automatização com VBA
Ao automatizar o acesso aos menus com VBA, você pode utilizar o SAP GUI scripting, que permite gravar e interagir com as opções de menu diretamente no código.
Isso é útil para automatizar tarefas repetitivas ou garantir que passos manuais sejam executados de maneira precisa.
Neste post, vamos automatizar o acesso ao menu principal do SAP.
Acesso ao menu pelo código VBA
Esta linha de código acessa o menu Sistema do SAP:
Session.findById("wnd[0]/mbar/menu[4]").Select
- ID do menu : o ID
wnd[0]/mbar/menu[4]
refere-se ao menu Sistema na barra de menus da janela principal (janela 0). O número[4]
indica que é o quinto menu na barra de menus (a indexação começa do 0). - Seleção do menu Sistema: a função
.Select
é usada para clicar no menu.
Dependendo da versão do SAP GUI e da personalização da interface, o índice do menu pode variar. Caso o menu[4]
não seja o menu correto, você pode usar a função de gravação de script do SAP GUI para obter o ID exato do menu no seu ambiente.
Cuidados a serem tomados
A posição dos menus e até a própria disposição de alguns elementos no SAP GUI pode variar de acordo com o perfil do usuário e as configurações individuais de cada sessão.
Perfil do usuário, customizações do layout, transações diferentes, idioma, entre outras coisas podem influenciar na posição dos objetos do menu.
Em vez de confiar na posição de um menu ou botão, podemos usar o ID exclusivo do objeto (session.findById
) para garantir que o script funcionará independentemente das alterações na interface.
Adicionar verificações de existência de objetos (If Not IsObject(...) Then
) antes de interagir com eles, pode ajudar evitar erros caso algum menu ou elemento não esteja disponível para um usuário específico.
Acesso ao menu Sistema com VBA
Para identificar e clicar no menu Sistema no SAP GUI usando VBA, vamos utilizar o método findById
para interagir com o menu apropriado por meio de seu ID.
Veja o código para identificar o menu Sistema de forma dinâmica:
nlinMenu = 0
Do Until Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]").Name = "Sistema"
nlinMenu = nlinMenu + 1
Loop
Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]").Select
Explicação do código:
nlinMenu = 0
- Aqui, uma variável chamada
nlinMenu
é inicializada com o valor0
. Essa variável será usada como um contador para iterar pelos menus da barra de menus.
Do Until Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]").Name = "Sistema"
- Esse loop
Do Until
começa a execução e continuará até que o nome do menu atual seja “Sistema”. - O método
Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]")
encontra o menu na posiçãonlinMenu
na barra de menus (indicada pelo índice entre colchetesmenu[nlinMenu]
). nlinMenu
é o índice que vai sendo incrementado para navegar pelos menus..Name
retorna o nome interno do menu. O loop continua enquanto o nome do menu atual não for “Sistema”.
nlinMenu = nlinMenu + 1
- A cada iteração do loop, o valor de
nlinMenu
é incrementado em 1, para que o código cheque o próximo item do menu.
Loop
- O loop continua até encontrar o menu com o nome “Sistema”. Assim que isso acontecer, o código sai do loop.
Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]").Select
- Depois que o loop encontra o menu “Sistema” (ou seja, o valor de
nlinMenu
corresponde ao índice onde está o menu “Sistema”), o código seleciona o menu usando o método.Select
.
Observação:
O nome do menu pode variar dependendo da configuração de idioma do SAP. Se o SAP estiver em inglês, o nome será System em vez de Sistema. Você pode adaptar o nome de acordo com o idioma que está sendo usado no seu SAP.
Acesso ao item Status… do menu Sistema
Para acessar itens ou submenus, seguimos a mesma estrutura do acesso ao menu Sistema, adicionando mais linhas de código.
Veja o código para acessar o item Status… do menu Sistema:
nlinMenu = 0
Do Until Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]").Name = "Sistema"
nlinMenu = nlinMenu + 1
Loop
nlinItem = 0
Do Until Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]/menu[" & nlinItem & "]").Name = "Status..."
nlinItem = nlinItem + 1
Loop
Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]/menu[" & nlinItem & "]").Select
Veja que seguimos a mesma estrutura de acesso ao menu Sistema, adicionando um nível para acesso ao item Status…
E para finalizar, um exemplo de acesso ao item Trace contexto do submenu Utilitários do menu Sistema:
nlinMenu = 0
Do Until Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]").Name = "Sistema"
nlinMenu = nlinMenu + 1
Loop
nlinSubmenu = 0
Do Until Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]/menu[" & nlinSubmenu & "]").Name = "Utilitários"
nlinSubmenu = nlinSubmenu + 1
Loop
nlinItem = 0
Do Until Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]/menu[" & nlinSubmenu & "]/menu[" & nlinItem & "]").Name = "Trace contexto"
nlinItem = nlinItem + 1
Loop
Session.findById("wnd[0]/mbar/menu[" & nlinMenu & "]/menu[" & nlinSubmenu & "]/menu[" & nlinItem & "]").Select
Para outros submenus/itens, é só seguir a mesma estrutura.
Menus do SAP GUI – participe
O que achou dos Menus do SAP GUI? Deixe sua opinião nos comentários.
Se este conteúdo foi relevante para você, convide seus amigos para que eles também fiquem sabendo deste material.
Precisa desta automação na sua empresa? Entre em contato e vamos conversar.
Um abraço e até a próxima.