Текущее время: Пн, июл 14 2025, 13:33

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


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

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


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

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