如何在ABAP程序中从客户端调用DLL函数

2021-09-06 11:59发布


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

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

ABAP语言中的DLL调用并不普通但很容易使用。Yuri Popov 编写了一个名为 DynamicWrapperX 的模块。它是一个 ActiveX 组件,允许通过 COM 调用您想要的 DLL 中的每个函数。一个很棒的模块,您可以在此处找到该模块

之前需要使用事务代码SOLE 在SAP 系统中注册OLE 应用程序DynamicWrapperX。输入:

  • OLE 应用程序:DynamicWrapperX

  • CLSID:{89565275-A714-4a43-912E-978B935EDCCC}

  • CLSID 类型库:{89565275-A714-4a43-912E-978B935EDCCC}

  • OLE 对象名称:DynamicWrapperX

  • 语言:英文

  • 文本:组件允许调用由 DLL 导出的函数

并且还需要在客户端系统上注册 DynamicWrapperX,使用 regsvr32.exe dynwrapx.dll。

看看下面的例子,使用来自 USER32.DLL 的 Windows 函数是多么容易:

INCLUDE OLE2INCL.DATA: IDYes TYPE i VALUE 6,
      IDNo TYPE i VALUE 7.DATA: Win32 TYPE OLE2_OBJECT,
      ret TYPE i.CREATE OBJECT Win32 'DynamicWrapperX'.CALL METHOD OF Win32 'Register'
  EXPORTING
    #1 = 'user32.dll'
    #2 = 'MessageBoxW'
    #3 = 'i=hwwu'
    #4 = 'r=l'.CALL METHOD OF Win32 'MessageBoxW' = ret  EXPORTING
    #1 = 0
    #2 = 'Hello World'
    #3 = 'Test'#4 = 4.

  IF ret = IDYes.
    WRITE 'Ja'.
  ELSEIF ret = IDNo.
    WRITE 'Nein'.
  ELSE.
    WRITE '?'.
  ENDIF.

  FREE OBJECT Win32.



重要提示:此方法仅适用于前台作业和在线进程,不适用于后台作业和批处理进程。

赞赏支持