Sap Script

Sap Script & VBA – Introdução (Parte II)

Na postagem Sap Script & VBA – Introdução mostrei como habilitar a funcionalidade do SAP Gui Scripting na instalação local do usuário, na época eu não tinha conhecimento da necessidade de habilitar também dentro do SAP.

Nessa postagem vou demonstrar como habilitar essa funcionalidade no SAP e como limitar o uso por função, restringido assim a execução por usuário.

Habilitar/Desabilitar essa funcionalidade no SAP é muito simples, bastando apenas acessar a transação RZ11 e passar o comando sapgui/user_scripting veja imagem abaixo.

RZ11

Será exibido as configurações atuais. Conforme imagem abaixo podemos identificar que essa opção esta desabilitada, para alterar clique no botão Modificar Valor.

Altere o valor: TRUE para habilitar ou FALSE para desabilitar, importante sempre colocar em letra maiúscula.

E assim com apenas alguns cliques habilitamos/desabilitamos a funcionalidade de gravação e execução do SAP Gui Scripting.

Após realizado esse procedimento ainda é possível “em algumas versão” configurar mais duas opções na transação RZ11. Que são:

1) sapgui/user_scripting_disable_recording – Com nome bem sugestivo ele desabilita a possibilidade de gravar Scripting, mas ainda permite executa-los.

2) sapgui/user_scripting_set_readonly – Habilitando essa opção nenhuma ação de gravação poderá ser executada por Scripting, não sei dizer ao certo quais seriam as restrições, mas em teoria nenhuma ação de gravar/salvar poderia ser executada.

Existem muitas vantagens em se utilizar essa funcionalidade, mas também existem as desvantagens, uma que eu acredito ser o motivo pelo qual varias empresas não habilitam essa funcionalidade é a segurança.

O script realiza somente ações que são permitidas ao usuário por definição do seu perfil no SAP, mas existe o risco de um leigo com acessos críticos executar e causar danos a companhia. Essa questão pode ser mitigada limitando os usuários que podem executar  essa funcionalidade.

Para fazer isso será necessário habilitar na transação RZ11 o parâmetro sapgui/user_scripting_per_user que deve ter seu valor igual a TRUE, a configuração é idêntica a habilitação/desabilitação comentada nesta postagem.

Após habilitar o recurso acima é necessário criar uma função com o objeto de autorização S_SCR da classe BC_A e atribuir essa função aos usuários quem podem e necessitam dessa funcionalidade.

Assim mitigamos o risco, mas nunca a zero, sendo mais uma questão de ponderar quais os benefícios e os riscos atrelados a essa funcionalidade e criar procedimentos para não expor a companhia.

Bom o risco que eu enxergo é a segurança que pode ser mitigada e controlada da forma citada acima e  também o desempenho do servidor, uma vez que script executa uma atividade repetitivamente em uma velocidade muito superior a manual, consumindo assim mais recursos do servidor.

Já os benefícios são vários. Através desse canal eu já recebi vários contatos, pessoas que estavam em implantação/update de versão e precisavam executar alterações cadastrais uma por uma manualmente, um trabalho que levarias dias ou semanas, estar pronto em minutos no máximo horas com poucas linhas de código VBA. Extração e manipulação de dados para Sped, automatização de baixa de imobilizado, etc…

Bom espero que essa dica lhe seja útil e caso tenham alguma duvida postem nos comentários, até a próxima!

6 thoughts on “Sap Script & VBA – Introdução (Parte II)

  • Boa tarde.
    Meu cod ficou assim.
    Mas preciso copiar o conteúdo do Position 8 para o excel, mas nos moldes convencionais não consigo.(CTRL+Y, CTRL+C, CTRL+V)

    Session.findById(“wnd[0]/tbar[0]/okcd”).Text = “*****”
    Session.findById(“wnd[0]”).sendVKey 0
    Session.findById(“wnd[0]/usr/ctxtRM06E-EVRTN”).Text = Range(“A2”)
    Session.findById(“wnd[0]/usr/ctxtRM06E-EVRTN”).caretPosition = 7
    Session.findById(“wnd[0]”).sendVKey 0
    Session.findById(“wnd[0]/mbar/menu[2]/menu[4]/menu[0]”).Select
    Session.findById(“wnd[0]/usr/txtEKKO-KTWRT”).SetFocus
    Session.findById(“wnd[0]/usr/txtRM06E-GSABW”).caretPosition = 8

    Resposta
    • Alguém pode me ajudar?

      Resposta
    • Anônimo

      Range(“A8”).value = Session.findById(“wnd[0]/usr/txtRM06E-GSABW”).Text

      Resposta
  • Rogerio

    Bom Dia Fábio!!
    Kra, tem momo abrir mais de uma transação SAP, eu consigo efetuar uma a uma, porem quando cria uma nova consulta na já aberta o script se perde.

    Resposta
    • Fabio Mitsueda

      Olá, vc está executando um código e em dado momento vc continua o código mas abrindo uma nova janela é isso? Se for isso vc precisa redefinir a variável Session ou criar outra para dar continuidade. Mas se você quer executar dois scrips ao mesmo tempo em teoria vc deveria abrir duas instâncias do Excel mas eu nunca fiz esse teste para confirmar com 100% de certeza. Espero ter ajudado. Abraço

      Resposta

Deixe uma resposta

%d blogueiros gostam disto: