SAP CALL FUNCTION

Sub Click(Source As Button)

Dim Funcs As Variant
Dim Connect As Variant
Dim RFCFunction As Variant
Dim Rows As Integer

Set Funcs = CreateObject("SAP.Functions")
Set Connect = Funcs.Connection

Connect.ApplicationServer = "10.17.15.36"
Connect.SystemNumber = "00"
Connect.System = "R/3"
Connect.Client = "800"
Connect.User = "INTERFACE"
Connect.Password = "MIS"
Connect.Language = "zh"

If Connect.Logon(0, True) = False Then
Msgbox "NO CONNET"
Exit Sub
End If

'得到一个RFC函数
Set RFCFunction = Funcs.Add("ZFEIS_GET_VENDOR_F")
'给这个RFC函数传参数
RFCFunction.exports("LIFNR") = "#ALL"


'运行这个RFC函数
If RFCFunction.Call = True Then

'得到RFC函数中生成的表的内容
Set Table = RFCFunction.TABLES("ZVENDOR")
Msgbox Table.RowCount
Call S_ImportToVendormas( Table )


Else
Msgbox "Call ERROR"
Exit Sub
End If

End Sub

******************************

Function F_GetRecord( Table,IntLoop,ValueTmp )
%REM
ValueTmp的格式
ValueTmp(0)----供应商编号
ValueTmp(1)----名称
ValueTmp(2)----代表名称
ValueTmp(3)----简称
ValueTmp(4)----邮编
ValueTmp(5)----公司电话
ValueTmp(6)----传真
ValueTmp(7)----Email地址
ValueTmp(8)----存款帐户
ValueTmp(9)----增值税登记号
ValueTmp(10)----银行代码
ValueTmp(11)----银行名称
ValueTmp(12)----街道
ValueTmp(13)----房号
ValueTmp(14)----销售员
ValueTmp(15)----联络电话
ValueTmp(16)----收付条件代码
ValueTmp(17)----收付条件描述
ValueTmp(18)----采购订单货币
ValueTmp(19)----国际贸易条件
ValueTmp(20)----国际贸易条件描述

%END REM

On Error Goto ErrorHandle

ValueTmp(0) = Table( IntLoop, "LIFNR" )
ValueTmp(1) = Table( IntLoop, "NAME1" )
ValueTmp(2) = Table( IntLoop, "J_1KFREPRE" )
ValueTmp(3) = Table( IntLoop, "SORTL" )
ValueTmp(4) = Table( IntLoop, "PSTLZ" )
ValueTmp(5) = Table( IntLoop, "TELF1" )
ValueTmp(6) = Table( IntLoop, "TELFX" )
ValueTmp(7) = Table( IntLoop, "SMTP_ADDR" )
ValueTmp(8) = Table( IntLoop, "KOINH" )
ValueTmp(9) = Table( IntLoop, "STCEG" )
ValueTmp(10) = Table( IntLoop, "BANKL" )
ValueTmp(11) = Table( IntLoop, "BANKA" )
ValueTmp(12) = Table( IntLoop, "STREET" )
ValueTmp(13) = Table( IntLoop, "HOUSE_NUM1" )
ValueTmp(14) = Table( IntLoop, "VERKF" )
ValueTmp(15) = Table( IntLoop, "TELF3" )
ValueTmp(16) = Table( IntLoop, "ZTERM" )
ValueTmp(17) = Table( IntLoop, "VTEXT" )
ValueTmp(18) = Table( IntLoop, "WAERS" )
ValueTmp(19) = Table( IntLoop, "INCO1" )
ValueTmp(20) = Table( IntLoop, "BEZEI" )

F_GetRecord = True
Exit Function

ErrorHandle:

F_GetRecord = False
Exit Function

End Function

**********************

Sub S_ImportToVendormas( Table)
%REM
ValueTmp的格式
ValueTmp(0)----供应商编号
ValueTmp(1)----名称
ValueTmp(2)----代表名称
ValueTmp(3)----简称
ValueTmp(4)----邮编
ValueTmp(5)----公司电话
ValueTmp(6)----传真
ValueTmp(7)----Email地址
ValueTmp(8)----存款帐户
ValueTmp(9)----增值税登记号
ValueTmp(10)----银行代码
ValueTmp(11)----银行名称
ValueTmp(12)----街道
ValueTmp(13)----房号
ValueTmp(14)----销售员
ValueTmp(15)----联络电话
ValueTmp(16)----收付条件代码
ValueTmp(17)----收付条件描述
ValueTmp(18)----采购订单货币
ValueTmp(19)----国际贸易条件
ValueTmp(20)----国际贸易条件描述
%END REM

Dim Session As New NotesSession
Dim DB As NotesDatabase
Dim Doc_Tmp As NotesDocument

Dim ValueTmp(20) As Variant

Set DB = Session.CurrentDatabase


Rows = Table.RowCount
Msgbox Rows

'Exit Sub
If Rows = 0 Then
Msgbox "找不到记录!"
Exit Sub
End If

For IntLoop = 1 To Rows

'得到表里面的一条记录
If F_GetRecord( Table,IntLoop,ValueTmp ) = True Then

If TmpLifnr <> "" Then
Call Doc_Tmp.ComputeWithForm( False, False )
Call doc_tmp.save(True,True)
End If


Set Doc_Tmp = DB.CreateDocument
Doc_Tmp.Form = "Vendormas"


Doc_Tmp.Code = ValueTmp(0)
Doc_Tmp.Name = ValueTmp(1)
Doc_Tmp.FirstPerson = ValueTmp(2)
Doc_Tmp.ShortName = ValueTmp(3)
Doc_Tmp.PostNumber = ValueTmp(4)
Doc_Tmp.CompanyTel = ValueTmp(5)
Doc_Tmp.Fax = ValueTmp(6)
Doc_Tmp.Email = ValueTmp(7)
Doc_Tmp.Count = ValueTmp(8)
Doc_Tmp.VAT_Resign_Number = ValueTmp(9)
Doc_Tmp.BankNumber = ValueTmp(10)
Doc_Tmp.BankName = ValueTmp(11)
Doc_Tmp.Street = ValueTmp(12)
Doc_Tmp.House = ValueTmp(13)
Doc_Tmp.Sales = ValueTmp(14)
Doc_Tmp.SalesTel = ValueTmp(15)
Doc_Tmp.PaymentKey = ValueTmp(16)
Doc_Tmp.PaymentKeyText = ValueTmp(17)
Doc_Tmp.Currency = ValueTmp(18)
Doc_Tmp.Incoterms = ValueTmp(19)
Doc_Tmp.IncotermsText = ValueTmp(20)

Else
Exit Sub

End If

TmpLifnr = ValueTmp(0)

Next

If Not Doc_Tmp Is Nothing Then
Call Doc_Tmp.ComputeWithForm( False, False )
Call doc_tmp.save(True,True)
End If


End Sub


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/617619/viewspace-224897/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/617619/viewspace-224897/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值