Dodaj do ulubionych

RFC a EXCEL

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.
Obserwuj wątek
    • kbor VB dla excel 07.10.05, 11:50
      To niestety chyba trzeba w VB napisac.
      Tez by mi sie przydalo, a kiedys uzywalem :(
    • 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
    • gasecki Re: RFC a EXCEL 14.11.05, 13:16
      Troche sie tym bawie...
      moge cos podpowiedziec na PRIV

      Gonzul
      • 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

Nie masz jeszcze konta? Zarejestruj się


Nakarm Pajacyka