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();
                }

UPDATE(更新されたクエリ)
によって返されたインデックスに従うことで、列を区切ることができます
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

よくわかりませんが、バージョン 3 の SAP .NET コネクタでは、このような問題は解決されているはずです。

于 2011-03-14T20:21:46.990 に答える