为了账号安全,请及时绑定邮箱和手机立即绑定

如何在C#中的SAP GUIContainerShell上设置当前单元格?

如何在C#中的SAP GUIContainerShell上设置当前单元格?

C#
开心每一天1111 2021-05-20 18:19:52
目前,我正在使用SAP GUI脚本使我的工作自动化,并且在尝试重新创建记录的宏时,我在某个特定点遇到了一个问题,该问题我不知道如何翻译。session.findById("wnd[0]/shellcont/shell/shellcont[1]/shell").setCurrentCell 1,"MAKTX2"session.findById("wnd[0]/shellcont/shell/shellcont[1]/shell").doubleClickCurrentCellsession.findById("wnd[1]/tbar[0]/btn[0]").press我已经阅读了SAP GUI Scripting API pdf,并且正在努力查看如何操作该.setCurrentCell 1,"MAKTX2"零件。我正在通过以下方式访问容器单元:GuiContainerShell materials = (GuiContainerShell)session.FindById("wnd[0]/shellcont/shell/shellcont[1]/shell");如何使“材料”双击“ MAKTX2”?编辑:完整的SAP GUI脚本:SapROTWr.CSapROTWrapper sapROTWrapper = new SapROTWr.CSapROTWrapper();object SapGuilRot = sapROTWrapper.GetROTEntry("SAPGUI");object engine = SapGuilRot.GetType().InvokeMember("GetScriptingEngine", System.Reflection.BindingFlags.InvokeMethod, null, SapGuilRot, null);GuiApplication GuiApp = (GuiApplication)engine;GuiConnection connection = (GuiConnection)GuiApp.Connections.ElementAt(0);GuiSession session = (GuiSession)connection.Children.ElementAt(0);GuiFrameWindow frame = (GuiFrameWindow)session.FindById("wnd[0]");GuiTextField jobsite = (GuiTextField)session.FindById("wnd[0]/usr/subSA_0100_1:SAPMZCX_CSDSLSBM5001_OFS_OTS:2410/subSA_2410_1:SAPMZCX_CSDSLSBM5001_OFS_OTS:2510/ctxtKUWEV-KUNNR");jobsite.Text = "I033";frame.SendVKey(0);GuiLabel aggregates = (GuiLabel)session.FindById("wnd[1]/usr/lbl[12,3]");aggregates.SetFocus();GuiFrameWindow frame2 = (GuiFrameWindow)session.FindById("wnd[1]");frame2.SendVKey(1);GuiContainerShell materials = (GuiContainerShell)session.FindById("wnd[0]/shellcont/shell/shellcont[1]/shell");
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

老实说,我无法为您提供C#的帮助,但也许SAP接口足够通用。session.findById("wnd[0]/shellcont/shell/shellcont[1]/shell")事实是,您可以引用GuiShell或GuiContainerShell类型的对象或任何被调用的对象。在此参考上,您可以调用为此类型定义的方法。因此,当您这样做时


session.findById("wnd[0]/shellcont/shell/shellcont[1]/shell").setCurrentCell 1,"MAKTX2"

您只需要先获得引用,然后setCurrentCell在同一行上应用该方法即可。


当您在C#中执行操作时


GuiContainerShell materials = (GuiContainerShell)session.FindById("wnd[0]/shellcont/shell/shellcont[1]/shell");

您给此引用起了一个名字materials,并提供了正确的行,我想您现在可以说:


materials.setCurrentCell(1, "MAKTX2")

materials.doubleClickCurrentCell


查看完整回答
反对 回复 2021-05-23
  • 1 回答
  • 0 关注
  • 393 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信