VBA

Menus do SAP GUI – conceito e automação com VBA

Escrito por Adriano Pataro
em 28/10/2024

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.

Menus do SAP GUI

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 valor 0. 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ção nlinMenu na barra de menus (indicada pelo índice entre colchetes menu[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.

Compartilhe este conteúdo

Artigos Relacionados

Page [tcb_pagination_current_page] of [tcb_pagination_total_pages]

Adriano Pataro

Meu nome é Adriano Pataro, sou certificado pela Microsoft como Excel Specialist e autor do livro Dominando o Excel 2019. Graduando ciência de dados, trabalho como analista de dados e uso o Excel há mais de 15 anos. Em 2005 resolvi trazer meu conhecimento para a internet e compartilhar com você aqui no meu site e nas redes sociais.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Fique por dentro das novidades

Cadastre seu e-mail e receba os conteúdos em primeira mão.

>

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

O site utiliza cookies para melhorar sua experiência de navegação.
Success message!
Warning message!
Error message!