是否可以从 ABAP 中调用库(具有 C 编程语言接口)?

Is a library (with C programming language interface) callable from within ABAP?

我没有 ABAP 编程经验,我想知道是否可以从 SAP 应用程序中调用具有 C 编程语言接口的第 3 方库。

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

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

是的,这是可能的,但需要在外部进行一些自己的开发。 例如,您可以通过 SAP 的 RFC 协议从 ABAP 寻址和调用外部程序。外部程序需要使用一些 SAP 连接器 SDK 来接收这样的远程函数调用。那么你自己的程序就可以为所欲为了,当然也可以使用一些其他的程序或者库。

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

  • 对于 Java:SAP Java 连接器 (JCo)
  • 对于 .NET:SAP .NET 连接器 (NCo)
  • 对于 C/C++:SAP NetWeaver RFC SDK (NW RFC SDK)

请参阅 https://support.sap.com/connectors 了解更多信息。

您可以通过以下方式直接使用外部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,它可以在客户端或应用程序服务器上注册(因此可以从任何客户端访问)。

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