VBA RFC einfache Daten abholen

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

VBA RFC einfache Daten abholen

Beitrag von zero88 (ForumUser / 14 / 1 / 0 ) »
Hallo Zusammen

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

Die Tabelle ist: AFRU

Code: Alles auswählen.

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("DATA") // ET_DATA needed...


' 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?

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: VBA RFC einfache Daten abholen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
DATA ist aber eigentlich richtig...
Es gibt keinen Parameter ET_DATA

Re: VBA RFC einfache Daten abholen

Beitrag von zero88 (ForumUser / 14 / 1 / 0 ) »
siehe bild.
Transaktion: SE37

ET_Data dort sind die Daten vorhanden.
in DATA sind keine Einträge..

Re: VBA RFC einfache Daten abholen

Beitrag von Alpmann (ForumUser / 62 / 5 / 19 ) »
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

Re: VBA RFC einfache Daten abholen

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
Du könntest Dich hier an orientieren:
https://abapforum.com/forum/viewtopic.php?f=18&t=23202
Es ist recht hilfreich, wenn man mit SE37 den Baustein anzeigen läßt,
oder RFC- Debugging tests durchführt.

gruß Jens
Mein Tip:
Excel liest ODATA ! Das is "sauschnell"
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: VBA RFC einfache Daten abholen

Beitrag von zero88 (ForumUser / 14 / 1 / 0 ) »
Hört sich ja nicht so gut für mich an. :(

Kann mir jemand helfen einen Fuba zu schreiben?

Es gibt 4 Import Parameter:
AUFNR
PERNR
BUDAT (Von)
BUDAT (Bis)

Tabelle AFRU

Als Ergebnis (Tabelle):
Auftrags Nummer | Rückmeldevorgang | BuchDatum | PersNr | Rück. Leistung | Einheit

RFC - Fähig

Seite 1 von 1

Vergleichbare Themen

3
Antw.
4773
Views
Entgeltersatzleistung Eingangsmeld. abholen GKV (RPCSVPD0)
von marc.luebeck » 04.02.2014 15:50 • Verfasst in Human Resources
3
Antw.
4952
Views
Einfache ALV Ausgabe
von erzoo24 » 01.07.2015 10:43 • Verfasst in ABAP® für Anfänger
11
Antw.
4791
Views
Einfache Fragen zu Dynpro
von Trulchen » 10.09.2012 09:12 • Verfasst in ABAP® für Anfänger
0
Antw.
5227
Views
ALV Kapselung für einfache Tabellen
von Thomas R. » 11.08.2005 12:02 • Verfasst in Tips + Tricks & FAQs
28
Antw.
13979
Views
Einfache Frage: RFBIBL00 vs. CT vs. ???
von ralf.wenzel » 30.08.2007 11:40 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 10 Stunden von tar 8 / 251
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1540
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 190
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 426

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 10 Stunden von tar 8 / 251
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1540
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 190
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 426

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 133
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3310
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9865