SAP前端Powershell脚本

时间:2015-05-23 03:12:51

标签: powershell sap

有没有人曾在SAP Front End上使用过PowerShell?我正在尝试构建一个脚本,在SAP GUI 7.30中创建用户,然后将角色分配给用户。有没有人有任何阅读材料我可以学习这个?我已经遍布互联网,但无法找到任何地方开始。提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用几种选项。

1)Stefan Schnell使用Native PowerShell为SAP GUI Scripting创建了 COM连接器。您可以开始研究herehere。免责声明:我没有使用它,因为Stefan的网站目前已关闭,因此该组件无法下载。还有其他选择。

2) Powershell + vbs :SAP GUI 7.30具有WYSIWYG功能,允许将用户操作编写到.vbs文件中。

Scripting in SAP GUI

因此,您可以在启用脚本录制时创建用户(这会使用脚本操作输出.vbs文件),然后从Powershell启动此脚本。

c:\windows\system32\cscript.exe "C:\Users\xxxxxxxx\AppData\Roaming\SAP\SAP GUI\Scripts\CreateUserAndAssignRole.vbs"

如果您的SAP会话处于非活动状态,则首先需要启动.exe文件。然后你的Powershell部分看起来像那样:

  #-Set the path to the SAP GUI directory-------------------------------
    $SAPGUIPath = "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\"

  #-Set the SAP system ID-----------------------------------------------
    $SID = "Your system ID (a description/name from SAP Logon)"

  #-Set the instance number of the SAP system---------------------------
    $InstanceNo = "00"

  #-Start the SAP GUI---------------------------------------------------
    $SAPGUI = $SAPGUIPath + "sapgui.exe"
    & $SAPGUI $SID $InstanceNo

  #-Call the logon script---------------------------------
    c:\windows\system32\cscript.exe "C:\Users\xxxxxxx\AppData\Roaming\SAP\SAP GUI\Scripts\login.vbs" 

登录脚本:

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]/usr/txtRSYST-MANDT").text = "yourMandant"
session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "yourUsername"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "yourPass"
session.findById("wnd[0]/usr/txtRSYST-LANGU").text = "yourLanguage"
session.findById("wnd[0]").sendVKey 0

不是比SAP更丑,不是吗?

3)您可以在 .NET 中自动化SAP GUI。一个工作示例是here

就我个人而言,我已经在C#中做了很多(3),虽然它提供了许多有用的功能(特别是日志记录和错误处理),但c#代码程序化且非常麻烦。因此,我将我的解决方案迁移到(2)。

快乐的脚本!

君士坦丁。