【问题标题】:Is a library (with C programming language interface) callable from within ABAP?是否可以从 ABAP 中调用库(带有 C 编程语言接口)?
【发布时间】:2017-07-12 04:34:03
【问题描述】:

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

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

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

【问题讨论】:

  • 您想让 CPLEX Optimizer 在客户端机器还是服务器上运行=

标签: abap cplex


【解决方案1】:

您可以通过以下方式直接使用外部 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 代码,但这超出了您的问题范围。

【讨论】:

  • 好的,但看起来这个解决方案需要 DLL 来导出 COM 接口,对吧?它不适用于任何任意 DLL,不是吗?
  • 不需要任何 DLL、COM。看看this vulnerability 概念验证。
【解决方案2】:

是的,这是可能的,但只能在外部进行一些自己的开发。 例如,您可以通过 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 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多