wicom 06.10.05, 16:06 Mam prosbe, moze ma ktos akrusz excela (na wzor), w ktorym zaimplementowane jest polaczenie do SAP. - np dane z bseg, dane klienta itp. Z gory dziekuje za wszelka pomoc. Odpowiedz Link Obserwuj wątek Podgląd Opublikuj
kbor VB dla excel 07.10.05, 11:50 To niestety chyba trzeba w VB napisac. Tez by mi sie przydalo, a kiedys uzywalem :( Odpowiedz Link
migo_gi Re: RFC a EXCEL 10.10.05, 00:40 może poniższy kod VB w czymś pomoże 'SOURCE CODE ' Dim LogonControl Dim conn Dim funcControl Dim TableFactoryCtrl Dim RFC_READ_TABLE Dim eQUERY_TAB Dim TOPTIONS Dim TDATA Dim TFIELDS Private Sub Command1_Click() Set LogonControl = CreateObject("SAP.LogonControl.1") Set funcControl = CreateObject("SAP.Functions") Set conn = LogonControl.NewConnection conn.System = "XX" ' System ID istanza,di solito 0 conn.Client = "XXX" ' Client per logon to conn.Language = "EN" ' Lingua logon conn.User = "user" ' User ID conn.Password = "pwd" ' Password retcd = conn.Logon(0, False) If retcd <> True Then MsgBox " Cannot log on! " MsgBox retcd Stop Else MsgBox " Logon OK." End If funcControl.Connection = conn End Sub Private Sub Command2_Click() conn.logoff End Sub Private Sub Command3_Click() Const attachpath = "C:\Query.CSV" Set objFileSystemObject = CreateObject("Scripting.FileSystemObject") Set filOutput = objFileSystemObject.CreateTextFile(attachpath, True) Set RFC_READ_TABLE = funcControl.Add("RFC_READ_TABLE") Set strExport1 = RFC_READ_TABLE.Exports("QUERY_TABLE") Set strExport2 = RFC_READ_TABLE.Exports("DELIMITER") Set tblOptions = RFC_READ_TABLE.Tables("OPTIONS") Set tblData = RFC_READ_TABLE.Tables("DATA") Set tblFields = RFC_READ_TABLE.Tables("FIELDS") strExport1.Value = "MARC" strExport2.Value = "," ' (EQ means =, LT means <, GT means >) tblOptions.AppendRow tblOptions(1, "TEXT") = "WERKS EQ '" & InputBox("DIV ") & "'" tblFields.AppendRow tblFields(1, "FIELDNAME") = "MATNR" 'tblFields.AppendRow 'tblFields(2, "FIELDNAME") = "WERKS" 'tblFields.AppendRow 'tblFields(3, "FIELDNAME") = "NAME2" 'tblFields.AppendRow 'tblFields(4, "FIELDNAME") = "NAME3" 'tblFields.AppendRow 'tblFields(5, "FIELDNAME") = "NAME4" If RFC_READ_TABLE.Call = True Then If tblData.RowCount > 0 Then ' INTESTAZIONI filOutput.WriteLine "MAT,DIV" For intRow = 1 To tblData.RowCount filOutput.WriteLine tblData(intRow, "WA") Next MsgBox "COMPLETED SUCCESSFULLY" Else MsgBox "No records returned" End If Else MsgBox "ERROR CALLING SAP REMOTE FUNCTION CALL" End If End Sub Odpowiedz Link
gasecki Re: RFC a EXCEL 14.11.05, 13:16 Troche sie tym bawie... moge cos podpowiedziec na PRIV Gonzul Odpowiedz Link
vectra18 Re: RFC a EXCEL 21.11.05, 21:33 Witam Próbowałem za pomocą poniższego kodu połaczyć się z poziomu excela z SAPem Lecz w lini Set Functions = CreateObject("SAP.Functions") pojawia się błąd. Dodam że łączę się przez Citrixa Public Sub add_bdcdata(BdcTable As Object, program As String, dynpro As String, dynbegin As String, fnam As String, fval As String) Dim vField As Variant Static j As Integer j = j + 1 BdcTable.Rows.Add BdcTable.Value(j, "PROGRAM") = program ' Program Name BdcTable.Value(j, "DYNPRO") = dynpro ' Dynpro Number BdcTable.Value(j, "DYNBEGIN") = dynbegin ' X if a screen BdcTable.Value(j, "FNAM") = fnam ' Field Name BdcTable.Value(j, "FVAL") = fval ' Field Value End Sub Public Sub rfc_call_transaction() Dim Functions As Object Dim RfcCallTransaction As Object Dim Messages As Object Dim BdcTable As Object ' Create the Function control (that is, the high-level Functions collection): Set Functions = CreateObject("SAP.Functions") ' Set the rest of Connection object values: Functions.Connection.System = "denmark" Functions.Connection.client = "100" Functions.Connection.user = "SAP*" Functions.Connection.password = "" Functions.Connection.language = "EN" If Functions.Connection.Logon(0, False) <> True Then Exit Sub End If ' Retrieve the Function object (the Connection object must be set up before Function objects can be created): Set RfcCallTransaction = Functions.Add("RFC_CALL_TRANSACTION") ' Set the export parameters (here, get all customers whose names start with J): RfcCallTransaction.exports("TRANCODE") = "SE16" RfcCallTransaction.exports("UPDMODE") = "S" Set BdcTable = RfcCallTransaction.Tables("BDCTABLE") ' Set the tables parameter and add the data for the call transaction add_bdcdata BdcTable, "SAPLSETB", "230", "X", "", "" add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "DATABROWSE-TABLENAME" add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "=ANZE" add_bdcdata BdcTable, "", "", "", "DATABROWSE-TABLENAME", "KNA1" add_bdcdata BdcTable, "/1BCDWB/DBKNA1", "1000", "X", "", "" add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "MAX_SEL" add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "=ONLI" add_bdcdata BdcTable, "", "", "", "LIST_BRE", "250" add_bdcdata BdcTable, "", "", "", "MAX_SEL", "5" add_bdcdata BdcTable, "SAPMSSY0", "120", "X", "", "" add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "01/02/1962" add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "=%EX" add_bdcdata BdcTable, "/1BCDWB/DBKNA1", "1000", "X", "", "" add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "/EE" add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "I1-LOW" add_bdcdata BdcTable, "SAPLSETB", "230", "X", "", "" add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "/EBACK" add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "DATABROWSE-TABLENAME" ' Call the function (if the result is false, then display a message): If RfcCallTransaction.Call = True Then Set Messages = RfcCallTransaction.imports("MESSG") MsgBox Messages.Value("MSGTX") Else MsgBox " Call Failed! error: " + GetCustomers.Exception End If Functions.Connection.Logoff End Sub Pozdrawiam Tomek Odpowiedz Link