ActiveX组件SAP。具有导出参数结构表的功能

2020-08-16 16:41发布

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

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


我使用VBA程序连接到SAP系统并执行FM。 功能模块具有以下接口:

 *" -------------------------------------------------  -------------------------
 *" *"本地接口:
 *"正在导入
 *" VALUE(I_RNG_ZSNR)TYPE/GKV/BP01_TAB_RNG_ZSNR
 *"汇出
 *" VALUE(E_TAB_FKZS)TYPE/GKV/BP01_TAB_D_FKZS
 *" ------------------------------------------------  ----------------------
 

导入参数是一个结构表:

设置导出参数I_RNG_ZSNR的正确方法是什么?

这是我的VBA代码:

显式选项

子测试()
   昏暗的功能作为SAPFunctions
   Dim Conn作为SAPLogonCtrl.Connection
   暗淡为SAPFunctionsOCX.Function
   暗淡X作为对象
   暗行作为对象
   暗淡如久
  
   设置Func = CreateObject(" SAP.Functions.Unicode")
   如果IsObject(Func)然后
     设置Conn =函数连接
    
     Conn.Client =" 001"
     Conn.User =" BCUSER"
     Conn.Language =" EN"
     Conn.HostName =" NSP"
     Conn.SystemNumber = 0
    
     如果没有Conn.Logon(0,False)然后
       Debug.Print"连接不成功"
     其他
       Debug.Print"连接成功"
      
       设置f = Func.Add("/img/GKV/BP01_K_FKZS_MASS_READ")
       如果IsObject(f)然后
      
         设置X = f.Exports(" I_RNG_ZSNR")
        
         设置行= X.AppendRow
         '错误:对象不支持此属性或方法
         ``这似乎不是桌子
         row.Cell(1," SIGN")=" I"
         row.Cell(1," OPTION")=" EQ"
         row.Cell(1," LOW")=" 10600035"
       
         Ret = f.Call
          
       万一
      
       退出连接
     万一
  
     设置功能=无
   万一
 结束子
 

使用COMConnector(CCo),它可以完美运行:

显式选项

 子CCoTest()
   '-变量-----------------------------------------------  ------------
     昏暗的SAP作为CCo.COMNWRFC
     尽可能昏暗的hRFC
     Dim rc作为整数
     昏暗的hFunc
     昏暗的hFuncDesc长
     尽可能长的Dim hTable
     昏暗的行
     昏暗的hExpTable只要长
     昏暗的我,RowCount长
     Dim charBuffer作为字符串
   设置SAP = CreateObject(" COMNWRFC")
   如果IsObject(SAP)然后
  
     hRFC = SAP.RFCOPENCONNECTION(" ASHOST = NSP,SYSNR = 00,"&_
       " CLIENT = 001,USER = BCUSER")
     如果hRFC然后
        
       hFuncDesc = SAP.RFCGETFUNCTIONDESC(hRFC,"/img/GKV/BP01_K_FKZS_MASS_READ")
       如果hFuncDesc然后
         hFunc = SAP.RFCCREATEFUNCTION(hFuncDesc)
         如果hFunc然后
           SAP.RFCGETTABLE hFunc," I_RNG_ZSNR",hTable
           如果hTable然后
             hRow = SAP.RFCAPPENDNEWROW(hTable)
             SAP.RFCSETCHARS hRow,"符号"," I"
             SAP.RFCSETCHARS hRow," OPTION"," EQ"
             SAP.RFCSETCHARS hRow,"低"," 10600035"
             如果SAP.RFCINVOKE(hRFC,hFunc)= RFC_OK然后
               SAP.RFCGETTABLE hFunc," E_TAB_FKZS",hExpTable
               如果hExpTable然后
                 SAP.RFCGETROWCOUNT hExpTable,RowCount
                 SAP.RFCMOVETOFIRSTROW hExpTable
                 对于i = 1到RowCount
                   hRow = SAP.RFCGETCURRENTROW(hExpTable)
                   charBuffer =空间(512)
                   SAP.RFCGETCHARS hRow," NAME1",charBuffer,512
                   Debug.Print charBuffer
                   如果我
   

如何使用SAP ActiveX控件设置导出参数?

感谢提示和提示。

952672-unbenannt1.jpg (39.7 kB)

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

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


我使用VBA程序连接到SAP系统并执行FM。 功能模块具有以下接口:

 *" -------------------------------------------------  -------------------------
 *" *"本地接口:
 *"正在导入
 *" VALUE(I_RNG_ZSNR)TYPE/GKV/BP01_TAB_RNG_ZSNR
 *"汇出
 *" VALUE(E_TAB_FKZS)TYPE/GKV/BP01_TAB_D_FKZS
 *" ------------------------------------------------  ----------------------
 

导入参数是一个结构表:

设置导出参数I_RNG_ZSNR的正确方法是什么?

这是我的VBA代码:

显式选项

子测试()
   昏暗的功能作为SAPFunctions
   Dim Conn作为SAPLogonCtrl.Connection
   暗淡为SAPFunctionsOCX.Function
   暗淡X作为对象
   暗行作为对象
   暗淡如久
  
   设置Func = CreateObject(" SAP.Functions.Unicode")
   如果IsObject(Func)然后
     设置Conn =函数连接
    
     Conn.Client =" 001"
     Conn.User =" BCUSER"
     Conn.Language =" EN"
     Conn.HostName =" NSP"
     Conn.SystemNumber = 0
    
     如果没有Conn.Logon(0,False)然后
       Debug.Print"连接不成功"
     其他
       Debug.Print"连接成功"
      
       设置f = Func.Add("/img/GKV/BP01_K_FKZS_MASS_READ")
       如果IsObject(f)然后
      
         设置X = f.Exports(" I_RNG_ZSNR")
        
         设置行= X.AppendRow
         '错误:对象不支持此属性或方法
         ``这似乎不是桌子
         row.Cell(1," SIGN")=" I"
         row.Cell(1," OPTION")=" EQ"
         row.Cell(1," LOW")=" 10600035"
       
         Ret = f.Call
          
       万一
      
       退出连接
     万一
  
     设置功能=无
   万一
 结束子
 

使用COMConnector(CCo),它可以完美运行:

显式选项

 子CCoTest()
   '-变量-----------------------------------------------  ------------
     昏暗的SAP作为CCo.COMNWRFC
     尽可能昏暗的hRFC
     Dim rc作为整数
     昏暗的hFunc
     昏暗的hFuncDesc长
     尽可能长的Dim hTable
     昏暗的行
     昏暗的hExpTable只要长
     昏暗的我,RowCount长
     Dim charBuffer作为字符串
   设置SAP = CreateObject(" COMNWRFC")
   如果IsObject(SAP)然后
  
     hRFC = SAP.RFCOPENCONNECTION(" ASHOST = NSP,SYSNR = 00,"&_
       " CLIENT = 001,USER = BCUSER")
     如果hRFC然后
        
       hFuncDesc = SAP.RFCGETFUNCTIONDESC(hRFC,"/img/GKV/BP01_K_FKZS_MASS_READ")
       如果hFuncDesc然后
         hFunc = SAP.RFCCREATEFUNCTION(hFuncDesc)
         如果hFunc然后
           SAP.RFCGETTABLE hFunc," I_RNG_ZSNR",hTable
           如果hTable然后
             hRow = SAP.RFCAPPENDNEWROW(hTable)
             SAP.RFCSETCHARS hRow,"符号"," I"
             SAP.RFCSETCHARS hRow," OPTION"," EQ"
             SAP.RFCSETCHARS hRow,"低"," 10600035"
             如果SAP.RFCINVOKE(hRFC,hFunc)= RFC_OK然后
               SAP.RFCGETTABLE hFunc," E_TAB_FKZS",hExpTable
               如果hExpTable然后
                 SAP.RFCGETROWCOUNT hExpTable,RowCount
                 SAP.RFCMOVETOFIRSTROW hExpTable
                 对于i = 1到RowCount
                   hRow = SAP.RFCGETCURRENTROW(hExpTable)
                   charBuffer =空间(512)
                   SAP.RFCGETCHARS hRow," NAME1",charBuffer,512
                   Debug.Print charBuffer
                   如果我
   

如何使用SAP ActiveX控件设置导出参数?

感谢提示和提示。

952672-unbenannt1.jpg (39.7 kB)
付费偷看设置
发送
4条回答
Doze时光
1楼-- · 2020-08-16 17:08

史蒂芬,你好

我遇到了同样的问题,您解决了吗?如果可以,我们可以分享吗

致谢

tangjing

路亽曱_Ryan
2楼-- · 2020-08-16 17:04

唐ello,

非常感谢您的答复和测试结果。

所以我看到的唯一方法似乎是

干杯

斯特凡

N-Moskvin
3楼-- · 2020-08-16 17:08

嗨斯特凡,

您应该将导出参数结构的value属性与适当的索引一起使用-列位置。 所以应该像这样:

设置X = f.Exports(" I_RNG_ZSNR")

X.Value(1)=" I"'签名

X.Value(2)=" EQ"'选项

X.Value(3)=" 10600035"'低

Ret = f.Call


也可以用相同的方法读取导入的结构。 我不确定是否可以使用X.Value(" SIGN")之类的命名引用。 您可以尝试一下,让我们知道。

此致

Seby

蓋茨
4楼-- · 2020-08-16 17:14

您好Stefan,

我先前的建议可能对返回的导入参数起作用。 我认为在您的情况下,由于导出的参数是一个结构,因此在使用它之前,我们需要使用连接对象方法使用正确的结构创建它。

将X视作对象

设置X = Conn.CreateStructure("/img/GKV/BP01_TAB_RNG_ZSNR")

X(" SIGN")=" I"

X(" OPTION")=" EQ"

X(" LOW")=" 10600035"

X(" HIGH")=""

...

选中此选项一次,让我知道。

此致

塞比

一周热门 更多>