我已经使用一些方法来使用Java和JACOB库连接到SAP Scripting Engine-我不知何故无法再使用一种方法。
我正在使用“ 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范围。该方法有效。
我想基于此方法创建我的方法,以单击前面提到的按钮,但没有成功(老实地说,不仅是该方法)。我该怎么办?
答案 0 :(得分:0)
这是我想出的:
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"
上面的例子很容易说明。我不知道该怎么做,直到我知道我可以使用invoke方法传递附加参数,而不仅仅是一个。