我已经有一些方法用于使用 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/