首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java和JNI为SAP-GUI脚本部分创建方法?

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

Stack Overflow用户
提问于 2019-07-15 03:37:08
回答 1查看 351关注 0票数 0

我已经有了一些方法,我正在使用Java和雅各布库连接到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和雅各布来创建一个合适的方法来具体地做这件事:

代码语言:javascript
复制
Set grid = session.FindById("wnd[0]/usr/cntlWC_INSP_CHAR/shellcont/shell")
grid.pressToolbarButton "&SORT_DSC"

这就是它在我的Excel宏中的样子,它是工作的。要简化它:

代码语言:javascript
复制
session.FindById("wnd[0]/usr/cntlWC_INSP_CHAR/shellcont/shell").pressToolbarButton "&SORT_DSC"

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

代码语言:javascript
复制
 */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中是如何做到这一点的:

代码语言:javascript
复制
grid.selectColumn "VARIANCE"

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-19 19:34:23

这是我想出来的:

代码语言:javascript
复制
ActiveXComponent guiShellObject= new ActiveXComponent(Session.invoke("findById", "wnd[0]/usr/cntlWC_INSP_CHAR/shellcont/shell").toDispatch());
guiShellObject.invoke("pressToolbarButton", "&SORT_DSC");

这将取代:

代码语言:javascript
复制
session.FindById("wnd[0]/usr/cntlWC_INSP_CHAR/shellcont/shell").pressToolbarButton "&SORT_DSC"

上面的例子是不言而喻的。我不知道该怎么做,直到我了解到我可以用invoke方法传递额外的参数,而不只是一个。

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

https://stackoverflow.com/questions/57030545

复制
相关文章

相似问题

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