¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Automação da criação de funções no SAP utilizando VBscript e Excel: Guia passo a passo

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 43 Vistas
0
Cargando...
div class="lia-message-body-content">

Olá Especialistas,

Meu objetivo é utilizar o VBscript para criar automaticamente vários papéis (via transação PFCG) com base em uma entrada do Excel.

Descobri recentemente sobre o VBscript para o SAP, então ainda não sou muito bom em codificação VB.

Segui este tutorial, créditos para marianoc por isso:

De qualquer forma, já gravei o processo, e meu arquivo do Excel (que contém apenas duas colunas) está pronto.

Quando pressiono o botão de reprodução:

Encontro este erro:

Minha pergunta é, qual poderia ser a causa deste erro? Tenho certeza de que isso não é um problema de sintaxe, pois segui rigorosamente as orientações do tutorial.

Anexando o código aqui:

If Not IsObject(application) Then
   Set SapGuiAuto  = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session    = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session,     "on"
   WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").maximize

Set objExcel = GetObject(,”Excel.Application”) 
Set objWrkbk = objExcel.OpenWorkbook("C:\Users\sularte\Downloads\Test_Role_Creation.xlsx")
Set objSheet = Sheets("Sheet1") 

For i = 2 to objSheet.UsedRange.Rows.Count 
   session.findById("wnd[
                
                
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

2 Respuestas

0
Cargando...

Olá!

Não sou um especialista em SAP, mas assim como você, tentei trabalhar com o código publicado por Mariano, mas não consegui, o mesmo erro aparece...

Depois de algumas horas pesquisando no Google... encontrei este código no SlideShare, combinei e adaptei ambos

Agora está funcionando para mim (em um TCODE diferente)

Aqui vou copiar e colar seu código com as modificações, teste com isso e espero que seja útil

Saudações

If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If

Dim objExcel,objWorkbook
Dim objSheet, intRow, i
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.open ("C:\Users\sularte\Downloads\Test_Role_Creation.xlsx")
Set objSheet = objExcel.Worksheets(1)
Row = 2

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "/npfcg"
session.findById("wnd[0]").sendVKey 0

Do Until objSheet.cells(Row,1).value=""

session.findById("wnd[0]/usr/ctxtAGR_NAME_NEU").text = objSheet.Cells(Row,1).Value
session.findById("wnd[0]/usr/ctxtAGR_NAME_NEU").caretPosition = 16
session.findById("wnd[0]/usr/btn%#AUTOTEXT003").press
session.findById("wnd[0]/usr/txtS_AGR_TEXTS-TEXT").text = objSheet.Cells(Row,2).Value
session.findById("wnd[0]/usr/txtS_AGR_TEXTS-TEXT").caretPosition = 9
session.findById("wnd[0]").sendVKey 11
session.findById("wnd[0]/usr/tabsTABSTRIP1/tabpTAB9").select
session.findById("wnd[0]/usr/tabsTABSTRIP1/tabpTAB9/ssubSUB1:SAPLPRGN_TREE:0321/cntlTOOL_CONTROL/shellcont/shell").pressButton "TB03"
session.findById("wnd[1]/usr/tblSAPLPRGN_WIZARDCTRL_TCODE/ctxtS_TCODES-TCODE[0,0]").text = "su01d"
session.findById("wnd[1]/usr/tblSAPLPRGN_WIZARDCTRL_TCODE/ctxtS_TCODES-TCODE[0,0]").caretPosition = 5
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[1]/tbar[0]/btn[19]").press
session.findById("wnd[0]").sendVKey 11
session.findById("wnd[0]/usr/tabsTABSTRIP1/tabpTAB5").select
session.findById("wnd[0]/usr/tabsTABSTRIP1/tabpTAB5/ssubSUB1:SAPLPRGN_TREE:0350/btnEXPERTE").press
session.findById("wnd[0]/usr/lbl[5,5]").setFocus
session.findById("wnd[0]/usr/lbl[5,5]").caretPosition = 1
session.findById("wnd[0]").sendVKey 2
session.findById("wnd[0]/usr/lbl[32,2]").setFocus
session.findById("wnd[0]/usr/lbl[32,2]").caretPosition = 0
session.findById("wnd[0]").sendVKey 2
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]").sendVKey 11
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/tbar[1]/btn[17]").press
session.findById("wnd[0]/tbar[0]/btn[3]").press
session.findById("wnd[0]/tbar[0]/btn[3]").press

Row = Row + 1
Loop
objExcel.Quit
Set objExcel = Nothing
Set objWorkbook = Nothing
Set objSheet = Nothing
msgbox ("Processo concluído")

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

Olá,

No tutorial, você menciona que existem dois blocos de código que devem ser colocados em seu script.

Não vejo essas linhas em seu código. Revise o tutorial e procure por exemplo "Bloco de código: Bloco A".

Atenciosamente,

Bernhard

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?