【问题标题】:RFC_READ_TABLE concatenates columns in row resultsRFC_READ_TABLE 连接行结果中的列
【发布时间】:2011-07-12 01:48:53
【问题描述】:

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

【问题讨论】:

    标签: sap saprfc


    【解决方案1】:

    它对我有用。

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

       @DELIMITER ='|'
    

    "exec rfc_read_table @query_table='VBAK', @rowcount=50, @DELIMITER ='|', @FIELDS= '&lt;FIELDS&gt;&lt;RFC_DB_FLD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/"&gt;&lt;FIELDNAME&gt;MANDT&lt;/FIELDNAME&gt;&lt;/RFC_DB_FLD&gt;&lt;RFC_DB_FLD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/"&gt;&lt;FIELDNAME&gt;VBELN&lt;/FIELDNAME&gt;&lt;/RFC_DB_FLD&gt;&lt;/FIELDS&gt;,@fields=@flds output'"

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我相信那是我们下载的版本。
      猜你喜欢
      • 2014-10-17
      • 2020-06-19
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      相关资源
      最近更新 更多