首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >win32com和图形用户界面

win32com和图形用户界面
EN

Stack Overflow用户
提问于 2018-11-12 18:09:00
回答 3查看 735关注 0票数 6

我的SAP-GUI安装了脚本,并且启用了脚本。

如此截图所示:

在“步骤2:设置您的SAP系统”中的Introduction to SAP GUI Scripting中,您需要调用RZ11。

我没有调用RZ11的权限。

有没有办法通过脚本检测到这一点(sapgui/user_scripting打开或关闭)?

目前,我使用以下代码,但连接列表始终为空:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 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“。

票数 1
EN

Stack Overflow用户

发布于 2019-05-20 23:06:46

据我所知,sapgui/user_scripting是一个系统级=应用程序级设置,但不是用户级设置。因此,如果您没有运行RZ11 tcode的权限,那么您就没有机会或权限读取应用程序服务器设置,当然,也没有更改它的权限。您必须与basis管理员联系,以便与他一起验证此应用程序设置。你看,由于可能的漏洞,SAP的脚本能力有限,这就是为什么应该在客户端和应用服务器端都打开脚本支持的原因。

票数 0
EN

Stack Overflow用户

发布于 2021-12-19 22:51:19

如果您有权询问注册表,您可以编写一个cutom函数来检查SAPGUI是否已安装和标记,例如:

代码语言:javascript
复制
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注释,以更好地适应您希望与最终用户交互的方式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53259897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档