点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨大师!
能请你帮我吗?
现在我正在编写excel vba以获取数据记录条目号。
我使用了RFC_GET_TABLE_ENTRIES,源代码如下。
此vba宏已编译,可以正常运行。
如果目标表的记录数很少,则此vba PGM可以获得正确的数据。
但是,如果目标表的记录数大于32768,则此vba PGM将获得错误的数据。
例如,如果表中有146448条记录,则此vba会获得15376号。
我认为这是因为abap和VBA之间的类型不同。
因为146448除以32768等于四,其余为15376。
数据类型INT2的范围是-32,768到32,767。 因此,我担心源代码行中的对象rfcFunc.imports(" NUMBER_OF_ENTRIES")已被系统替换为INT2。
您能教我如何在VBA PGM中正确修改吗?
公共函数FUNC_CALL(ApplicationServer,客户端,用户,系统,SystemNumber,密码,语言,I_Sheet)作为字符串 '------------------------------------------------- ------------- '声明变量 '------------------------------------------------- ------------- 'R/3连接变量------------------ 昏暗的R3作为对象 Dim rfcFunc作为变体 将QUERY_TABLE变暗为对象'IMPORT1 昏暗的DELIMITER作为对象'IMPORT2 昏暗的NO_DATA作为对象'IMPORT3 昏暗的ROWSKIPS作为对象'IMPORT4 昏暗的ROWCOUNT作为对象'IMPORT5 昏暗的USERNAME2作为对象 昏暗选项作为对象'TABLES1 昏暗的字段作为对象'TABLES2 昏暗的数据作为对象'TABLES3 结果变暗为布尔值' Dim iRow作为整数' Dim iColumn作为整数' 昏暗的iField作为整数' Dim iStart as Integer' Dim iLength作为整数' Dim vField As Variant' 点心桌 昏暗的工作表 昏暗的Destination_System为整数 昏暗的objBAPIControl作为对象'功能控件(集体对象) Dim sapConnection作为对象'连接对象 昏暗的objUserList作为对象 昏暗的objUserDetail作为对象 昏暗的returnfunc为布尔值 昏暗的整数 Dim j作为整数 昏暗的WK_CNT作为对象 昏暗的记录没有作为对象 昏暗RecondNo_I '------------------------------------------------- -------------- '连接R3 '------------------------------------------------- -------------- 设置R3 = CreateObject(" SAP.Functions") R3.Connection.ApplicationServer =应用程序服务器 R3.Connection.Client =客户端 R3.Connection.User =用户 R3.Connection.System =系统 R3.Connection.SystemNumber =系统编号 R3.Connection.Password =密码 R3.Connection.Language =语言 FUNC_CALL = 0 ' 登录 如果R3.Connection.Logon(0,True)<> True然后 MsgBox" R/3登录失败" FUNC_CALL = 1 退出功能 万一 '------------------------------------------------- -------------- '致电RFC_GET_TABLE_ENTRIES '------------------------------------------------- -------------- 设置rfcFunc = R3.Add(" RFC_GET_TABLE_ENTRIES") 设置MAX_ROW = rfcFunc.exports(" MAX_ENTRIES") 设置TableName = rfcFunc.exports(" TABLE_NAME") 设置RecordNo = rfcFunc.imports(" NUMBER_OF_ENTRIES") MAX_ROW.Value =" 1" TableName.Value =" TSP01" 结果= rfcFunc.Call 如果结果= True,则 其他 MsgBox rfcFunc.Exception R3.Connection.Logoff 退出功能 万一 ' LastRow2 = Sheets(" SPOOL")。Cells(Rows.Count,1).End(xlUp).Row wk_end2 = LastRow2 ' WK_CNT2 = wk_end2 +1 ' Sheets(" SPOOL")。Cells(WK_CNT2,1).Value = I_Sheet Sheets(" SPOOL")。Cells(WK_CNT2,2).Value = RecordNo.Value R3.Connection.Logoff 结束功能
我自己解决了这个问题。
" RFC_GET_TABLE_ENTRIES"的状态为"未发布"。
因此,此模块无法获得SAP支持。
因此,我复制了" RFC_GET_TABLE_ENTRIES"并新建了另一个功能模块。 然后将NUMBER_OF_ENTRIES的类型从INT4更改为char 20,那么我可以得到正确的数字。
谢谢。
一周热门 更多>