Excel中的RFC_READ_TABLE->列限制?

2020-08-30 19:12发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我写了一些VBA代...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我写了一些VBA代码,该代码通过RFC将BW表的内容传输到excel工作表中。

总而言之,它可以正常工作,但是如果我们要将超过14个表列导入到excle工作表中,则不会发生任何事情。

只有14列(或更少)列,我们没有问题。

有任何限制。 您知道任何解决方法吗?

您可以在下面找到我的vba代码。 如果我们取消注释这两行

'T_I_Fields.Rows.Add

'T_I_Fields(15," FIELDNAME")=" ENTITY"

什么都没发生。

私有子CommandButton2_Click()

将rfc_read_table视作对象

昏暗功能Ctrl作为对象

将T_I_Options视作对象

将T_I_Fields视作对象

将T_E_Data视作对象

Dim i,x As Integer

将strDataRow设置为字符串

将DataRow变体

Dim Col As布尔值

Col = False

设置功能Ctrl = CreateObject(" SAP.Functions")

设置rfc_read_table = functionCtrl.Add(" RFC_READ_TABLE")

使用rfc_read_table

.exports(" QUERY_TABLE")="/img/1CPMB/PGFXEJRDT"

.exports(" DELIMITER")=" |" '分隔符

结尾为

设置T_I_Options = rfc_read_table.tables(" OPTIONS")

设置T_I_Fields = rfc_read_table.tables(" FIELDS")

设置T_E_Data = rfc_read_table.tables(" DATA")

'Einschränken

'<<<<< Importtabellenfüllen>>>>>>>

'Welche Felder sollen gelesen werden

T_I_Fields.Rows.Add

T_I_Fields(1," FIELDNAME")=" JRN_ID"

T_I_Fields.Rows.Add

T_I_Fields(2," FIELDNAME")=" APPSET_ID"

T_I_Fields.Rows.Add

T_I_Fields(3," FIELDNAME")=" APPL_ID"

T_I_Fields.Rows.Add

T_I_Fields(4," FIELDNAME")=" JRN_TMPL_ID"

T_I_Fields.Rows.Add

T_I_Fields(5," FIELDNAME")=" ROW_NUM"

T_I_Fields.Rows.Add

T_I_Fields(6," FIELDNAME")="借方"

T_I_Fields.Rows.Add

T_I_Fields(7," FIELDNAME")=" CREDIT"

T_I_Fields.Rows.Add

T_I_Fields(8," FIELDNAME")=" REMARK"

T_I_Fields.Rows.Add

T_I_Fields(9," FIELDNAME")=" ACCOUNT"

T_I_Fields.Rows.Add

T_I_Fields(10," FIELDNAME")=" ACCTDETAIL"

T_I_Fields.Rows.Add

T_I_Fields(11," FIELDNAME")=" CATEGORY"

T_I_Fields.Rows.Add

T_I_Fields(12," FIELDNAME")=" CONSOSCOPE"

T_I_Fields.Rows.Add

T_I_Fields(13," FIELDNAME")="货币"

T_I_Fields.Rows.Add

T_I_Fields(14," FIELDNAME")=" DATASRC"

'T_I_Fields.Rows.Add

'T_I_Fields(15," FIELDNAME")=" ENTITY"

ret = rfc_read_table.Call

如果T_E_Data.RowCount> 0且ret = True然后

对于i = 1到T_E_Data.RowCount

strDataRow = T_E_Data(i,1)

DataRow = Split(strDataRow," |")

如果Col = False,则

对于x = 0到UBound(DataRow)

工作表("详细信息")。单元格(1,x + 1)。值= T_I_Fields(x + 1,1)

下一个x

Col = True

如果结束

对于x = 0到UBound(DataRow)

工作表("详细信息")。单元格(i + 1,x + 1)。值= DataRow(x)

下一个x

下一个i

如果结束

结束子



致以诚挚的谢意

Tobias

3条回答
代楠1984
2020-08-30 19:43

选择分隔符也非常重要。 根据您要处理的信息类型,最好有一个自定义的RFC功能模块,该功能实际上提取列而不是连接列。

一周热门 更多>