废话不多说,直接上。
鉴于abap调研的dll文件需要在wins注册,自己尝试过delphi和C#感觉不是很好,最后毅然选择了VB来写
因为需要用到MScomm控件,所以对于将要写的dll需要带form的,貌似这样才能将控件加到dll中来。
步骤:
1,新建dll程序,添加一个窗体
2,在from_load中初始化com口参数
| 1 2 3 4 5 6 7 8 | WithMSComm1        .CommPort = 1  '设置Com1为通信端口        .Settings = "1200,n,7,1"'设置通信端口参数 9600赫兹、偶校验、7个数据位、1个停止位.(这里需要进一步说明的是:.Setting=”BBBB,P,D,S”。        .InBufferSize = 16  '设置缓冲区接收数据为40字        .InputLen = 1  '设置Input一次从接收缓冲读取字节数为1        .RThreshold = 1  '设置接收一个字节就产生OnComm事件        .PortOpen = True EndWith | 
3,写对应的端口数据接受(因为之前用端口测试工具测试过传出的数据流,所以下面代码只是针对特定数据流的截取)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | OnErrorResumeNextIfMSComm1.CommEvent = comEvReceive Then  IfMSComm1.InBufferCount > 0 Then   Rx_buff = MSComm1.Input   IfRx_buff = "N"Thenstart = "S"   Constop = False   Fori = 0 ToUBound(Rx_buff)   Ifstart = "S"Then   send = send & Rx_buff   IfLen(send) > 17 Then   Text1.Text = CDbl(Mid(send, 8, 10))   start = "E"   MSComm1.PortOpen = False   EndIf   EndIf   Nexti  EndIfEndIf | 
4,在dll的class1中写函数啦
| 1 2 3 4 5 6 7 8 9 | PublicFunctionshow()Form1.str = "s"Form1.Caption = "连接状态"Form1.show vbModalEndFunctionPublicFunctionsget() AsStringsget = Form1.str & Form1.sendEndFunction | 
先调出窗口,再获取端口值
因为能力有限,在测试的时候无法将窗口隐藏而不影响到form_load的执行,所以,才有这个必须出现的窗口
好了,至此,一个带from的调用Mscomm控件的dll文件就写好了,
5,将dll文件保存到system32/syswow64下
运行cmd注册dll文件
6,abap调用
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | REPORT ZLYTEST_DLLTEST001.include ole2incl.data win32 type ole2_object.DATA SUM TYPE I.data label type string.create object win32 'lytest10.class1'.*create object win32 'TESTDLL'.call METHOD of win32 'show'.call method of win32 'sget'= label.*0Successful processing of the method meth.*1Communication Error to SAP GUI.*2Error when calling method meth.*3Error when setting a property.*4Error when reading a property.*write label. | 
至此,就将数据带回abap来了,然后怎么操作这个数,就看需求啦
    ^_^很多人都把资料锁进了note里,以后还怎么百度呢^_^
 
                    
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号