RFC_READ_TABLE объединяет столбцы в результатах строки - PullRequest
2 голосов
/ 09 марта 2011

Следующий запрос объединяет результаты столбцов для каждой строки. Мне нужно разделить столбцы с каким-либо разделителем или уникальным результатом строки [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; (обновленный запрос)

Процесс настолько сложный и отбрасывает исключения, потому что индексы становятся ненадежными, когда последние столбцы в запросе возвращают пустые результаты (также обнаруживается неверный индикатор длины). Я работал над большей частью, но это так плохо. Есть ли лучший поддерживаемый метод для запроса SAP с .NET?

Ответы [ 2 ]

1 голос
/ 28 марта 2014

у меня работает.

ДОБАВЬТЕ это -> в вашем скрипте:

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

0 голосов
/ 14 марта 2011

Я не уверен, но в версии 3 коннектора SAP .NET такая проблема должна быть решена.

...