Текущее время: Пн, июл 07 2025, 23:09

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 09 2006, 21:18 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
SKokorev написал(а):
А если надо сделать динамическое условие? То есть, допустим, мы узнаем, какие поля в таблице только в рантайме...


Так может тогда вам не internal table, а EXTRACT нужен? А вообще нельзя ли чуть поподробнее о задаче - не совсем понятно, что вы хотите сотворить...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, июн 11 2006, 12:40 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Попробуйте посмотреть вот это
http://sapboard.ru/forum/viewtopic.php?t=15010, возможно наведет на решение...


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

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
для выборки, скрипя зубами, используется псевдо sql
Code:
loop at it_tab
  where pole1 eq 'aa'
    and pole2 in r_range
    and pole3 is not initial
    and pole4 cp '*123*'
.
   ...
endloop.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 13 2006, 08:50 
Ассистент
Ассистент

Зарегистрирован:
Вт, апр 18 2006, 15:27
Сообщения: 32
Jelena написала:
Так может тогда вам не internal table, а EXTRACT нужен? А вообще нельзя ли чуть поподробнее о задаче - не совсем понятно, что вы хотите сотворить...


Задача такая - у меня есть внутренняя таблица (она изначально внутренняя - в функциях планирования типа exit в BPS данные передаются через внутренние таблицы). В этой таблице есть некоторое количество полей, количество и имена которых я выясняю во время выполнения функции. Надо из этой таблицы выдрать одну запись и прочитать некоторые ее поля.

Для этого можно использовать LOOP AT и READ TABLE, правда, есть одно "но" - ключевых полей в моей таблице тоже несколько (а количество их неизвестно) и выдрать запись надо по всему ключу.

Как я уже писал, мне бы идеально подошел бы запрос, где условие выборки можно было бы задавать как в
SELECT * FROM таблица WHERE ('условие выборки').
Но ни LOOP AT itab WHERE ('').
ни соответствующий READ TABLE не работают.

Но, может быть, у меня все-таки руки кривые... и как-нибудь можно заставить работать такое утверждение?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: re
СообщениеДобавлено: Вт, июн 13 2006, 11:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
imho по возможности не допускать такие ситуации и искать
обходные пути

навскидку 3 варианта

а) медленно и просто:
сделать в словаре табличку zzz,
в рантайме:
delete from zzz.
insert zzz from itab[].
select * zzz where ('').
..

б) быстро и геlvlорно:
loop at itab.
assign component .. <1>.
check <1> ..
assign component .. <2>.
check <2> ..
...
endloop.

в) или делаем всем плохо:
insert report name from lines[].
...
submit (name) and return.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 13 2006, 12:21 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
SKokorev написал(а):
Jelena написала:
Так может тогда вам не internal table, а EXTRACT нужен? А вообще нельзя ли чуть поподробнее о задаче - не совсем понятно, что вы хотите сотворить...


Задача такая - у меня есть внутренняя таблица (она изначально внутренняя - в функциях планирования типа exit в BPS данные передаются через внутренние таблицы). В этой таблице есть некоторое количество полей, количество и имена которых я выясняю во время выполнения функции. Надо из этой таблицы выдрать одну запись и прочитать некоторые ее поля.

Для этого можно использовать LOOP AT и READ TABLE, правда, есть одно "но" - ключевых полей в моей таблице тоже несколько (а количество их неизвестно) и выдрать запись надо по всему ключу.

Как я уже писал, мне бы идеально подошел бы запрос, где условие выборки можно было бы задавать как в
SELECT * FROM таблица WHERE ('условие выборки').
Но ни LOOP AT itab WHERE ('').
ни соответствующий READ TABLE не работают.

Но, может быть, у меня все-таки руки кривые... и как-нибудь можно заставить работать такое утверждение?


как-то видел в одной из стандартных программ следующий прием. создавалась динамическая структура (в данном случае набор ключа), она заполнялась через move-corresponding. а так как длина ключа тоже известна, то сравнивалось сразу все. ограничения, поля должны идти по порядку и лежать в начале структуры. тогда путь <fs> - указывает на созданную динамическую структуру, в которую положили искомые значения. fs_len - ее длина

Code:
loop at tab where table_line(fs_len) = <fs>.
         ...
         endloop.


должно прокатить... :?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 13 2006, 13:40 
Ассистент
Ассистент

Зарегистрирован:
Вт, апр 18 2006, 15:27
Сообщения: 32
Спасибо всем, сделал по варианту б) от trop Ж-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

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


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

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


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

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