JCo,BAPI(RFC)和Eclipse插件

2020-08-18 20:57发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用Eclipse 2020-03和最新的ABAP Core Development Tools等开发731 SP15 SAP系统。目标是创建一个Eclipse插件,该插件可以在后端调用RFC FM。 我不能使用克里斯蒂安·德鲁姆(Christian Drumm) 此处,因为我发布的版本不够高。

首先,我使用了HelloWorld模板,并将要显示在弹出窗口中的文本替换为通过RFC从后端检索的信息。 我已经在 JCo SAP帮助,但我无法使其正常工作。

在示例中,我们通过在文件系统中定义目的地来创建目的地。 另外,我们可以创建自己的DestinationDataProvider实现并进行注册。 我似乎遇到的问题是,在Eclipse环境中,ADT已注册了数据提供程序。 我已经研究过,但是找不到如何创建ABAP项目时ADT使用/创建的目的地的列表。

我不知道如何从项目中获取ADT 必须用于其所有工作的目标的名称。

  1. 是否可以从ABAP项目中获取目的地(与JCoDestinationManager.getDestination一起使用)
  2. 是否可以在当前DestinationDataProvider中查看注册的目的地?
  3. 是否可以向当前DestinationDataProvider中添加新目的地?

理想情况是:

 IProject项目= ProjectUtil.getActiveAdtCoreProject(selection,null,null,
 IAdtCoreProject.ABAP_PROJECT_NATURE);
 字符串projectDestinationName = someMethodThatGetsDestinationFrom(project);
 JCoDestination目标= JCoDestinationManager.getDestination(projectDestinationName); 

TL:DR能够使用ABAP项目存储的凭据从Eclipse中的插件调用RFC真是太好了。 有什么建议吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用Eclipse 2020-03和最新的ABAP Core Development Tools等开发731 SP15 SAP系统。目标是创建一个Eclipse插件,该插件可以在后端调用RFC FM。 我不能使用克里斯蒂安·德鲁姆(Christian Drumm) 此处,因为我发布的版本不够高。

首先,我使用了HelloWorld模板,并将要显示在弹出窗口中的文本替换为通过RFC从后端检索的信息。 我已经在 JCo SAP帮助,但我无法使其正常工作。

在示例中,我们通过在文件系统中定义目的地来创建目的地。 另外,我们可以创建自己的DestinationDataProvider实现并进行注册。 我似乎遇到的问题是,在Eclipse环境中,ADT已注册了数据提供程序。 我已经研究过,但是找不到如何创建ABAP项目时ADT使用/创建的目的地的列表。

我不知道如何从项目中获取ADT 必须用于其所有工作的目标的名称。

  1. 是否可以从ABAP项目中获取目的地(与JCoDestinationManager.getDestination一起使用)
  2. 是否可以在当前DestinationDataProvider中查看注册的目的地?
  3. 是否可以向当前DestinationDataProvider中添加新目的地?

理想情况是:

 IProject项目= ProjectUtil.getActiveAdtCoreProject(selection,null,null,
 IAdtCoreProject.ABAP_PROJECT_NATURE);
 字符串projectDestinationName = someMethodThatGetsDestinationFrom(project);
 JCoDestination目标= JCoDestinationManager.getDestination(projectDestinationName); 

TL:DR能够使用ABAP项目存储的凭据从Eclipse中的插件调用RFC真是太好了。 有什么建议吗?

付费偷看设置
发送
5条回答
Cikesha
1楼 · 2020-08-18 21:25.采纳回答

您可以使用

从项目中获取目标ID
字符串destinationId = com.sap.adt.project.AdtCoreProjectServiceFactory.createCoreProjectService()。getDestinationId(project);
 

然后,您应该能够直接与基础JCo目标一起使用

 JCoDestination目标= JCoDestinationManager.getDestination(destinationId); 
野沐沐
2楼-- · 2020-08-18 21:17

Hmm。 我将研究这种方法。

但是某个地方已经注册了DestinationDataProvider的实现-对我而言,这意味着在某个地方使用了JCo。

闻人可可
3楼-- · 2020-08-18 21:34

ADT的后端部分被建模为REST资源。 当连接到内部后端时,通过RFC/JCo访问这些资源

-

-当我连接到云后端时,通过HTTPS通过HTTPS访问这些资源

主要问题。

落灬小鱼
4楼-- · 2020-08-18 21:21

Armin Beil 谢谢。 确认一下,这是内部部署后端。

xfwsx85
5楼-- · 2020-08-18 21:10

这很不错。 有趣的是,我曾尝试过类似的方法,但无法使其正常工作。 我尝试了您的解决方案,但仍然无法正常工作……直到我实​​际上在Eclipse中打开了该项目。 因此,似乎目的地在打开之前尚未在JCo中注册。

在我的国防中,我期望的是

 IProject project = ProjectUtil.getActiveAdtCoreProject(selection,null,null,
 IAdtCoreProject.ABAP_PROJECT_NATURE);
 if(project == null){
 MessageDialog.openInformation(window.getShell(),"未选择","未选择ABAP项目");
 }其他{
 MessageDialog.openInformation(window.getShell()," Playground",getResult(project));
 } 

在尝试到达目的地之前就赶上了。

一周热门 更多>