Hallo Vigo,
zunächst einmal Entschuldigung, dass ich mich erst so spät wieder melde.
Wenn ich dich richtig verstanden habe, dann hast du eine Excel-Tabelle mit Materialnummern (in Spalte 1). Die anderen Spalten sollen mit den entsprechenden Werten aus SAP gefüllt werden.
Nach deiner Anmeldung im SAP musst du dann für jede Zeile im Excel eine Datenbeschaffung aus dem SAP vornehmen.
Mit diesem Code (der dann nur ein kleiner Teil der gesamten Datenbeschaffung ist), kannst du zu einer gegebenen Materialnummer die deutsche Materialkurzbezeichung auslesen.
Hierzu benutze ich den Funktionsbaustein RFC_READ_TABLE, mit dem man Tabelleninhalte aus dem SAP lesen kann.
Hier ein paar Anmerkungen:
.exports("QUERY_TABLE") = "MAKT"
Tabelle MAKT enthält die Materialkurztexte in den unterschiedlichen Sprachen.
.exports("DELIMITER") = "|" 'Delimiter
Hiermit gibst du ein Trennzeichen an, mit dem die zurückgegebenen Werte getrennt werden.
T_I_Options.AppendRow
T_I_Options(1, "TEXT") = "MANDT EQ '100' and MATNR EQ '0000000004711' and SPRAS EQ 'D'"
Hiermit füge ich eine Eingrenzungszeile ein.
MANDT ist der Mandandt
MATNR ist die Materialnummer
SPRAS ist die Sprache (D = deutsch)
T_I_Fields.AppendRow
T_I_Fields(1, "FIELDNAME") = "MAKTX"
Hier sage ich welche Felder ich aus der Tabelle haben möchte.
ret = FUBAU_rfc_read_table.Call
Hiermit wird der Funktionsbaustein im SAP aufgerufen.
If T_E_Data.RowCount > 0 And ret = True Then
strDataRow = T_E_Data(1, 1)
DataRow = Split(strDataRow, "|")
SAP_MAKT_DE = DataRow(0)
End If
Wenn Datensätze zurückgegeben wurden (T_E_Data.RowCount > 0) und der Aufruf (ret = True) keine Fehler bereitet hat, dann wird in das Feld SAP_MAKT_DE der Kurztext übernommen. Dies müsste dann bei dir in die Excel-Tabelle geschrieben werden.
Für die anderen Felder (Rundungswert, Planungskalender, Bedarfsvorlaufszeit, Ist-RW, Mindestbestellgröße, Sicherheitsbestand, stapelbar, Planlieferzeit) müstest du dann von deiner IT-Abteilung gesagt bekommen, woher diese Werte ermittelt werden. Die anderen Werte können dann genauso wie die Beschaffung des Materialkurtextes Online aus dem SAP gelesen werden.
Hier der komplette Code:
Dim FUBAU_rfc_read_table As Object
DIM T_I_Options As Object
Dim T_I_Fields As Object
Dim T_E_Data As Object
' lesen SAP-Tabelle MAKT
Set FUBAU_rfc_read_table = functionCtrl.Add("RFC_READ_TABLE")
With FUBAU_rfc_read_table
.exports("QUERY_TABLE") = "MAKT"
.exports("DELIMITER") = "|" 'Delimiter
End With
Set T_I_Options = FUBAU_rfc_read_table.Tables("OPTIONS")
Set T_I_Fields = FUBAU_rfc_read_table.Tables("FIELDS")
Set T_E_Data = FUBAU_rfc_read_table.Tables("DATA")
T_I_Options.AppendRow
T_I_Options(1, "TEXT") = "MANDT EQ '100' and MATNR EQ '0000000004711' and SPRAS EQ 'D'"
T_I_Fields.AppendRow
T_I_Fields(1, "FIELDNAME") = "MAKTX"
' Aufruf des FUBAs
ret = FUBAU_rfc_read_table.Call
If T_E_Data.RowCount > 0 And ret = True Then
strDataRow = T_E_Data(1, 1)
DataRow = Split(strDataRow, "|")
SAP_MAKT_DE = DataRow(0)
End If
Call T_E_Data.freetable
Call T_I_Fields.freetable
Call T_I_Options.freetable
Mit freundlichen Grüßen
Matthias Alpmann