2017-02-22 23 views
4

我对ABAP编程没有经验,我想知道是否可以在SAP应用程序中使用C编程语言接口调用第三方库。是从ABAP内部调用的库(带有C编程语言接口)吗?

更确切地说,目标是在SAP应用程序内部使用IBM CPLEX Optimizer(在本地计算机上运行)。 Optimizer是一个库,具有适用于C++,Java和.NET(C#,VB.NET)的API。我想这是一个DLL文件。

那么你能告诉我是否可以从ABAP应用程序中调用DLL的功能吗?

+0

你想让CPLEX Optimizer在客户端机器上运行吗?或者服务器= – vwegert

回答

7

您可以在以下方式直接使用外部DLL:

DATA: cmp_dll TYPE ole2_object. 
CREATE OBJECT cmp_dll 'COMPANY.STOCK_DLL'. 
CALL METHOD OF cmp_dll 'check_order' = order 
EXPORTING p_num = 'number' 
      p_date = 'date' 
      p_vendor = 'vendor'. 

在此之前,你应该在SOLE交易注册DLL,它可以注册任何应用程序服务器上的客户端或(并因此从访问任何客户)。

更好的选择可能是RFC包装,由Trixx提到。
也可以通过SXPG_COMMAND_EXECUTE直接在AS上运行C代码,但这不在您的问题的范围之内。

+0

好的,但它看起来像这个解决方案需要DLL导出COM接口,对吗?它不适用于任何任意的DLL,是吗? – Lanzelot

4

是的,这是可能的,但只有在外部一些自己的发展。 例如,您可以通过SAP的RFC协议寻址并呼叫来自ABAP的外部程序。外部程序需要使用一些SAP Connector SDK来接收这样的远程函数调用。然后你自己的程序可以做你想做的任何事情,当然也可以使用其他程序或库。

SAP提供这些RFC连接器的SDK用于各种编程语言和运行环境:

  • 为Java:SAP Java连接器(JCO)
  • 为.NET:在SAP .NET连接器(NCO)
  • 为C/C++:在SAP NetWeaver RFC SDK(NW RFC SDK)

请参阅http://service.sap.com/connectors进一步的信息。