Hallo Manulos,
hier mal ein Beispiel (ist aber mittels Access realisiert und nicht mit Excel - damit man besser Daten verknüpfen kann).
Sehr wahrscheinlich ist bei deinem Code nur die Übergabe falsch (fehlende Vornullen). Die Werte, die du mittels RFC_READ_TABLE bekommen hast, mußt du auch so weiterverarbeiten.
In meinem Code hier sind nicht alle Felder der einzelnen Tabellen mit aufgeführt.
' Lesen der QM-Meldungen über Funktionsbaustein
Set tabQS = db.OpenRecordset("QS_Liste_aus_SAP", dbOpenDynaset)
While tabQS.EOF = False
QMNUM = tabQS![QMNUM]
SysCmd acSysCmdSetStatus, "Lese Meldung " & QMNUM & "..."
Set FUBAU_QM = functionCtrl.Add("BAPI_QUALNOT_GETDETAIL")
With FUBAU_QM
.Exports("NUMBER") = tabQS![QMNUM]
End With
Set qm_header = FUBAU_QM.Imports("NOTIFHEADER_EXPORT")
Set QM_TEXT = FUBAU_QM.Tables("NOTLONGTXT")
Set qm_pos = FUBAU_QM.Tables("NOTITEM")
Set QM_URSACHE = FUBAU_QM.Tables("NOTIFCAUS")
Set QM_AKTIONEN = FUBAU_QM.Tables("NOTIFACTV")
Set QM_MASS = FUBAU_QM.Tables("NOTIFTASK")
Set QM_PARTNER = FUBAU_QM.Tables("NOTIFPARTNR")
'Aufruf des FUBAs
ret = FUBAU_QM.Call
tabQS.Edit
tabQS![Umfang_UmfangNr] = Umfang
tabQS![NOTIF_TYPE] = qm_header.Value(2) ' NOTIF_TYPE
tabQS![SHORT_TEXT] = qm_header.Value(3) ' SHORT_TEXT
tabQS![PRIORITY] = qm_header.Value(4) ' PRIORITY
tabQS![NOTIFTIME] = qm_header.Value(5) ' NOTIFTIME
tabQS![NOTIF_DATE] = qm_header.Value(6) ' NOTIF_DATE
...
tabQS.Update
' Positionen übernehmen
If qm_pos.RowCount > 0 And ret = True Then
For i = 1 To qm_pos.RowCount
tabQS_NOTITEM.AddNew
tabQS_NOTITEM![QMNUM] = QMNUM
tabQS_NOTITEM![NOTIF_NO] = qm_pos(i, "NOTIF_NO")
tabQS_NOTITEM![ITEM_KEY] = qm_pos(i, "ITEM_KEY")
tabQS_NOTITEM![TEXT_KEY] = "0000" & qm_pos(i, "ITEM_KEY")
tabQS_NOTITEM![DESCRIPT] = qm_pos(i, "DESCRIPT")
tabQS_NOTITEM![D_CAT_TYP] = qm_pos(i, "D_CAT_TYP")
tabQS_NOTITEM![D_CODEGRP] = qm_pos(i, "D_CODEGRP")
tabQS_NOTITEM![D_CODE] = qm_pos(i, "D_CODE")
...
tabQS_NOTITEM.Update
Next i
End If
' Ursachen
If QM_URSACHE.RowCount > 0 And ret = True Then
For i = 1 To QM_URSACHE.RowCount
' nur nicht gelöschte Ursachen einlesen
If QM_URSACHE(i, "DELETE_FLAG") <> "X" Then
tabQS_NOTIFCAUS.AddNew
tabQS_NOTIFCAUS![QMNUM] = QMNUM
tabQS_NOTIFCAUS![NOTIF_NO] = QM_URSACHE(i, "NOTIF_NO")
tabQS_NOTIFCAUS![ITEM_KEY] = QM_URSACHE(i, "ITEM_KEY")
tabQS_NOTIFCAUS![CAUSE_KEY] = QM_URSACHE(i, "CAUSE_KEY")
...
tabQS_NOTIFCAUS.Update
End If
Next i
End If
' Aktionen
If QM_AKTIONEN.RowCount > 0 And ret = True Then
For i = 1 To QM_AKTIONEN.RowCount
If QM_AKTIONEN(i, "DELETE_FLAG") <> "X" Then
tabQS_NOTIFACTV.AddNew
tabQS_NOTIFACTV![QMNUM] = QMNUM
tabQS_NOTIFACTV![NOTIF_NO] = QM_AKTIONEN(i, "NOTIF_NO")
tabQS_NOTIFACTV![ACT_KEY] = QM_AKTIONEN(i, "ACT_KEY")
tabQS_NOTIFACTV![ITEM_KEY] = QM_AKTIONEN(i, "ITEM_KEY")
...
tabQS_NOTIFACTV.Update
End If
Next i
End If
' Maßnahmen
If QM_MASS.RowCount > 0 And ret = True Then
For i = 1 To QM_MASS.RowCount
' nur nicht gelöschte Maßnahmen einlesen
If QM_MASS(i, "DELETE_FLAG") <> "X" Then
tabQS_NOTIFTASK.AddNew
tabQS_NOTIFTASK![QMNUM] = QMNUM
tabQS_NOTIFTASK![NOTIF_NO] = QM_MASS(i, "NOTIF_NO")
tabQS_NOTIFTASK![TASK_KEY] = QM_MASS(i, "TASK_KEY")
...
tabQS_NOTIFTASK.Update
End If
Next i
End If
' Partner
If QM_PARTNER.RowCount > 0 And ret = True Then
For i = 1 To QM_PARTNER.RowCount
tabQS_NOTIFPARTNR.AddNew
tabQS_NOTIFPARTNR![QMNUM] = QMNUM
tabQS_NOTIFPARTNR![OBJECT_NO] = QM_PARTNER(i, "OBJECT_NO")
tabQS_NOTIFPARTNR![PARTN_ROLE] = QM_PARTNER(i, "PARTN_ROLE")
tabQS_NOTIFPARTNR![COUNTER] = QM_PARTNER(i, "COUNTER")
...
tabQS_NOTIFPARTNR.Update
Next i
End If
tabQS.MoveNext
Wend
tabQS.Close
Mit freundlichen Grüßen
Matthias Alpmann