RFC_READ_TABLE连接行结果中的列

时间:2011-03-09 16:50:46

标签: sap saprfc

以下查询连接每行的列结果。我需要使用某种分隔符或唯一的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?

2 个答案:

答案 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版中,应该解决这个问题。