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

2020-08-20 20:22发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)这不是很普通,但是使用ABAP语...

         点击此处--->   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
  • 语言:EN
  • 文本:组件允许调用DLL导出的函数

而且有必要使用regsvr32.exe dynwrapx.dll在客户端系统上注册DynamicWrapperX。

请看以下示例,使用USER32.DLL中的Windows函数有多么容易:

包括OLE2INCL。

 资料:IDY是TYPE I VALUE 6,
       IDNo类型i值7。

 数据:Win32 TYPE OLE2_OBJECT,
       退出TYPEI。

 创建对象Win32'DynamicWrapperX'。

 Win32"注册"的调用方法
   出口
     #1 ='user32.dll'
     #2 ='MessageBoxW'
     #3 ='i = hwwu'
     #4 ='r = l'。

 Win32的调用方法'MessageBoxW'= ret
   出口
     #1 = 0
     #2 =" Hello World"
     #3 ='测试'#4 = 4。

   如果ret = IDYes。
     写" Ja"。
   ELSEIF ret = ID号。
     写" Nein"。
   其他。
     写'?'。
   万一。

   免费对象Win32。

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

享受各种可能性。

7条回答
蓋茨
2020-08-20 20:45

非常感谢!

当方法必须返回值时,您可以显示示例吗?

例如:我需要使用一些AddInISC.dll。

在我们的项目中VB可以像这样工作:

设置DX = CreateObject(" DynamicWrapperX")

DX。注册" AddInISC.dll"," CalcRic"

_value = DX.CalcRic(" MANYSYMBOLS",0)

现在_value具有数据。

如何在ABAP中使用此示例?

我尝试在您的示例中使用,但是...我不知道我在哪里犯错。

创建对象Win32'DynamicWrapperX'。

Win32的调用方法'注册'
导出
#1 ='C:\ WINDOWS \ system \ AddInISC.dll'#2 ='CalcRic'。

Win32的调用方法' CalcRic'
EXPORTING
#1 ='MANYSYMBOLS'#2 = 0.

获取Win32'CalcRic'的属性= cik。


写:cik。 "这里什么也没有。

一周热门 更多>