有没有人曾在SAP Front End上使用过PowerShell?我正在尝试构建一个脚本,在SAP GUI 7.30中创建用户,然后将角色分配给用户。有没有人有任何阅读材料我可以学习这个?我已经遍布互联网,但无法找到任何地方开始。提前谢谢!
答案 0 :(得分:0)
您可以使用几种选项。
1)Stefan Schnell使用Native PowerShell为SAP GUI Scripting创建了 COM连接器。您可以开始研究here和here。免责声明:我没有使用它,因为Stefan的网站目前已关闭,因此该组件无法下载。还有其他选择。
2) Powershell + vbs :SAP GUI 7.30具有WYSIWYG功能,允许将用户操作编写到.vbs文件中。
因此,您可以在启用脚本录制时创建用户(这会使用脚本操作输出.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)。
快乐的脚本!
君士坦丁。