ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » SAP R/3 » 有关vb通过rfc函数插入数据到sap问题

标题: 有关vb通过rfc函数插入数据到sap问题
离线 mballack
初级会员



精华贴数 0
个人空间 0
技术积分 12 (79043)
社区积分 0 (1113408)
注册日期 2007-3-28
论坛徽章:0
      
      

发表于 2008-7-4 10:06 
有关vb通过rfc函数插入数据到sap问题

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strStatus, a As String
        Dim oConnection As Object
        Dim oFunction As Object
        Dim result As Single
        Dim ofun As Object
        Dim func As Object
        Dim date1 As Date
        '   Dim i As Integer
        '  Dim table1 As DataTable
        oFunction = CreateObject("SAP.LogonControl.1")
        oConnection = oFunction.NewConnection
        oConnection.Client = "600"
        oConnection.Language = "zh"
        oConnection.user = "****"
        oConnection.Password = "123456"
        oConnection.Applicati
        oConnection.SystemNumber = "00"
        result = oConnection.Logon(0, True)
        If result <> True Then
            oFunction = Nothing
            oConnection = Nothing
            strStatus = "No access to R/3 System"
        Else
            strStatus = "SAP R/3 Access OK "
        End If
        MsgBox(strStatus, , "LOGIN")
        ofun = CreateObject("SAP.FUNCTIONS") ' FUNCTION NAME
        ofun.Connection = oConnection
        func = ofun.Add("ZIT_RFC_ZJ_UPLOAD")


        date1 = "2008-07-02"
        If func.Call = True Then
           
                      func.Tables("QUALITY_LIST").appendrow
            func.Tables("QUALITY_LIST").value(1, "MANDT") = "600"
            func.Tables("QUALITY_LIST").value(1, "ZYBBH") = "20080703A4"
            func.Tables("QUALITY_LIST").value(1, "ZYBXH") = "0"
            func.Tables("QUALITY_LIST").value(1, "MATNR") = "000000007000000139"
            func.Tables("QUALITY_LIST").value(1, "WERKS") = "8300"
            func.Tables("QUALITY_LIST").value(1, "ZYPLY") = "1"
            func.Tables("QUALITY_LIST").value(1, "ZSCCJ") = "1"
            func.Tables("QUALITY_LIST").value(1, "ZQYDD") = "3工区"
            func.Tables("QUALITY_LIST").value(1, "ZQYR") = "吴雨1"
            func.Tables("QUALITY_LIST").value(1, "ZZHL") = "85"
            func.Tables("QUALITY_LIST").value(1, "ZHGZL") = "79"
            func.Tables("QUALITY_LIST").value(1, "MENGE") = "45"
            func.Tables("QUALITY_LIST").value(1, "ZHGSL") = "24"
            func.Tables("QUALITY_LIST").value(1, "ZXZRQ") = date1
                       func.Tables("QUALITY_LIST").value(1, "ZHYFHR") = "张兰2"
            func.Tables("QUALITY_LIST").value(1, "ZHYFHRQ") = date1
                        func.Tables("QUALITY_LIST").value(1, "ZDJ") = "合格"
            func.Tables("QUALITY_LIST").value(1, "ZPDR") = "刘龚"
            func.Tables("QUALITY_LIST").value(1, "ZPDRQ") = date1
                        func.Tables("QUALITY_LIST").value(1, "ZDJFHR") = "liuk"
            func.Tables("QUALITY_LIST").value(1, "ZFHRQ") = date1
                        func.Tables("QUALITY_DETAIL_LIST").appendrow
            func.Tables("QUALITY_DETAIL_LIST").value(1, "MANDT") = "600"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "ZYBBH") = "20080703A4"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "ZYBXH") = "0"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "MATNR") = "000000007000000139"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "WERKS") = "8300"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "ZJYZB") = "Al"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "ZDJ") = "合格"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "ZJYJG") = "99.99"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "ZHYDW") = "中心化验室2"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "ZHYR") = "梁山9"
            func.Tables("QUALITY_DETAIL_LIST").value(1, "ZHYRQ") = date1
           
            a = func.imports("SUBRC").value.ToString
            MsgBox(a)
        Else
            MsgBox("Call ERROR")
        End If
        MsgBox("END PROCESS", , "END")
    End Sub
以上代码正确运行,
但返回值SUBRC为4,表示插入数据失败
请问各位大大,我的  func.Tables("QUALITY_DETAIL_LIST").appendrow这样的语句正确吗
是不是表示新增一行呢,还是其他的代码有问题
但是以上相似代码在delphi运行成功插入数据


只看该作者    顶部
离线 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40496 (18)
社区积分 10921 (143)
注册日期 2005-6-10
论坛徽章:80
现任管理团队成员开发板块每日发贴之星生肖徽章2007版:猪开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
      

发表于 2008-7-4 10:19 
不行,那就换个写法嘛


__________________
只看该作者    顶部
离线 mballack
初级会员



精华贴数 0
个人空间 0
技术积分 12 (79043)
社区积分 0 (1113408)
注册日期 2007-3-28
论坛徽章:0
      
      

发表于 2008-7-4 10:41 
应该怎么写呢
func.Tables("QUALITY_DETAIL_LIST").rows.add()也不行


只看该作者    顶部
离线 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40496 (18)
社区积分 10921 (143)
注册日期 2005-6-10
论坛徽章:80
现任管理团队成员开发板块每日发贴之星生肖徽章2007版:猪开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
      

发表于 2008-7-4 11:09 
那些api没解释吗?


__________________
只看该作者    顶部
离线 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40496 (18)
社区积分 10921 (143)
注册日期 2005-6-10
论坛徽章:80
现任管理团队成员开发板块每日发贴之星生肖徽章2007版:猪开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
      

发表于 2008-7-4 11:09 
或者看个demo也行啊


__________________
只看该作者    顶部
离线 mballack
初级会员



精华贴数 0
个人空间 0
技术积分 12 (79043)
社区积分 0 (1113408)
注册日期 2007-3-28
论坛徽章:0
      
      

发表于 2008-7-4 11:42 
没有看到有插入数据的demo,取数的到不少


只看该作者    顶部
离线 mballack
初级会员



精华贴数 0
个人空间 0
技术积分 12 (79043)
社区积分 0 (1113408)
注册日期 2007-3-28
论坛徽章:0
      
      

发表于 2008-7-4 17:07 
不好意思,自己已解决
func.Tables("QUALITY_LIST").rows.add()
还增加了一个比输入项忘了赋值


只看该作者    顶部
离线 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40496 (18)
社区积分 10921 (143)
注册日期 2005-6-10
论坛徽章:80
现任管理团队成员开发板块每日发贴之星生肖徽章2007版:猪开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
      

发表于 2008-7-4 18:04 


QUOTE:
原帖由 mballack 于 2008-7-4 17:07 发表
不好意思,自己已解决
func.Tables("QUALITY_LIST".rows.add()
还增加了一个比输入项忘了赋值




__________________
只看该作者    顶部
离线 ryq0000
大庆


精华贴数 0
个人空间 50
技术积分 4662 (291)
社区积分 47835 (12)
注册日期 2004-11-19
论坛徽章:103
2008北京奥运纪念徽章:羽毛球2008北京奥运纪念徽章:自行车2008北京奥运纪念徽章:射箭2008北京奥运纪念徽章:击剑2008北京奥运纪念徽章:垒球体育版块博采纪念徽章
2008北京奥运纪念徽章:足球生肖徽章:猪生肖徽章:猪生肖徽章:猪生肖徽章:猪生肖徽章:猪

发表于 2008-7-4 19:10 


QUOTE:
原帖由 mballack 于 2008-7-4 17:07 发表
不好意思,自己已解决
func.Tables("QUALITY_LIST").rows.add()
还增加了一个比输入项忘了赋值

原来如此。


__________________
只看该作者    顶部
离线 bbqtifftiff



精华贴数 0
个人空间 0
技术积分 8 (121144)
社区积分 0 (1816908)
注册日期 2008-7-10
论坛徽章:0
      
      

发表于 2008-7-10 13:53 
请问如果我不是新建而是修改SAP里的数据,也是用rows.add吗? 下面是我的VB脚本,没有任何报错发生, 但是SAP里的数据没有更改到。

Set Functions = CreateObject("SAP.LogonControl.1")
Set Connect = Functions.NewConnection

  Connect.ApplicationServer = myserver
  Connect.SystemNumber = "00"
  Connect.User = "srm"
  Connect.Password = "*****"
  Connect.Client = "200"
  Connect.Language = "ZH"
  
  If Connect.Logon(0, True) = False Then
          MsgBox "SAP Connection Fail"
          Functions = Nothing
          Connect = Nothing
          Exit Sub
  End If


    Set SAPFunction = CreateObject("SAP.Functions")
    Set SAPFunction.Connection = Connect
   
    Set oFunc = SAPFunction.Add("Z_SRM_IMP_VENDOR_LIST")
   
    Debug.Print (sSAPResult)
    If oFunc.Call = True Then
        
        '更新供应商信息
        oFunc.Tables("IN_VENDOR").Rows.Add
        oFunc.Tables("IN_VENDOR").Value(1, "LIFNR") = "Y-999" ' 供应商Y-999已经存在于SAP里了        
        oFunc.Tables("IN_VENDOR").Value(1, "NAME1") = "abc"
        oFunc.Tables("IN_VENDOR").Value(1, "TEL_NUMBER") = "11111"
        oFunc.Tables("IN_VENDOR").Value(1, "MOB_NUMBER") = "2222222"
        oFunc.Tables("IN_VENDOR").Value(1, "FAX_NUMBER") = ""
        oFunc.Tables("IN_VENDOR").Value(1, "SMTP_ADDR") = "abc@hotmail.com"
        oFunc.Tables("IN_VENDOR").Value(1, "NAME_TEXT") = "Tiffany 234"
   
        sSAPResult = oFunc.Imports("EX_Message") ' 执行过后没有任何值返回,也没有错误信息
        
    Else
        sSAPResult = "SAP call failed"
    End If
        
     MsgBox (sSAPResult)


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问