Текущее время: Пт, июл 25 2025, 03:55

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Как динамически сформировать условие поиска для WHERE?
СообщениеДобавлено: Сб, фев 16 2008, 16:56 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 27 2007, 10:57
Сообщения: 72
Подскажите пожалуйста.
Есть код:
--------------------------------------------------------------------------
DATA ID_PODR TYPE TEXT25.
***
IF ID_PODR IS NOT INITIAL.
CONCATENATE 'ORGTX LIKE' '1' '''' '%' ID_PODR '%' '''' INTO str_where.
REPLACE '1' WITH ' ' INTO str_where.
ENDIF.

SELECT *
INTO CORRESPONDING FIELDS OF TABLE it_resZRBKPF
FROM ZRBKPF
WHERE (str_where).

---------------------------------------------------------------------------------
Когда ID_PODR принимает значение 'Бухгалтерия' или что - то написанное на кириллице, то поиск ничего не находит, даже если такие значения там есть.
Если брать подобную конструкцию, но с другим полем, где поля содержат значения написанные на латинице, то поиск работает.
Что можно в этом случае сделать, чтобы искались значения написанные на кирилице?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 15:19 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Вообще-то должно работать. А что, если условие where не динамическое, то находит?

Могу предположить следующее.
1. Может быть ID_PODR слишком короткая, при условии, что система юникодная. Впрочем, "Бухгалтерия" в 25 символов укладывается.
2. Может быть в БД данные хранятся не в ISO-8859-5? Посмотрите таблицу tcbdp, там должно быть 1500 1500 для неюникодной стистемы.
3. Откуда попадает текст в ID_PODR? Может быть он изначально в той кодировке?

PS. Как-то извращённо пробел в строку добавляете. Попробуйте либо строковые литералы (ограниченные обратными кавычками `), либо concatenate ... separated by space (в два приёма).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 15:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Сама идея SELECT с таким LIKE как-то неправильно выглядит с точки зрения быстродействия...
Code:
ORGTX LIKE ' "%Бухгалтерия%"'
- это же практически полный перебор таблицы ZRBKPF...
Может, в постановке задачи что-нибудь поменять?
Скажем, закодировать подразделения и выбирать по их кодам...

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 15:58 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 27 2007, 10:57
Сообщения: 72
sibrin написал:
Вообще-то должно работать. А что, если условие where не динамическое, то находит?

Могу предположить следующее.
1. Может быть ID_PODR слишком короткая, при условии, что система юникодная. Впрочем, "Бухгалтерия" в 25 символов укладывается.
2. Может быть в БД данные хранятся не в ISO-8859-5? Посмотрите таблицу tcbdp, там должно быть 1500 1500 для неюникодной стистемы.
3. Откуда попадает текст в ID_PODR? Может быть он изначально в той кодировке?

PS. Как-то извращённо пробел в строку добавляете. Попробуйте либо строковые литералы (ограниченные обратными кавычками `), либо concatenate ... separated by space (в два приёма).




В ID_PODR текст попадает с селекционного экрана. В какой кодировке посмотрю.
А как это стоковые литералы, ограниченные обратными кавычками?
Просто это единственный способ на сегодняшний момент (кроме separated by space ) который я знаю, чтобы в строку добавлять пробелы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 16:01 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 27 2007, 10:57
Сообщения: 72
Удав написал(а):
Сама идея SELECT с таким LIKE как-то неправильно выглядит с точки зрения быстродействия...
Code:
ORGTX LIKE ' "%Бухгалтерия%"'
- это же практически полный перебор таблицы ZRBKPF...
Может, в постановке задачи что-нибудь поменять?
Скажем, закодировать подразделения и выбирать по их кодам...


На счёт LIKE согласен. Но c EQ вообще никак не работает. Если есть что-то более лучьшее, с удовольствием научусь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 16:07 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 27 2007, 10:57
Сообщения: 72
Удав написал(а):
Сама идея SELECT с таким LIKE как-то неправильно выглядит с точки зрения быстродействия...
Code:
ORGTX LIKE ' "%Бухгалтерия%"'
- это же практически полный перебор таблицы ZRBKPF...
Может, в постановке задачи что-нибудь поменять?
Скажем, закодировать подразделения и выбирать по их кодам...


А с постановкой задачи. Я не то что не могу её поменять. Я не уверен что таблицы которые сейчас я использую для выборки, будут вестись.
Задача сделать, и чтоб работало. Хотя в некоторых случаях постановки попахивают моразмом. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 17:31 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Voldemar написал(а):
В ID_PODR текст попадает с селекционного экрана. В какой кодировке посмотрю.


На селекционном экране какой домен? Проверяли под отладчиком, преобразование к верхнему регистру не происходит?

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 18:09 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
vga +1
Сравните значение параметра "Строчные буквы" в доменах для полей ORGTX и IT_PODR

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 18:40 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 27 2007, 10:57
Сообщения: 72
vga написал(а):
Voldemar написал(а):
В ID_PODR текст попадает с селекционного экрана. В какой кодировке посмотрю.


На селекционном экране какой домен? Проверяли под отладчиком, преобразование к верхнему регистру не происходит?


Домен : TEXT25 (по данным транзакции SE11).
Значение введённое с селекционного экрана преобразовывается в верхний регистр.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 18:45 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 27 2007, 10:57
Сообщения: 72
Удав написал(а):
vga +1
Сравните значение параметра "Строчные буквы" в доменах для полей ORGTX и IT_PODR


ORGTX - маленький кегль.
IT_PODR - под дебагером преобразовывает в большой кегль.
А как сделать чтобы не было такого преобразования со шрифтами?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 20:48 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Voldemar написал(а):
Удав написал(а):
vga +1
Сравните значение параметра "Строчные буквы" в доменах для полей ORGTX и IT_PODR


ORGTX - маленький кегль.
IT_PODR - под дебагером преобразовывает в большой кегль.
А как сделать чтобы не было такого преобразования со шрифтами?


Выберете для поля селекционного экрана домен с установленным флажком LowerCase

_________________
С уважением, VGA
Мой блог


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

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


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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