如何解决调用 SAP RFC_READ_TABLE 时索引错误
我不断收到以下代码的错误索引错误..
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
错误发生在行:
objOptTab(objOptTab.RowCount,"TEXT") = "AUFNR EQ '000009999999"' AND BWART EQ '261'"
错误如下:
"Run-time error '-2147352565 (8002000b)':
Bad index
是否有任何关于为什么会发生此错误的提示?已经完成了以下细分以尝试定位错误的来源(到目前为止没有任何运气):
- 我拥有所需的身份验证。调用 RFC_READ_TABLE。
- 值“000009999999”是正确的,存在于表 AUFM 中。
- 给定订单号有条目,移动类型 (BWART) 261。
- SAP 登录正常工作,没有任何错误。
- 我在 SE37 中测试了完全相同的条目。它给了我想要的结果。
解决方法
为了回答我自己的问题,错误是由于 objOptTab
中缺少行而发生的。
为了修复错误,我添加了这一行:
objOptTab.AppendRow
完整、有效的代码:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。