java - 如何使用 Java 和 JNI 为 SAP-GUI 脚本的该部分创建方法?

标签 java activex sap-gui jacob

我已经有一些方法用于使用 Java 和 JACOB 库连接到 SAP GUI 脚本引擎 - 我不知何故无法再创建一种我想使用的方法。

我正在使用“PoojaGugu” https://github.com/PoojaGugu/SAP-GuiClient-Automation/blob/master/Java/library/src/main/java/com/library/generic/SAPGeneric.java 用于研究该案例。

我已经尝试复制一些方法并编辑其中的某些位置,尽管它不起作用。我无法为您提供示例。

所以让我来谈谈实际问题。我现在有很多 VBA 代码。我一直在摆弄 Java - 只是为了了解除了在 Excel 中制作宏之外的其他东西。我使用 VB 连接到 SAP 脚本引擎,只是为了自动化我所做的一些工作。我无法使用 Java&Jacob 制定正确的方法来专门执行此操作:

Set grid = session.FindById("wnd[0]/usr/cntlWC_INSP_CHAR/shellcont/shell")
grid.pressToolbarButton "&SORT_DSC"

这就是我的 Excel 宏中的样子,它可以工作。简化一下:

session.FindById("wnd[0]/usr/cntlWC_INSP_CHAR/shellcont/shell").pressToolbarButton "&SORT_DSC"

它正在 SapGrid 对象上按下一个带有 id &SORT_DSC 的按钮。但是使用前面提到的示例,我可以为您提供一种在完全相同的“网格”范围内的完全相同的显示(事务)上工作的方法:

 */SAPGuiGridSelectOrDeselectColumn
       * Objective - to  select or deselect the column  in the grid 
       * parameter  : partial id string , column name , SelectOrDeselect - Pass true to select column and false to Deselect the column
       * created by Venkata Siva kumar    
       */
      public void SAPGuiGridSelectOrDeselectColumn(String idstr, String column, boolean SelectOrDeselect) throws Exception
      {
         
          String id = getSAPObjectIDHelperMethod(getSession(), "ID", idstr, "", "");
          session = new ActiveXComponent(getSession().invoke("FindById",id).toDispatch());   
          if (SelectOrDeselect)
              Dispatch.call(session, "selectColumn", column);
         
          else
              Dispatch.call(session, "deselectColumn", column);
         
      }
      
      /*SAPGuiGridSelectOrDeselectColumn

此操作从同一页面上的表中选择列。为您提供有关我如何在 VBA 中执行此操作的图像:

grid.selectColumn "VARIANCE"

其中“网格”是前面提到的路径/对象地址。它选择一个名为“VARIANCE”的列,该列与我想要按 %SORT 按钮的 SapGuiGrid 范围相同。这个方法有效。

我想让我的方法基于此方法来单击我之前提到的按钮,但没有成功(老实说,不仅仅是该方法)。我该如何继续?

最佳答案

这是我想到的:

ActiveXComponent guiShellObject= new ActiveXComponent(Session.invoke("findById", "wnd[0]/usr/cntlWC_INSP_CHAR/shellcont/shell").toDispatch());
guiShellObject.invoke("pressToolbarButton", "&SORT_DSC");

这将取代:

session.FindById("wnd[0]/usr/cntlWC_INSP_CHAR/shellcont/shell").pressToolbarButton "&SORT_DSC"

上面的例子是不言自明的。我不知道如何做到这一点,直到我了解到我可以使用调用方法传递其他参数,而不仅仅是一个参数。

关于java - 如何使用 Java 和 JNI 为 SAP-GUI 脚本的该部分创建方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57030545/

相关文章:

java - Quartz JobDataMap 不适用于非原始类型

java - 在 Java/Android 中,为什么我能够从 ParcelFileDescriptor 获取整数文件描述符?

ubuntu - SAP 登录错误 - 详细信息 NiRClientHandle : route expected

excel - VBA Sap Scripting 打开或连接/保留在已打开的 session 窗口中

java - 使用 SQL Server sp_send_dbmail 从 java 发送电子邮件

java - 如何从单例 spring bean 内部访问 ServletRequest?

excel - ActiveX 控件是否被禁用?

c# - .NET WebBrowser 控件中的阻止对话框

javascript - 保存并退出 ActiveX 对象