点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)这不是很普通,但是使用ABAP语...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)这不是很普通,但是使用ABAP语...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
这不是很普通,但是使用ABAP语言进行DLL调用非常容易。 Yuri Popov编写了一个名为DynamicWrapperX的模块。 它是一个ActiveX组件,它允许通过COM调用所需的DLL中的每个函数。 很棒的模块,您可以在此处找到模块。
必须先使用事务代码SOLE在SAP系统中注册OLE应用程序DynamicWrapperX。 输入:
而且有必要使用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。
重要提示:该方法仅适用于前台作业和在线流程,不适用于后台作业和批处理流程。
享受各种可能性。
Hello Harjyot,
我展开了 COM(P4COM)库的指针。现在还可以在动态链接库中调用函数-不太舒服,但可以使用。
下面是一个示例:
"-开始-------------------------------------------- ---------
程序zPointOfSale。
"-类型池-------------------- ------------------------
类型池OLE2。
"-变量---- -----------------------------------------
数据点 键入OLE2_OBJECT。
数据TerminalID类型字符串值''。
数据ptrTerminalID类型i值0。
数据RetailerID类型字符串值"。
数据ptrRetailerID类型i值0。
数据hDLL类型i值0。
数据变量类型i值0。
数据ret类型i 值为0。
" -Main ------------------------------------- -------------
创建对象Ptr'P4Com'。
如果sy-subrc = 0且Ptr-Handle <> 0且
Ptr-Type ='OLE2'。
"-在内存中创建变量-------- ----------------
Ptr的调用方法'CreateVar'= ptrTerminalID
导出#1 ='TerminalID'#2 =' String'
#3 = 9。
Ptr的调用方法'CreateVar'= ptrRetailerID
导出#1 ='RetailerID'#2 ='String'
#3 = 17。
"-打开库-------------------------- --------
Ptr的调用方法'OpenLibrary'= hDLL
导出#1 ='C:\ Dummy \ POS.dll'。
如果hDLL <> 0和ptrTerminalID <> 0和
ptrRetailerID <> 0。
"-为函数调用创建堆栈---------- --------
Ptr的调用方法'CreateVar'= Vars
导出#1 ='Vars'#2 ='Array'#3 = 8/p>
如果Vars <> 0。
"-将变量压入堆栈-------------------
< > ""提示:顺序相反,因为它是
" Pascal调用约定
"
"- --------------------------------------------
Ptr'SetArrayLong'的调用方法
导出#1 ='Vars'#2 = 0
#3 = ptrRetailerID。
Ptr的调用方法' SetArrayLong'
导出#1 ='Vars'#2 = 4
#3 = ptrTerminalID。
"-调用库中的函数--- -----------
Ptr的调用方法'CallFunction'= ret
导出#1 = hDLL
#2 =' API_GETTERMINALPARAMS'
#3 = 2#4 =变量。
"-获取结果--------------------- ---------------
Ptr的调用方法'GetStringVar'=终端ID
导出#1 ='TerminalID'。
Ptr'Ge的调用方法 tStringVar'= RetailerID
导出#1 ='RetailerID'。
"-销毁堆栈-------------------- -------------
Ptr的调用方法'DestroyVar'= ret
导出#1 ='Vars'。
EndIf。
"-销毁变量-------------------------------
< p> Ptr的调用方法'DestroyVar'= ret导出#1 ='RetailerID'。
Ptr的调用方法'DestroyVar'= ret
导出 #1 ='TerminalID'。
"-关闭库-------------------------------
Ptr的调用方法'CloseLibrary'= ret
导出#1 = hDLL。
EndIf。
写入:/TerminalID。
写入:/RetailerID。
免费对象属性。
EndIf。
"-End -------- -----------------------------------------------
干杯
斯特凡
一周热门 更多>