Текущее время: Сб, авг 02 2025, 14:47

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Пт, мар 20 2009, 15:54 
Ассистент
Ассистент

Зарегистрирован:
Пн, мар 16 2009, 18:03
Сообщения: 49
Откуда: Самара
Пол: Мужской
Доброго времени!

Написал программу, которая обращается к таблице, выбирает из нее данные, производит всяческие расчеты и преобразования и записывает данные в другую таблицу.
На сервере разработки все работает отлично. Но вот на тестовом сервере, программа вылетает в динамическую ошибку DBIF_RSQL_SQL_ERROR (исключение CX_SY_OPEN_SQL_DB).
Уважаемые гуру подскажите в чем причина такого поведения программы....?

Пономарев Артем: пожалуйста, создавайте темы с осмысленными названиями (п.п. 6.1).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибка в программе. Что делать???
СообщениеДобавлено: Пт, мар 20 2009, 16:06 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
vadim.samara, а названия табличек приведите пожалуйста.
И проверьте, что в SE11 в тесте они открываются.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Пт, мар 20 2009, 16:33 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Вместо конструкции
SELECT ..INTO ...

<обработка>

ENDSELECT.

используйте
SELECT .. INTO TABLE ...

LOOP AT ...
<обработка>
ENLOOP.

Примеры можно посмотреть в транзакции ABAPDOCU или в SE38 меню Среда-Примеры-Примеры производительности

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка в программе. Что делать???
СообщениеДобавлено: Пт, мар 20 2009, 16:36 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
vadim.samara написал:
Доброго времени!

Написал программу, которая обращается к таблице, выбирает из нее данные, производит всяческие расчеты и преобразования и записывает данные в другую таблицу.
На сервере разработки все работает отлично. Но вот на тестовом сервере, программа вылетает в динамическую ошибку DBIF_RSQL_SQL_ERROR (исключение CX_SY_OPEN_SQL_DB).
Уважаемые гуру подскажите в чем причина такого поведения программы....?
Некорректность в системе.
Внимательно читаете текст Вашего дампа, там есть пункт, в котором присутствуют рекомендации по устранению.
Если необходимо, ищите ноты на service.sap.com/notes

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Пт, мар 20 2009, 16:41 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Поскольку дело связано с расчетами, то может возможный вариант - Note 731946 - DBIF_RSQL_SQL_ERROR when inserting a typr P variable in DB
Цитата:
Symptom

When you INSERT, UPDATE or MODIFY a row in a database table, the DBIF_RSQL_SQL_ERROR runtime error occurs because the value in the ABAP type P field is too large.

Other terms

DBIF_RSQL_SQL_ERROR, decimal places

Reason and Prerequisites

In the ABAP, type P fields can only have an odd number of decimal places. This is because a byte can only ever contain 2 decimal places and the sign is coded in the last half-byte. The number of "d" decimal places in a type P variable is therefore calculated from the number of your "b" bytes in accordance with the following formula:
d = 2*b-1

In contrast to this, however, you are able to define "DECS" fields with both an odd and even number of decimal places in the ABAP dictionary. If DDIC fields with an even number of decimal places are used in ABAP, they are mapped (in ABAP) to type P variables that have the next highest uneven number of decimal places. This ensures that the data from the database table is also fully included in the corresponding ABAP fields.

Conversely, however, problems may occur if you want to write a value in a "larger" ABAP variable back into a database table. Since, in theory, the ABAP variable can add larger values than the DB field, an overflow may occur when you INSERT, MODIFY or UPDATE a row in a database table (DBIF_RSQL_SQL_ERROR).

In principle, this overflow is justifiable. The problem is that this overflow does not occur when the ABAP variable is being filled, but "only" when they are inserted into the database table, that is, there is a "delay" in triggering the overflow.

Solution

Catch the DBIF_RSQL_SQL_ERROR runtime error with TRY .. ENDTRY" as of Release 6.20.
If, in the ABAP dictionary, you only use DECS fields with an odd number of decimal places the runtime error occurs, as expected, directly when the ABAP variable is being filled.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка в программе. Что делать???
СообщениеДобавлено: Пт, мар 20 2009, 17:42 
Ассистент
Ассистент

Зарегистрирован:
Пн, мар 16 2009, 18:03
Сообщения: 49
Откуда: Самара
Пол: Мужской
Пономарев Артем написал:
vadim.samara, а названия табличек приведите пожалуйста.
И проверьте, что в SE11 в тесте они открываются.

Проверял, они есть и открываются.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Пт, мар 20 2009, 17:43 
Ассистент
Ассистент

Зарегистрирован:
Пн, мар 16 2009, 18:03
Сообщения: 49
Откуда: Самара
Пол: Мужской
Удав написал(а):
Вместо конструкции.....


Именно так и делаю


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Пт, мар 20 2009, 17:47 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Тогда дамп приведите. И, если не сложно, код.
Судя по вышесказанному John Doe прав или около того.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Пт, мар 20 2009, 18:15 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
усть у Вас там что нибудь типа
Code:
where field in tab1[]

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Пт, мар 20 2009, 19:17 
Ассистент
Ассистент

Зарегистрирован:
Вс, ноя 12 2006, 23:53
Сообщения: 40
Откуда: Moscow
vadim.samara написал:
Доброго времени!

Написал программу, которая обращается к таблице, выбирает из нее данные, производит всяческие расчеты и преобразования и записывает данные в другую таблицу.
На сервере разработки все работает отлично. Но вот на тестовом сервере, программа вылетает в динамическую ошибку DBIF_RSQL_SQL_ERROR (исключение CX_SY_OPEN_SQL_DB).
Уважаемые гуру подскажите в чем причина такого поведения программы....?

Пономарев Артем: пожалуйста, создавайте темы с осмысленными названиями (п.п. 6.1).

На моей памяти такой дамп обычно выскакивает при дублировании ключа таблицы БД. Я бы поставил брейк перед оператором изменения БД и проверил добавляемые записи на уникальность ключей.
Не исключен и вариант с форматированием данных для апдейта базы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Пт, мар 20 2009, 20:16 
Ассистент
Ассистент

Зарегистрирован:
Пн, мар 16 2009, 18:03
Сообщения: 49
Откуда: Самара
Пол: Мужской
Lars написал:
усть у Вас там что нибудь типа
Code:
where field in tab1[]

нет, такого нет

Пономарев Артем написал:
Тогда дамп приведите. И, если не сложно, код.
Судя по вышесказанному John Doe прав или около того.

Дамп могу привести только в понедельник


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Вт, мар 24 2009, 17:46 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 25 2008, 17:07
Сообщения: 144
Откуда: Казань
Пол: Мужской
Было такое при использование конструкции where cond in r_cond , где r_cond оказывалось пустым и в результате именно такой дамп.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибка CX_SY_OPEN_SQL_DB при обращении к таблице БД
СообщениеДобавлено: Вт, мар 24 2009, 20:47 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Марик написал:
Было такое при использование конструкции where cond in r_cond , где r_cond оказывалось пустым и в результате именно такой дамп.

И что из этого следует?
конструкция cond in r_cond при пустом r_cond не является запрещённой.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB