我的SAP-GUI安装了脚本,并且启用了脚本。
如此截图所示:

在“步骤2:设置您的SAP系统”中的Introduction to SAP GUI Scripting中,您需要调用RZ11。
我没有调用RZ11的权限。
有没有办法通过脚本检测到这一点(sapgui/user_scripting打开或关闭)?
目前,我使用以下代码,但连接列表始终为空:
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
sapgui = win32com.client.GetObject("SAPGUI")
system = query.get('system')
client = query.get('mandant')
session = False
application = sapgui.GetScriptingEngine
seen = []
for i_conn in range(0, application.Connections.Count):
seen.append('i_conn=%s session_count=%s' % (i_conn, application.Connections.Item(i_conn).Sessions.Count))
for i_sess in range(0, application.Connections.Item(i_conn).Sessions.Count):
session_info = application.Connections.Item(i_conn).Sessions.Item(i_sess).Info
system_of_session = session_info.SystemName
client_of_session = session_info.Client
if system_of_session == system and client_of_session == client:
connection = application.Connections.Item(i_conn).Children(i_sess)
session = connection.Children(i_sess)
break
seen.append('system=%s client=%s' % (system_of_session, client_of_session))
if session:
break
else:
info_popup('You are not logged into system %s in Client %s! Seen:\n%s' % (
system, client, '\n'.join(seen)))
return发布于 2021-12-15 03:54:26
当你在sap中没有足够的权限时,你不能连接的事实是一个很好的迹象,表明用户没有启用脚本(假设用户正在运行一个活动的sap会话),否则你可以用'session.findById("wnd/usr/tblSAPLCMDITCTRL_3500").getAbsoluteRow(3).selected =true来测试并检查错误。另外,如果" sapgui“失败,我建议您在SAPGUI= win32com.client.GetObject("SAPGUI")连接中考虑”SAPGUISERVER“。
发布于 2019-05-20 23:06:46
据我所知,sapgui/user_scripting是一个系统级=应用程序级设置,但不是用户级设置。因此,如果您没有运行RZ11 tcode的权限,那么您就没有机会或权限读取应用程序服务器设置,当然,也没有更改它的权限。您必须与basis管理员联系,以便与他一起验证此应用程序设置。你看,由于可能的漏洞,SAP的脚本能力有限,这就是为什么应该在客户端和应用服务器端都打开脚本支持的原因。
发布于 2021-12-19 22:51:19
如果您有权询问注册表,您可以编写一个cutom函数来检查SAPGUI是否已安装和标记,例如:
Public Sub CheckKey()
Const cRegKey As String = "HKEY_CURRENT_USER\Software\SAP\SAPGUI Front\SAP Frontend Server\Security\UserScripting"
If CheckSAPGUI(cRegKey) Then
MsgBox "User has SAPGUI installed and initialized", vbOKOnly Or vbInformation, Application.Name
Else
MsgBox "User does not have SAPGUI installed", vbOKOnly Or vbCritical, Application.Name
End If
End Sub
Public Function CheckSAPGUI(RegKey As String) As Boolean
Dim rtn As Variant
On Error Resume Next
rtn = vbNullString
With CreateObject("wscript.shell")
rtn = .RegRead(RegKey)
End With
If Len(rtn) = 0 Then
CheckSAPGUI = False
ElseIf Val(rtn) <> 1 Then
CheckSAPGUI = False
Else
CheckSAPGUI = True
End If
On Error GoTo 0
End Function您应该能够修改MsgBox注释,以更好地适应您希望与最终用户交互的方式
https://stackoverflow.com/questions/53259897
复制相似问题