标签: sap-gui

win32com和SAP-GUI

我的SAP-GUI安装了Scripting并启用了Scripting.

就像在这个截图中:

SAP-GUI的配置 - 启动脚本 -

在"步骤2:设置SAP系统"中的SAP GUI脚本简介中,您需要调用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: …
Run Code Online (Sandbox Code Playgroud)

sap win32com sap-gui

6
推荐指数
1
解决办法
301
查看次数

如何从 Excel 宏运行 SAP GUI 脚本

我正在尝试创建一个执行 SAP GUI 脚本的 Excel 宏。我已经创建了脚本,但我不明白如何在 VBA 宏中使用它。

这是我的 SAP GUI 脚本:

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 = "ZL"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/chkP_DBAGG").selected = true
session.findById("wnd[0]/usr/ctxtP_DTA").text = "DB"
session.findById("wnd[0]/usr/chkP_DBAGG").setFocus
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/tbar[1]/btn[25]").press
session.findById("wnd[0]/tbar[1]/btn[26]").press
session.findById("wnd[0]/usr/chkS005").selected = true
session.findById("wnd[0]/usr/chkS017").selected = true
session.findById("wnd[0]/usr/chkS018").selected …
Run Code Online (Sandbox Code Playgroud)

excel automation vba sap-gui

5
推荐指数
2
解决办法
5万
查看次数

从 SAP 中提取长文本数据到 Excel

我正在处理一个项目,为流程提取一些数据,需要从指定为长文本的 SAP 任务中提取文本。我需要单击一个按钮来打开一个包含长文本作为段落的文档。此数据包含在一个 Microsoft 字样文档中,该文档显示为 SAP 界面的弹出窗口。

在这种情况下无法使用脚本记录器,因为它在 SAP 之外,因此我无法单击字段​​来记录存在的数据。

当我尝试记录打开文档(按下 SAP 中的长测试按钮)时,它会记录一长串乱码,并且不允许我简单地从单击字段时看到的 .setfocus 更改为 .text以便将语句提取到excel。

我正在处理一个项目,为流程提取一些数据,需要从指定为长文本的 SAP 任务中提取文本。我需要单击一个按钮来打开一个包含长文本作为段落的文档。此数据包含在一个 Microsoft 字样文档中,该文档显示为 SAP 界面的弹出窗口。

在这种情况下无法使用脚本记录器,因为它在 SAP 之外,因此我无法单击字段​​来记录存在的数据。

当我尝试记录打开文档(按下 SAP 中的长测试按钮)时,它会记录一长串乱码,并且不允许我简单地从单击字段时看到的 .setfocus 更改为 .text以便将语句提取到excel。

这是按下“长文本视图”按钮时录制的一段脚本。粘贴整个东西太大了,但它基本上是重复的。代码以 .press 结束,在这个片段之后大约 30,000 个字符。

有谁知道与提取此类长文本数据相关的代码?

session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB03/ssubSUB_GROUP_20:SAPLIQS0:7125/tblSAPLIQS0MASSNAH_VIEWER2/btnQMICON-LTMASS[5,0]").setFocus

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB03/ssubSUB_GROUP_20:SAPLIQS0:7125/tblSAPLIQS0MASSNAH_VIEWER2/btnQMICON-LTMASS[5,0]").press

session.findById("wnd[0]/usr/cntlSCMSW_CONTAINER_2102/shellcont/shell").setDocument 1,"e1xydGYxXGFkZWZsYW5nMTAyNVxhbnNpXGFuc2ljcGcxMjUyXHVjMVxhZGVmZjBcZGVmZjBcc3RzaGZkYmNoMFxzdHNoZmxvY2gzN1xzdHNoZmhpY2gzN1xzdHNoZmJpMFxkZWZsYW5nMTAzM1xkZWZsYW5nZmUxMDMzXHRoZW1lbGFuZzEwMzNcdGhlbWVsYW5nZmUwXHRoZW1lbGFuZ2NzMHtcZm9udHRibHtcZjBcZmJpZGkgXGZyb21hblxmY2hhcnNldDBcZnBycTJ7XCpccGFub3NlIDAyMDIwNjAzMDUwNDA1MDIwMzA0fVRpbWVzIE5ldyBSb21hbjt9e1xmMlxmYmlkaSBcZm1vZGVyblxmY2hhcnNldDBcZnBycTF7XCpccGFub3NlIDAyMDcwMzA5MDIwMjA1MDIwNDA0fUNvdXJpZXIgTmV3O30NCntcZjJcZmJpZGkgXGZtb2Rlcm5cZmNoYXJzZXQwXGZwcnExe1wqXHBhbm9zZSAwMjA3MDMwOTAyMDIwNTAyMDQwNH1Db3VyaWVyIE5ldzt9e1xmMzdcZmJpZGkgXGZzd2lzc1xmY2hhcnNldDBcZnBycTJ7XCpccGFub3NlIDAyMGYwNTAyMDIwMjA0MDMwMjA0fUNhbGlicmk7fXtcZmxvbWFqb3JcZjMxNTAwXGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQwXGZwcnEye1wqXHBhbm9zZSAwMjAyMDYwMzA1MDQwNTAyMDMwNH1UaW1lcyBOZXcgUm9tYW47fQ0Ke1xmZGJtYWpvclxmMzE1MDFcZmJpZGkgXGZyb21hblxmY2hhcnNldDBcZnBycTJ7XCpccGFub3NlIDAyMDIwNjAzMDUwNDA1MDIwMzA0fVRpbWVzIE5ldyBSb21hbjt9e1xmaGltYWpvclxmMzE1MDJcZmJpZGkgXGZzd2lzc1xmY2hhcnNldDBcZnBycTJ7XCpccGFub3NlIDAyMGYwMzAyMDIwMjA0MDMwMjA0fUNhbGlicmkgTGlnaHQ7fQ0Ke1xmYmltYWpvclxmMzE1MDNcZmJpZGkgXGZyb21hblxmY2hhcnNldDBcZnBycTJ7XCpccGFub3NlIDAyMDIwNjAzMDUwNDA1MDIwMzA0fVRpbWVzIE5ldyBSb21hbjt9e1xmbG9taW5vclxmMzE1MDRcZmJpZGkgXGZyb21hblxmY2hhcnNldDBcZnBycTJ7XCpccGFub3NlIDAyMDIwNjAzMDUwNDA1MDIwMzA0fVRpbWVzIE5ldyBSb21hbjt9DQp7XGZkYm1pbm9yXGYzMTUwNVxmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MFxmcHJxMntcKlxwYW5vc2UgMDIwMjA2MDMwNTA0MDUwMjAzMDR9VGltZXMgTmV3IFJvbWFuO317XGZoaW1pbm9yXGYzMTUwNlxmYmlkaSBcZnN3aXNzXGZjaGFyc2V0MFxmcHJxMntcKlxwYW5vc2UgMDIwZjA1MDIwMjAyMDQwMzAyMDR9Q2FsaWJyaTt9DQp7XGZiaW1pbm9yXGYzMTUwN1xmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MFxmcHJxMntcKlxwYW5vc2UgMDIwMjA2MDMwNTA0MDUwMjAzMDR9VGltZXMgTmV3IFJvbWFuO317XGY0OVxmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MjM4XGZwcnEyIFRpbWVzIE5ldyBSb21hbiBDRTt9e1xmNTBcZmJpZGkgXGZyb21hblxmY2hhcnNldDIwNFxmcHJxMiBUaW1lcyBOZXcgUm9tYW4gQ3lyO30NCntcZjUyXGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQxNjFcZnBycTIgVGltZXMgTmV3IFJvbWFuIEdyZWVrO317XGY1M1xmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MTYyXGZwcnEyIFRpbWVzIE5ldyBSb21hbiBUdXI7fXtcZjU0XGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQxNzdcZnBycTIgVGltZXMgTmV3IFJvbWFuIChIZWJyZXcpO317XGY1NVxmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MTc4XGZwcnEyIFRpbWVzIE5ldyBSb21hbiAoQXJhYmljKTt9DQp7XGY1NlxmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MTg2XGZwcnEyIFRpbWVzIE5ldyBSb21hbiBCYWx0aWM7fXtcZjU3XGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQxNjNcZnBycTIgVGltZXMgTmV3IFJvbWFuIChWaWV0bmFtZXNlKTt9e1xmNjlcZmJpZGkgXGZtb2Rlcm5cZmNoYXJzZXQyMzhcZnBycTEgQ291cmllciBOZXcgQ0U7fXtcZjcwXGZiaWRpIFxmbW9kZXJuXGZjaGFyc2V0MjA0XGZwcnExIENvdXJpZXIgTmV3IEN5cjt9DQp7XGY3MlxmYmlkaSBcZm1vZGVyblxmY2hhcnNldDE2MVxmcHJxMSBDb3VyaWVyIE5ldyBHcmVlazt9e1xmNzNcZmJpZGkgXGZtb2Rlcm5cZmNoYXJzZXQxNjJcZnBycTEgQ291cmllciBOZXcgVHVyO317XGY3NFxmYmlkaSBcZm1vZGVyblxmY2hhcnNldDE3N1xmcHJxMSBDb3VyaWVyIE5ldyAoSGVicmV3KTt9e1xmNzVcZmJpZGkgXGZtb2Rlcm5cZmNoYXJzZXQxNzhcZnBycTEgQ291cmllciBOZXcgKEFyYWJpYyk7fQ0Ke1xmNzZcZmJpZGkgXGZtb2Rlcm5cZmNoYXJzZXQxODZcZnBycTEgQ291cmllciBOZXcgQmFsdGljO317XGY3N1xmYmlkaSBcZm1vZGVyblxmY2hhcnNldDE2M1xmcHJxMSBDb3VyaWVyIE5ldyAoVmlldG5hbWVzZSk7fXtcZjY5XGZiaWRpIFxmbW9kZXJuXGZjaGFyc2V0MjM4XGZwcnExIENvdXJpZXIgTmV3IENFO317XGY3MFxmYmlkaSBcZm1vZGVyblxmY2hhcnNldDIwNFxmcHJxMSBDb3VyaWVyIE5ldyBDeXI7fQ0Ke1xmNzJcZmJpZGkgXGZtb2Rlcm5cZmNoYXJzZXQxNjFcZnBycTEgQ291cmllciBOZXcgR3JlZWs7fXtcZjczXGZiaWRpIFxmbW9kZXJuXGZjaGFyc2V0MTYyXGZwcnExIENvdXJpZXIgTmV3IFR1cjt9e1xmNzRcZmJpZGkgXGZtb2Rlcm5cZmNoYXJzZXQxNzdcZnBycTEgQ291cmllciBOZXcgKEhlYnJldyk7fXtcZjc1XGZiaWRpIFxmbW9kZXJuXGZjaGFyc2V0MTc4XGZwcnExIENvdXJpZXIgTmV3IChBcmFiaWMpO30NCntcZjc2XGZiaWRpIFxmbW9kZXJuXGZjaGFyc2V0MTg2XGZwcnExIENvdXJpZXIgTmV3IEJhbHRpYzt9e1xmNzdcZmJpZGkgXGZtb2Rlcm5cZmNoYXJzZXQxNjNcZnBycTEgQ291cmllciBOZXcgKFZpZXRuYW1lc2UpO317XGY0MTlcZmJpZGkgXGZzd2lzc1xmY2hhcnNldDIzOFxmcHJxMiBDYWxpYnJpIENFO317XGY0MjBcZmJpZGkgXGZzd2lzc1xmY2hhcnNldDIwNFxmcHJxMiBDYWxpYnJpIEN5cjt9DQp7XGY0MjJcZmJpZGkgXGZzd2lzc1xmY2hhcnNldDE2MVxmcHJxMiBDYWxpYnJpIEdyZWVrO317XGY0MjNcZmJpZGkgXGZzd2lzc1xmY2hhcnNldDE2MlxmcHJxMiBDYWxpYnJpIFR1cjt9e1xmNDI2XGZiaWRpIFxmc3dpc3NcZmNoYXJzZXQxODZcZnBycTIgQ2FsaWJyaSBCYWx0aWM7fXtcZjQyN1xmYmlkaSBcZnN3aXNzXGZjaGFyc2V0MTYzXGZwcnEyIENhbGlicmkgKFZpZXRuYW1lc2UpO30NCntcZmxvbWFqb3JcZjMxNTA4XGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQyMzhcZnBycTIgVGltZXMgTmV3IFJvbWFuIENFO317XGZsb21ham9yXGYzMTUwOVxmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MjA0XGZwcnEyIFRpbWVzIE5ldyBSb21hbiBDeXI7fXtcZmxvbWFqb3JcZjMxNTExXGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQxNjFcZnBycTIgVGltZXMgTmV3IFJvbWFuIEdyZWVrO30NCntcZmxvbWFqb3JcZjMxNTEyXGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQxNjJcZnBycTIgVGltZXMgTmV3IFJvbWFuIFR1cjt9e1xmbG9tYWpvclxmMzE1MTNcZmJpZGkgXGZyb21hblxmY2hhcnNldDE3N1xmcHJxMiBUaW1lcyBOZXcgUm9tYW4gKEhlYnJldyk7fXtcZmxvbWFqb3JcZjMxNTE0XGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQxNzhcZnBycTIgVGltZXMgTmV3IFJvbWFuIChBcmFiaWMpO30NCntcZmxvbWFqb3JcZjMxNTE1XGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQxODZcZnBycTIgVGltZXMgTmV3IFJvbWFuIEJhbHRpYzt9e1xmbG9tYWpvclxmMzE1MTZcZmJpZGkgXGZyb21hblxmY2hhcnNldDE2M1xmcHJxMiBUaW1lcyBOZXcgUm9tYW4gKFZpZXRuYW1lc2UpO317XGZkYm1ham9yXGYzMTUxOFxmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MjM4XGZwcnEyIFRpbWVzIE5ldyBSb21hbiBDRTt9DQp7XGZkYm1ham9yXGYzMTUxOVxmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MjA0XGZwcnEyIFRpbWVzIE5ldyBSb21hbiBDeXI7fXtcZmRibWFqb3JcZjMxNTIxXGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQxNjFcZnBycTIgVGltZXMgTmV3IFJvbWFuIEdyZWVrO317XGZkYm1ham9yXGYzMTUyMlxmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MTYyXGZwcnEyIFRpbWVzIE5ldyBSb21hbiBUdXI7fQ0Ke1xmZGJtYWpvclxmMzE1MjNcZmJpZGkgXGZyb21hblxmY2hhcnNldDE3N1xmcHJxMiBUaW1lcyBOZXcgUm9tYW4gKEhlYnJldyk7fXtcZmRibWFqb3JcZjMxNTI0XGZiaWRpIFxmcm9tYW5cZmNoYXJzZXQxNzhcZnBycTIgVGltZXMgTmV3IFJvbWFuIChBcmFiaWMpO317XGZkYm1ham9yXGYzMTUyNVxmYmlkaSBcZnJvbWFuXGZjaGFyc2V0MTg2XGZwcnEyIFRpbWVzIE5ldyBSb21hbiBCYWx0aWM7fQ0Ke1xmZGJtYWpvclxmMzE1MjZcZmJpZGkgXGZyb21hblxmY2hhcnNldDE2M1xmcHJxMiBUaW1lcyBOZXcgUm9tYW4gKFZpZXRuYW1lc2UpO317XGZoaW1ham9yXGYzMTUyOFxmYmlkaSBcZnN3aXNzXGZjaGFyc2V0MjM4XGZwcnEyIENhbGlicmkgTGlnaHQgQ0U7fXtcZmhpbWFqb3JcZjMxNTI5XGZiaWRpIFxmc3dpc3NcZmNoYXJzZXQyMDRcZnBycTIgQ2FsaWJyaSBMaWdodCBDeXI7fQ0Ke1xmaGltYWpvclxmMzE1MzFcZmJpZGkgXGZzd2lzc1xmY2hhcnNldDE2MVxmcHJxMiBDYWxpYnJpIExpZ2h0IEdyZWVrO317XGZoaW1ham9yXGYzMTUzMlxmYmlkaSBcZnN3aXNzXGZjaGFyc2V0MTYyXGZwcnEyIENhbGlicmkgTGlnaHQgVHVyO317XGZoaW1ham9yXGYzMTUzNVxmYmlkaSBcZnN3aXNzXGZjaGFyc2V0MTg2XGZwcnEyIENhbGli
Run Code Online (Sandbox Code Playgroud)

sap-gui

5
推荐指数
1
解决办法
2178
查看次数

如何找到通过 C# 应用程序自动化 SAP GUI 所需的连接字符串?

我正在尝试通过 C# 连接到 SAP GUI。作为参考,我使用此处找到的代码:How do I Automation SAP GUI with c#

我添加了对 sapfewse.ocx 的引用和相应的 using 语句。这是我的代码:

using SAPFEWSELib;

private void OpenSAP()
{
    GuiApplication Application;
    GuiConnection Connection;
    GuiSession Session;
                        
    Application = (GuiApplication)System.Activator.CreateInstance(Type.GetTypeFromProgID("SapGui.ScriptingCtrl.1"));

    // How do I find the connection string that I use to connect to SAP?
    Connection = Application.OpenConnectionByConnectionString("XXXXXXXXX", false, true);
    Session = (GuiSession)Connection.Sessions.Item(0);

    Session.TestToolMode = 1;

    ((GuiTextField)Session.ActiveWindow.FindByName("RSYST-MANDT", "GuiTextField")).Text = "XXX";
    ((GuiTextField)Session.ActiveWindow.FindByName("RSYST-BNAME", "GuiTextField")).Text = "XXXXXXXX";
    ((GuiTextField)Session.ActiveWindow.FindByName("RSYST-BCODE", "GuiPasswordField")).Text = "XXXXXXXX";
    ((GuiTextField)Session.ActiveWindow.FindByName("RSYST-LANGU", "GuiTextField")).Text = "XX";            
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时出现错误

...连接中断

如何确定要使用的连接字符串正确?在哪里可以找到用于连接 SAP …

c# automation connection-string sap-gui

2
推荐指数
1
解决办法
1万
查看次数

Not able to bypass Run time error 619 in SAP GUI connection

I have a macro to download certain SAP GUI reports to Excel. My issue is that if I run the macro more than once in the same SAP GUI session (first time it works fine), I get this error which I am not able to bypass:

Run-time error 619

For some reason (I think it's related to which server the user is logged on to), the SAP ERP module (RE-FX) have two different variants/GUIs. Therefore, I have two different setups …

error-handling excel vba runtime-error sap-gui

2
推荐指数
1
解决办法
6596
查看次数

将特定单元格数据从 SAP GUI 获取到 Excel

我正在尝试使用 VBA 将 SAP GUI 中的一行中的特定单元格中的数据获取到 Excel 表中。当我录制一个单击我需要的 5-6 个项目的宏时,它只显示我单击了一个。此外,我看不到任何从单元格获取数据到 SAP GUI 的方法。SAP GUI 代码在这里:

Dim W_Ret As Boolean

W_Ret = Attach_Session
If Not W_Ret Then
    Exit Sub
End If

startrow = 10

On Error GoTo myerr

objSess.findById("wnd[0]").maximize
objSess.findById("wnd[0]/tbar[0]/okcd").Text = "/nymm_pricelist"
objSess.findById("wnd[0]").sendVKey 0
objSess.findById("wnd[0]/usr/ctxtS_MATNR-LOW").Text = Cells(currentline, 1).Value
objSess.findById("wnd[0]/usr/ctxtS_VKORG-LOW").Text = Cells(currentline, 4).Value
objSess.findById("wnd[0]/usr/ctxtS_VKORG-LOW").SetFocus
objSess.findById("wnd[0]/usr/ctxtS_VKORG-LOW").caretPosition = 4
objSess.findById("wnd[0]").sendVKey 8
Set myGrid = session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell")
Cells(currentline, 5).Value = myGrid.GetCellValue(0, "MAKTX")
Cells(currentline, 6).Value = myGrid.GetCellValue(0, "GLOBALSALES_KBETR")
Cells(currentline, 7).Value = myGrid.GetCellValue(0, "GLOBALSALES_KONWA")
Cells(currentline, 8).Value = myGrid.GetCellValue(0, …
Run Code Online (Sandbox Code Playgroud)

excel vba sap-gui

1
推荐指数
1
解决办法
2万
查看次数

在 VBA 中使用 SAP GUI 脚本时,如何在编码时查看 SAP GUI 对象属性 - 就像在 IntelliSense 中一样?

有没有办法查看 SAP GUI 对象的属性?

像这样:

工作簿对象的属性下拉列表

但对于如下 SAP 对象:

Set SAPGuiAuto = GetObject("SAPGUI")
Set App = SAPGuiAuto.GetScriptingEngine
Set Connection = App.Children(0)
Set SAPSession = Connection.Children(0)
Run Code Online (Sandbox Code Playgroud)

我在阅读这篇文章的答案的最后一部分后问这个问题:VBA General way for Pull data out of SAP

sapfewse.ocx但是,如果您想要使用早期绑定,以便 VBA 编辑器可以显示您正在使用的对象的属性和方法,则需要在 SAP GUI 安装文件夹中添加对的引用。

vba sap-gui

1
推荐指数
1
解决办法
1万
查看次数