以下查询连接每行的列结果。我需要使用某种分隔符或唯一的row [i]结果来分隔列。
查询
"exec rfc_read_table @query_table='VBAK', @rowcount=50, @FIELDS= '<FIELDS><RFC_DB_FLD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/"><FIELDNAME>MANDT</FIELDNAME></RFC_DB_FLD><RFC_DB_FLD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/"><FIELDNAME>VBELN</FIELDNAME></RFC_DB_FLD></FIELDS>,@fields=@flds output'"
.NET
using (SAPCommand cmd = conn.CreateCommand())
{
cmd.CommandText = //See query above
SAPDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.Write(" {0} ", rdr[0]);
//Console.Write(" {0} ", rdr[1]);//null...
Console.WriteLine();
}
更新
我可以通过遵循由
返回的索引来分隔列
DataTable dtFields = (DataTable)cmd.Parameters["@flds"].Value;
(更新后的查询)
该过程非常笨拙并且抛出异常,因为当查询中的最后一列返回空结果时,索引变得不可靠(也发现错误的长度指示符)。我解决了大部分问题,但这太糟糕了。是否有更好的支持方法来使用.NET查询SAP?
答案 0 :(得分:1)
它对我有用。
添加此项 - &gt;在你的脚本中:
@DELIMITER ='|'
"exec rfc_read_table @query_table='VBAK', @rowcount=50, @DELIMITER ='|', @FIELDS= '<FIELDS><RFC_DB_FLD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/"><FIELDNAME>MANDT</FIELDNAME></RFC_DB_FLD><RFC_DB_FLD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/"><FIELDNAME>VBELN</FIELDNAME></RFC_DB_FLD></FIELDS>,@fields=@flds output'"
答案 1 :(得分:0)
我不确定但是在SAP .NET连接器的第3版中,应该解决这个问题。