[英]Bad Index when calling SAP RFC_READ_TABLE
I keep getting bad index error for below code..我不断收到以下代码的错误索引错误..
Sub GetDocumentedGoodsMovement()
Dim funcs As SAPFunctions
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet3")
Set sapConn = CreateSapFunctions()
If sapConn Is Nothing Then
Exit Sub
End If
Set objRfcFunc = sapConn.Add("RFC_READ_TABLE")
Set objQueryTab = objRfcFunc.Exports("QUERY_TABLE")
Set objDelimiter = objRfcFunc.Exports("DELIMITER")
Set objRowCount = objRfcFunc.Exports("ROWCOUNT")
objRowCount.Value = "99999999"
Set objOptTab = objRfcFunc.Tables("OPTIONS")
Set objFldTab = objRfcFunc.Tables("FIELDS")
Set objDatTab = objRfcFunc.Tables("DATA")
objQueryTab.Value = "AUFM" 'TABLE
objDelimiter.Value = "|" 'DELIMITER
objOptTab(objOptTab.RowCount, "TEXT") = "AUFNR EQ '000009999999"' AND BWART EQ '261'" 'FILTERS FOR VIEW.
objFldTab.FreeTable
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "AUFNR" 'FIELD TO DISPLAY
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "MBLNR" 'FIELD TO DISPLAY
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "MATNR" 'FIELD TO DISPLAY
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "LGORT" 'FIELD TO DISPLAY
objFldTab.RAppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "BWART" 'FIELD TO DISPLAY
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "SHKZG" 'FIELD TO DISPLAY
If objRfcFunc.Call = False Then
MsgBox objRfcFunc.Exception
End If
Dim objDatRec As Object
Dim objFldRec As Object
For Each objDatRec In objDatTab.Rows
For Each objFldRec In objFldTab.Rows
ws.Cells(objDatRec.Index + 1, objFldRec.Index) = Mid(objDatRec("WA"), objFldRec("OFFSET") + 1, objFldRec("LENGTH"))
Next
Next
End Sub
Error occurs at line:错误发生在以下行:
objOptTab(objOptTab.RowCount, "TEXT") = "AUFNR EQ '000009999999"' AND BWART EQ '261'"
The error are as follows:错误如下:
"Run-time error '-2147352565 (8002000b)':
Bad index
Are there any pointers as to why this error occurs?是否有任何关于为什么会发生此错误的指示? The following breakdowns are already done to try to locate the source of the error (without any luck so far):
已经进行了以下细分以尝试定位错误的根源(到目前为止没有任何运气):
To answer my own question, the error occured due to missing row in objOptTab
.为了回答我自己的问题,由于
objOptTab
中缺少行而发生错误。 To fix the error, I added this row:为了修复错误,我添加了这一行:
objOptTab.AppendRow
Complete, working code:完整的工作代码:
Sub GetDocumentedGoodsMovement()
Dim funcs As SAPFunctions
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet3")
Set sapConn = CreateSapFunctions()
If sapConn Is Nothing Then
Exit Sub
End If
Set objRfcFunc = sapConn.Add("RFC_READ_TABLE")
Set objQueryTab = objRfcFunc.Exports("QUERY_TABLE")
Set objDelimiter = objRfcFunc.Exports("DELIMITER")
Set objRowCount = objRfcFunc.Exports("ROWCOUNT")
objRowCount.Value = "99999999"
Set objOptTab = objRfcFunc.Tables("OPTIONS")
Set objFldTab = objRfcFunc.Tables("FIELDS")
Set objDatTab = objRfcFunc.Tables("DATA")
objQueryTab.Value = "AUFM" 'TABLE
objDelimiter.Value = "|" 'DELIMITER
objOptTab.AppendRow
objOptTab(objOptTab.RowCount, "TEXT") = "AUFNR EQ '000009999999' AND BWART EQ '261'" 'FILTERS FOR VIEW.
objFldTab.FreeTable
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "AUFNR" 'FIELD TO DISPLAY
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "MBLNR" 'FIELD TO DISPLAY
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "MATNR" 'FIELD TO DISPLAY
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "LGORT" 'FIELD TO DISPLAY
objFldTab.RAppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "BWART" 'FIELD TO DISPLAY
objFldTab.AppendRow
objFldTab(objFldTab.RowCount, "FIELDNAME") = "SHKZG" 'FIELD TO DISPLAY
If objRfcFunc.Call = False Then
MsgBox objRfcFunc.Exception
End If
Dim objDatRec As Object
Dim objFldRec As Object
For Each objDatRec In objDatTab.Rows
For Each objFldRec In objFldTab.Rows
ws.Cells(objDatRec.Index + 1, objFldRec.Index) = Mid(objDatRec("WA"), objFldRec("OFFSET") + 1, objFldRec("LENGTH"))
Next
Next
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.