SAP-Daten mit VBA einlesen

Punkt 1: Die Tabelle heisst "ET_MERKMALE", nicht "MERKMALE"
Punkt 2: In den Übergabewerten (IMPORT) sehe ich nirgendwo ein ID oder POSNR, nur IV_irgendwas
Hatte ich fürs Forumbeispiel vereinfacht.
Punkt 3: Wenn Tabelle3 die Schnittstelle für DOCU_COM ist, wieso soll "Exports" dann die richtige Funktion sein? Da würde ich eher auf "Import" tippen? Gebe aber zu, dass ich mich mit SAP nicht wirklich auskenne.
In Tabelle 3 sind die Parameter definiert, die vom FB erwartet werden, damit er damit hantieren kann, um dem Aufrufenden die in Tabelle 1 benannte Tabelle ET_MERKMALE (mit den Feldern ATNAM, ATFOR usw) mit Daten gefüllt an den Aufrufer zurückgibt.
Das heißt, im Code sieht das so aus:
Code:
fncTabLesen.Exports("IV_VBELN") = "0001234567"
fncTabLesen.Exports("IV_POSNR") = "000001"
fncTabLesen.Exports("IV_AKTION") = "001"
fncTabLesen.Exports("IV_BNAME") = "Meier"
-> Export-Parameter auf VBA-Seite sollten Import-Parameter auf SAP-Seite sein und anders herum.
Danach erfolgt sofort der Call-Aufruf, ohne weitere fncTabLesen.Import oder sonstige Versuche.
 
Vielleicht kannst Du ja zumindest zum besseren Verständnis beitragen. Ich komme mit den

rfcFunc.tables nicht klar, z.B. hier aus der gern zitierten "Referenzimplementierung" (hier)

Code:
Dim oRowFields As Object
Set SAPCustomerGet = SAPFunctions.Add("RFC_READ_TABLE ")
Set oRowFields = SAPCustomerGet.tables("FIELDS").Rows.Add '0 
oRowFields("FIELDNAME") = "KUNNR

1. Müsste ich FIELDS ersetzen durch ET_MERKMALE?
2. Müsste ich KUNNR (und weitere) ersetzen durch meine Tabellen-Feldnamen, z.B. ATNAM?

Dann bekomme ich aber einen Fehler "objektvariable oder with-blockvariable nicht festgelegt" in der Set oRowField-Zeile. Ich nehme an, dass es beim SAPCustomerGet.tables("ET_MERKMAL") schon klemmt, kann mir das aber nicht anzeigen lassen. Was ist zu tun?
 
Zu 1: Nein, zumindest versteh ich das so. Zeile 3 fügt nur ein weiteres "FIELDS" an. Anscheinend gibt es eine Tabelle namens "FIELDS", an deren Zeilen eine neue hinzugefügt wird.
Zu 2: Nein. So wie ich den Beispielcode verstehe, wird in Zeile 3 ein weiteres "FIELD" angehängt und in Zeile 4 der Name dieses "FIELDS" festgelegt.

P.S.: Ist das nur ein Tippfehler? Du hast ein Leerzeichen in Zeile 2 nach dem RFC_READ_TABLE und dem Anführungszeichen
 
Moin,
das will alles nicht wirklich passen. :(

Wenn ich das hier versuche
Code:
Set oRowFields = fnctabLesen.tables("ET_MERKMALE").Rows.Add '0 
oRowFields("FIELDNAME") = "ATNAM"
zerreisst es ihn schon in der ersten Zeile wegen fehlender Objektdefinition.

Noch mal einfach gefragt:
Wie teile ich meinem fncTabLesen mit, dass der Funktionsbaustein mir eine gefüllte Tabelle "ET_MERKMALE" mit den Feldern ATNAM etc. zurück übergibt? Müsste m.E. entweder als .import(****? Tabellendef oder Tabellenname oder ganz was anderes?) oder als .tables(...) zugewiesen werden. Aber wie? Und gibt es irgendwo eine Doku zu dieser ganzen ocx-Schnittstelle, API zu SAP.Functions?
 
Frag doch einfach den Support an, dir die Schnittstellendefinition zu geben.

Da müsste exakt drin stehen, wo was hingehört, und wo du was findest.
 
Lösung gefunden - wenn die Rückgabe seitens SAP nicht dort als Export angelegt wird sondern als Table, funktioniert es.

Aber VBA ist schon eine ziemliche Tortur - nu habe ich eine Optionsgruppe und bekomme die verschiedenen Optionsfelder nicht angeklickt - wtf?
 
So ist es. Ich habe die deutsche Version, deshalb Optionsgruppe und Optionsfeld. In anderen Programmiersprachen auch als ButtonGroups und RadioButtons bekannt, deswegen tue ich mir etwas schwer damit. ^^
 
Zurück