如題,最近要做個專案要pb做的系統跟SAP連接,請問哪位高手知道的,請賜教。。。。
uj5u.com熱心網友回復:
pb與SAP的連接oleObject i_ole_Conn,i_ole_FxnCtrl //用OLE定義物件
long ll_status //通過OLE建立的SAP函式成功或失敗 (0-成功,否則失敗)
boolean lb_logon //判斷登錄SAP成功或失敗 (true - 成功,false - 失敗)
i_ole_FxnCtrl = create oleobject
ll_status = i_ole_FxnCtrl.ConnectToNewObject ("sap.functions") //建立SAP連接物件
IF ll_status <> 0 THEN
gf_errmsg('創建SAP連接OLE出錯!錯誤代碼:'+string(ll_status))
destroy i_ole_FxnCtrl //釋放資源
return -1
End if
//設定連接引數
i_ole_Conn = i_ole_FxnCtrl.Connection()
i_ole_Conn.applicationserver = is_ipaddress //SAP服務器IP地址
i_ole_Conn.SYSTEMNUMBER = is_systemnumber //系統編號
i_ole_Conn.codepage = is_codepage //編碼
i_ole_Conn.client = is_client //集團
i_ole_Conn.user = is_userid //登錄帳號
i_ole_Conn.password = is_password //登錄密碼
i_ole_Conn.language = is_language //語言
i_ole_Conn.autologon = true
lb_logon = i_ole_Conn.Logon(0 , true) //自動建立連接
if not lb_logon then
messagebox('登錄失敗', '登錄服務器失敗,請檢查輸入專案是否正確,或與管理員聯系!',stopsign!)
destroy i_ole_FxnCtrl
else
messagebox('','連接成功!')
end if
uj5u.com熱心網友回復:
學習學習了!!!
uj5u.com熱心網友回復:
需要在呼叫的機器安裝sap gui 客戶端才行你是輸入引數還是獲取資料
uj5u.com熱心網友回復:
//以下是PB和SAP通訊 從sap下載資料oleobject saprfc,connection2,funct,table_d,functions,funct2,intab,categ,oline
long ll_status,result
long Row,i
saprfc = create oleobject
ll_status = saprfc.connecttonewobject("sap.functions")
connection2 = saprfc.connection
//服務器ip
connection2.applicationserver = "192.168.99.57"//"192.168.100.10"
//系統編號
connection2.systemnumber ='15'//'00'
//埠號
connection2.client ='210'//'800'
//用戶
connection2.user ='zhongy'//'orderin'
//密碼
connection2.password ='`123456'//'wlsl'
//登陸語言
connection2.language ='en'
if connection2.logon(0,true) = false then
messagebox('connet sap','connect failed')
end if
//調用z_mto_info
funct = create oleobject
//rfc函式名稱
funct = saprfc.add("Z_MTO_INFO")
//rfc輸入引數
funct.Exports("BSTNK").value=https://bbs.csdn.net/topics/ trim(sle_2.text)//"MF07BH06016RY#1" // 傳入引數
if funct.call() = false then //Call Rfc
messagebox('','Read bom call failed')
else
// 接收rfc回傳結果
Table_d = funct.tables.item('MTO');//output parameters
Row = Table_d.rows.count
st_6.text=""
for i=1 to Row
st_6.text=st_6.text+string(Table_d.value(i,1))+'--'+string(Table_d.value(i,2))+'--'+string(Table_d.value(i,3))+'--'+string(Table_d.value(i,4))+'--'+string(Table_d.value(i,5))+'--'+string(Table_d.value(i,6))+'--'+string(Table_d.value(i,7))+'--'+string(Table_d.value(i,8))+'--'+string(Table_d.value(i,9))+'~r~t'
next
messagebox('','Read bom call 成功,本次共獲取資料條數'+string(Row))
end if
/***************************************************************/
//以下是PB和SAP通訊 往sap上傳資料
oleobject saprfc,connection2,funct,table_d,functions,funct2,intab,categ,oline,addrow
Long ll_status,result
Long Row,i
String o_matnr
Boolean Sign
saprfc = Create oleobject
ll_status = saprfc.ConnectToNewObject("sap.functions")
connection2 = saprfc.connection
//服務器ip
connection2.applicationserver = "192.168.99.56" //"192.168.100.10"
//系統編號
connection2.systemnumber = '30' //'00'
//埠號
connection2.client = '500' //'800'
//用戶
connection2.user = 'neusoft' //'orderin'
//密碼
connection2.Password = '12345678' //'wlsl'
//登陸語言
connection2.language = 'en'
IF connection2.logon(0,True) = False THEN
MessageBox('connet sap','connect failed')
END IF
//調用z_mto_info
funct = Create oleobject
//rfc函式名稱
funct = saprfc.add("Z_FI_RFC_IFI003_001")
//要傳輸的sap表格
intab = funct.tables.Item("T_YFINVOICE")
//新增一行
addrow = intab.rows.add
//給行的每個欄位賦值
addrow.Value[1] = "0000001612"
addrow.Value[2] = "11111111"
addrow.Value[3] = "22222222"
addrow.Value[4] = "33333333"
addrow.Value[5] = "20061107"
addrow.Value[6] = "20061107"
addrow.Value[7] = "20061107"
addrow.Value[8] = "77777777"
addrow.Value[9] = "20070507"
//Call Rfc 回傳的錯誤資訊 :funct.exception
IF funct.Call() = False THEN
MessageBox('','Read bom call failed'+ String(funct.exception))
ELSE
// 接收rfc回傳結果 是否成功的標識
Sign = IsNull(funct.Imports.Item("E_RETURN"))
o_matnr = String(funct.Imports.Item("E_RETURN").Value) // 傳出引數
IF Sign = False THEN
IF o_matnr = 'E' THEN //失敗標識,
// 如果失敗接受回傳錯誤資訊的sap輸出表
table_d = funct.tables.Item('T_ERROR_LOG');
Row = table_d.rows.count
st_6.Text = ""
FOR i = 1 To Row
st_6.Text = st_6.Text+String(table_d.Value(i,10))
MessageBox(' 失敗','失敗原因'+st_6.Text)
NEXT
ELSE
MessageBox('','Read bom call 成功,本次共獲取資料條數'+o_matnr)
END IF
ELSE
MessageBox('','Read bom call 失敗')
END IF
END IF
uj5u.com熱心網友回復:
不好意思,最近很忙都沒來得及上論壇,請問ole控制元件要下載嗎,去哪里可以下載,還是注冊一個就好了,注冊的ole是哪個????
uj5u.com熱心網友回復:
請問你說的ole怎么獲取,我該到哪里去下載的???非常急
uj5u.com熱心網友回復:
需要sap的gui客戶端程式,安裝后,ole就已經注冊了,可以直接用,。不用下載專門的ole的
uj5u.com熱心網友回復:
SAP。學習。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/62193.html
標籤:基礎類
