ePrivacy and GPDR Cookie Consent by Cookie Consent
Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden oder Registrieren.

Mitteilung

Icon
Error

Optionen
Gehe zum aktuellsten Beitrag Gehe zum letzten Ungelesenen
Offline zero88  
#1 Geschrieben : Dienstag, 10. Mai 2022 12:59:07(UTC)
zero88

Beiträge: 2
Germany
Wohnort: Konstanz
Hallo Zusammen

Ich habe ein VBA Code geschrieben mit denen ich gerne über den FUBA: RFC_READ_TABLE daten lesen möchte.

Zitat:
Sub RFCReadTable()


' https://www.linkedin.com...rom-ms-excel-erkan-kopuz
' https://saplsmw.com/Impo...cess_from_SAP_using_RFCs
' http://sapass.metro.clie...X/UseFunctionControl.htm
Set oSap = CreateObject("SAP.Functions")
oSap.Connection.ApplicationServer = "**" ' IP des Appl-Servers (SM51->Details)
oSap.Connection.SystemNumber = "**" ' Systemnummer, meißt im Namen des Appl-Servers enthalten
oSap.Connection.System = "**" ' Entwicklungs-, Test-, Produktivsystem
oSap.Connection.Client = "**" ' Mandant
oSap.Connection.Language = "**" ' Sprache "EN", "DE" ...
oSap.Connection.User = "**" ' SAP-User
oSap.Connection.Password = "**" ' SAP-Passwort
oSap.Connection.UseSAPLogonIni = False

' RFC-Login, wobei
' Logon(0, False): Logon-Fenster anzeigen
' Logon(0, True): Silent logon, Passwort muss gesetzt sein
If oSap.Connection.Logon(0, True) = True Then
Dim oFuBa As Object

' FuBa RFC_READ_TABLE abfragen
Set oFuBa = oSap.Add("RFC_READ_TABLE")

' EXPORTING
Set e_query_table = oFuBa.Exports("QUERY_TABLE")
Set e_delimiter = oFuBa.Exports("DELIMITER")
Set e_rowCount = oFuBa.Exports("ROWCOUNT")

e_query_table.Value = "AFRU" ' Tabelle AFRU
e_delimiter.Value = ";" ' Spalten mit ";" getrennt
e_rowCount.Value = "0" ' max. 100 Datensätze lesen, 0 = alle

' TABLES
Set t_options = oFuBa.Tables("OPTIONS")
Set t_fields = oFuBa.Tables("FIELDS")


' WHERE-Bedingung
t_options.AppendRow
' t_options(1, "TEXT") = "TDOBJECT EQ 'TEXT'"
t_options(1, "TEXT") = "AUFNR EQ '000001228621' AND ISM02 > '0'"

' Welche Spalten sollen gelesen werden
t_fields.AppendRow
t_fields(1, "FIELDNAME") = "AUFNR"
t_fields.AppendRow
t_fields(2, "FIELDNAME") = "RUECK"
t_fields.AppendRow
t_fields(3, "FIELDNAME") = "ISM02"
t_fields.AppendRow
t_fields(4, "FIELDNAME") = "PERNR"

If oFuBa.Call = True Then
' Schnittstellenparameter "TABLES-DATA" holen
' Rückgabe in Excel-Sheet einfügen

Dim iRow As Integer
iRow = 1


Set t_data = oFuBa.Tables("ET_DATA")


' Rückgabemenge beinhaltet Strings, die mit dem festgelegten Separator ";" getrennt sind
For Each Row In t_data.Rows

' Spalten einer Datenzeile anhand des Separators ";" aufsplitten
Dim vFields As Variant
vFields = Split(t_data.Rows(1), ";")

' Inhalt der Spalten in die Zellen schreiben
For iCol = LBound(vFields) To UBound(vFields)
ActiveWorkbook.Sheets(1).Cells(iRow, iCol + 1) = Trim(vFields(iCol))
Next iCol

iRow = iRow + 1
Next
Else
' Exception?
MsgBox oFuBa.Exception
End If

' Logoff
oSap.Connection.logoff

Else
' Kein Login möglich
MsgBox "Login fehlgeschlagen."
End If

End Sub


Das Problem ist das ich die Daten nicht in Data bekomme sondern in ET_Data.
Leider funktioniert der Code nicht wenn ich es in ET_DATA ändere.

Kann mir jemand helfen?
Jobangebote

Nehmen Sie an dieser Diskussion teil! SAP FORUM - SAP Community LoginHier registrieren.

Offline Alpmann  
#2 Geschrieben : Dienstag, 10. Mai 2022 21:01:33(UTC)
Alpmann

Beiträge: 243
Hallo zero88,

ich habe auch schon mal den RFC_READ_TABLE benutzt. Da hatte ich aber die Zeile

Set t_data = oFuBa.Tables("DATA")

vor dieser:

If oFuBa.Call = True Then

Dies hat bei uns unter SAP GUI 7.40 gut funktioniert. Nachdem wir auf 7.70 Anfang 2022 gewechselt haben, hat dies nicht mehr funktioniert. Warum? Ich konnte es nicht nachvollziehen. Andere RFC fähigen Bausteine haben keine Probleme bereitet. Ich habe das bei uns dann so gelöst, indem ich einen Z-Funktionsbaustein gemacht habe, der mir zu einer gebenen Selektionstabelle (hat nur ein CHAR512 Feld) wo nur WHERE Bedingungen stehen, die Daten der Selektion dann in eine Z_{Tabellenname} packt.

Ich habe dies dann auch noch so "optimiert", dass man als Parameter auch eine Aktion mitgeben kann. Also zum Beispiel:

Selektion: SELECT * FROM [KNA1] into table z_kna1 where ...
Aktion : 1 (entspricht lesen Zusatztabellen)

Nun werden für alle Treffer aus der KNA1 dann bestimmte weitere Tabelle gleichzeitig gelesen. Also bei Kunden zum Beispiel die KNVV, KNVP und KNMT.

Mit freundlichen Grüßen
Matthias Alpmann
Benutzer, die gerade dieses Thema lesen
Das Forum wechseln  
Du kannst keine neue Themen in diesem Forum eröffnen.
Du kannst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge nicht löschen.
Du darfst deine Beiträge nicht editieren.
Du kannst keine Umfragen in diesem Forum erstellen.
Du kannst nicht an Umfragen teilnehmen.

- Impressum / Datenschutz -