0

I created two variables that are obtained after a message box asks the user what is the initial and end date that he/she wants to extract the data on the SAP transaction.

enter image description here

Then I recorded a Vbscript on SAP to automate the extraction of data, then I changed the dates input to the variables that I created on Power Automate, but Power Automate is not recognizing the variables and keeps saying that there is a syntax error.

The original Code ran without errors:

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
session.findById("wnd[0]/tbar[0]/okcd").text = "zx_se16"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").text = "zmpafedi_doc"
session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").caretPosition = 12
session.findById("wnd[0]").sendVKey 3
session.findById("wnd[0]").sendVKey 8
session.findById("wnd[1]/tbar[0]/btn[14]").press
session.findById("wnd[1]/usr/chk[2,9]").selected = true
session.findById("wnd[1]/usr/chk[2,12]").selected = true
session.findById("wnd[1]/usr/chk[2,13]").selected = true
session.findById("wnd[1]/usr/chk[2,14]").selected = true
session.findById("wnd[1]/usr/chk[2,16]").selected = true
session.findById("wnd[1]/usr/chk[2,16]").setFocus
session.findById("wnd[1]/usr").verticalScrollbar.position = 1
session.findById("wnd[1]/usr").verticalScrollbar.position = 2
session.findById("wnd[1]/usr").verticalScrollbar.position = 3
session.findById("wnd[1]/usr").verticalScrollbar.position = 4
session.findById("wnd[1]/usr").verticalScrollbar.position = 5
session.findById("wnd[1]/usr").verticalScrollbar.position = 6
session.findById("wnd[1]/usr").verticalScrollbar.position = 7
session.findById("wnd[1]/usr").verticalScrollbar.position = 8
session.findById("wnd[1]/usr").verticalScrollbar.position = 9
session.findById("wnd[1]/usr").verticalScrollbar.position = 10
session.findById("wnd[1]/usr").verticalScrollbar.position = 11
session.findById("wnd[1]/usr").verticalScrollbar.position = 12
session.findById("wnd[1]/usr").verticalScrollbar.position = 13
session.findById("wnd[1]/usr").verticalScrollbar.position = 14
session.findById("wnd[1]/usr").verticalScrollbar.position = 15
session.findById("wnd[1]/usr").verticalScrollbar.position = 16
session.findById("wnd[1]/usr").verticalScrollbar.position = 17
session.findById("wnd[1]/usr").verticalScrollbar.position = 18
session.findById("wnd[1]/usr").verticalScrollbar.position = 19
session.findById("wnd[1]/usr").verticalScrollbar.position = 20
session.findById("wnd[1]/usr").verticalScrollbar.position = 21
session.findById("wnd[1]/usr").verticalScrollbar.position = 22
session.findById("wnd[1]/usr/chk[2,13]").selected = true
session.findById("wnd[1]/usr/chk[2,13]").setFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/ctxtI1-LOW").text = "2"
session.findById("wnd[0]/usr/ctxtI1-LOW").caretPosition = 1
session.findById("wnd[0]/usr/btn%_I2_%_APP_%-VALU_PUSH").press
session.findById("wnd[1]/tbar[0]/btn[24]").press
session.findById("wnd[1]/tbar[0]/btn[8]").press
session.findById("wnd[0]/usr/ctxtI6-LOW").text = "01082022"
session.findById("wnd[0]/usr/ctxtI6-HIGH").text = "25082022"
session.findById("wnd[0]/usr/ctxtI6-HIGH").setFocus
session.findById("wnd[0]/usr/ctxtI6-HIGH").caretPosition = 8
session.findById("wnd[0]/tbar[1]/btn[8]").press

session.findById("wnd[0]/mbar/menu[6]/menu[5]/menu[2]/menu[2]").select

session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[4,0]").select
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[4,0]").setFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press

The changed code with addition of the variables:

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
session.findById("wnd[0]/tbar[0]/okcd").text = "zx_se16"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").text = "zmpafedi_doc"
session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").caretPosition = 12
session.findById("wnd[0]").sendVKey 3
session.findById("wnd[0]").sendVKey 8
session.findById("wnd[1]/tbar[0]/btn[14]").press
session.findById("wnd[1]/usr/chk[2,9]").selected = true
session.findById("wnd[1]/usr/chk[2,12]").selected = true
session.findById("wnd[1]/usr/chk[2,13]").selected = true
session.findById("wnd[1]/usr/chk[2,14]").selected = true
session.findById("wnd[1]/usr/chk[2,16]").selected = true
session.findById("wnd[1]/usr/chk[2,16]").setFocus
session.findById("wnd[1]/usr").verticalScrollbar.position = 1
session.findById("wnd[1]/usr").verticalScrollbar.position = 2
session.findById("wnd[1]/usr").verticalScrollbar.position = 3
session.findById("wnd[1]/usr").verticalScrollbar.position = 4
session.findById("wnd[1]/usr").verticalScrollbar.position = 5
session.findById("wnd[1]/usr").verticalScrollbar.position = 6
session.findById("wnd[1]/usr").verticalScrollbar.position = 7
session.findById("wnd[1]/usr").verticalScrollbar.position = 8
session.findById("wnd[1]/usr").verticalScrollbar.position = 9
session.findById("wnd[1]/usr").verticalScrollbar.position = 10
session.findById("wnd[1]/usr").verticalScrollbar.position = 11
session.findById("wnd[1]/usr").verticalScrollbar.position = 12
session.findById("wnd[1]/usr").verticalScrollbar.position = 13
session.findById("wnd[1]/usr").verticalScrollbar.position = 14
session.findById("wnd[1]/usr").verticalScrollbar.position = 15
session.findById("wnd[1]/usr").verticalScrollbar.position = 16
session.findById("wnd[1]/usr").verticalScrollbar.position = 17
session.findById("wnd[1]/usr").verticalScrollbar.position = 18
session.findById("wnd[1]/usr").verticalScrollbar.position = 19
session.findById("wnd[1]/usr").verticalScrollbar.position = 20
session.findById("wnd[1]/usr").verticalScrollbar.position = 21
session.findById("wnd[1]/usr").verticalScrollbar.position = 22
session.findById("wnd[1]/usr/chk[2,13]").selected = true
session.findById("wnd[1]/usr/chk[2,13]").setFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/ctxtI1-LOW").text = "2"
session.findById("wnd[0]/usr/ctxtI1-LOW").caretPosition = 1
session.findById("wnd[0]/usr/btn%_I2_%_APP_%-VALU_PUSH").press
session.findById("wnd[1]/tbar[0]/btn[24]").press
session.findById("wnd[1]/tbar[0]/btn[8]").press
session.findById("wnd[0]/usr/ctxtI6-LOW").text = "%DtIni%"
session.findById("wnd[0]/usr/ctxtI6-HIGH").text = "%DtFim%"
session.findById("wnd[0]/usr/ctxtI6-HIGH").setFocus
session.findById("wnd[0]/usr/ctxtI6-HIGH").caretPosition = 8
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/mbar/menu[6]/menu[5]/menu[2]/menu[2]").select
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[4,0]").select
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[4,0]").setFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press

Can someone help me understand why Power Automate is not recognizing the addition of the variables?

The error:

enter image description here

I searched and watch some videos and they do the same thing I did.

Tks.

Skin
  • 9,085
  • 2
  • 13
  • 29

1 Answers1

0

Found out that the recorder on SAP generates lines that contain the character %, and Power Automate Desktop uses the character % to identify variables.

So all I needed to do is add another % beside the ones existing and the code worked.

Line that was causing the syntax error:

session.findById("wnd[0]/usr/btn%_I2_%_APP_%-VALU_PUSH").press

Correction:

session.findById("wnd[0]/usr/btn%%_I2_%%_APP_%%-VALU_PUSH").press
SternK
  • 11,649
  • 22
  • 32
  • 46