Текущее время: Сб, июл 26 2025, 03:50

Часовой пояс: 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 часа


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

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


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

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