2

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

。网

          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?

4

2 回答 2

1

这个对我有用。

添加这个 --> 在你的脚本中:

   @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'"

于 2014-03-28T07:11:31.073 回答
0

我不确定,但在 SAP .NET 连接器的第 3 版中,应该解决此类问题。

于 2011-03-14T20:21:46.990 回答