点击此处---> 群内免费提供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
这是我的猜测:
RFC_READ_TABLE为每个记录返回单个字符串行中的所有表字段。
此行的上限为512个字符(数据元素:SYCHAR512)
在这种情况下,您有两种选择:
1)编写您自己的RFC功能模块,以获取单个表并为每个表字段返回单个列。 (推荐)
2)调用RFC_READ_TABLE两次。 第一次调用检索第一列,第二次调用返回主键和其他列。
选择分隔符也非常重要。 根据您要处理的信息类型,最好有一个自定义的RFC功能模块,该功能实际上提取列而不是连接列。
我创建了RFC_READ_TABLE远程函数调用的副本,并将数据类型更改为具有8000个符号的Char。 现在我可以将整个表转移到excel????
KR
Tobias
一周热门 更多>