高手们,如何在PB里通过调用RFC来读/写SAP里的数据???(给出可运行代码者100分相送,不够再加)

时间:2021-08-28 21:26:55
我从VB里到一个代码转到PB里但是只可以连接,VB代码如下:
谁能给出PB下可执行的读写SAP里数据的100分相送,不够再加。
顶者有分啊!

   Dim myfields As myfields
   myfields.FIELDNAME = "aufnr"
   Set oFunction = CreateObject("SAP.LogonControl.1")
   Set oConnection = oFunction.NewConnection
   oConnection.Client = "300"
   oConnection.Language = "ZH"
   oConnection.User = "*******
   oConnection.password = "******
   oConnection.ApplicationServer = "192.168.0.1
   oConnection.SystemNumber = "00"
   result = oConnection.Logon(0, True)
   Set ofun = CreateObject("SAP.FUNCTIONS")
   Set ofun.Connection = oConnection
   Set FUNC = ofun.Add("RFC_READ_TABLE")
   FUNC.Exports("QUERY_TABLE") = "MAKT"
   If FUNC.Call = True Then
    Set oline = FUNC.tables.Item("DATA")
    Row = oline.rowcount
     ll = MsgBox(Row, vbCritical, "提示:表CSKT中的记录数目为:")
    i = 1
    Top = Row
    If Top > 100 Then Top = 10
    Do While i <= Top
        MsgBox Mid(oline.Value(i, 1), 19, 8)
        i = i + 1
      Loop
   End If
但是,but 我想把代码转成pb的代码只能运行到链接成功这里:

OLEObject o_object
OLEObject o_connection
OLEObject o_function
OLEObject func

boolean sign, lb_return
any o_matnr

o_object = create oleobject
o_object.ConnectToNewObject("SAP.LogonControl.1")
o_connection = o_object.NewConnection
o_connection.Language = "ZH"
o_connection.User = "******
o_connection.Password = "******
o_connection.Client = "300"
o_connection.ApplicationServer = "192.168.0.1"
o_connection.SystemNumber = "00"
sign = o_connection.Logon(0 , true)
if sign = false then
MessageBox("Error!","login SAP error :(")
   o_connection.logoff
   destroy o_connection
   o_object.disconnectobject()
   destroy o_object
return
end if
sle_1.text = "login SAP OK!"

o_function = create OLEobject
o_function.ConnectToNewObject("SAP.Functions")
o_function.Connection = o_connection

func = create oleobject
func = o_function.Add("RFC_READ_TABLE")
func.Exports("QUERY_TABLE")
//func.Tables("OPTIONS").DATA = "SPRAS = '1'"
func.Exports.item[1] = "MAKT"    // 传入参数
lb_return = func.Call()
if lb_return = true then
sign = isnull(func.Imports.item[1])
o_matnr = String(func.Imports.Item[7].value) // 传出参数
   if sign = false then
  sle_1.text = "function Execute succeed :" + o_matnr
else
  sle_1.text = "func.Imports.item[15] is null"
end if
else
MessageBox("Error!","function Return No Data :(")
sle_1.text = "function Return No Data :(" + func.name
end if

destroy func
o_function.disconnectobject()
destroy o_function
o_connection.logoff
destroy o_connection
o_object.disconnectobject()
destroy o_object

3 个解决方案

#1


自已顶

#2


帮你顶

#3


我也帮你顶

#1


自已顶

#2


帮你顶

#3


我也帮你顶