Текущее время: Вт, июн 24 2025, 16:00

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: FOR ALL ENTRIES для таблицы без полей
СообщениеДобавлено: Вт, янв 19 2016, 16:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
Собственно, возможно ли использовать таблицу без полей в синтаксисе FOR ALL ENTRIES.
Если написать, как приведено ниже, ругается "В WHERE-условии не создается ссылка на таблицу FOR ALL ENTRIES".
Code:
DATA lt_kunnr TYPE TABLE OF kna1-kunnr WITH HEADER LINE.

SELECT kunnr FROM kna1 INTO TABLE lt_kunnr[].

SELECT COUNT(*) FROM kna1
  FOR ALL ENTRIES IN lt_kunnr[]
  WHERE kunnr EQ lt_kunnr.

Если обернуть таблицу в структуру, и написать так:
Code:
SELECT kunnr FROM kna1 INTO TABLE ls_dat-kunnr[].

SELECT COUNT(*) FROM kna1
  FOR ALL ENTRIES IN ls_dat-kunnr[]
  WHERE kunnr EQ ls_dat-kunnr.

Ругается на ""KUNNR" не должно являться таблицей, ссылкой или включать в себя их".

С большой долей вероятности, использовать таблицу не получится. Но спросить надо, это же SAP, здесь логика бывает не уместна :mrgreen:


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES для таблицы без полей  Тема решена
СообщениеДобавлено: Вт, янв 19 2016, 17:12 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Code:
DATA lt_kunnr TYPE TABLE OF kna1-kunnr WITH HEADER LINE.

SELECT kunnr FROM kna1 INTO TABLE lt_kunnr[].

SELECT COUNT(*) FROM kna1
  FOR ALL ENTRIES IN lt_kunnr[]
  WHERE kunnr EQ lt_kunnr-table_line.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES для таблицы без полей
СообщениеДобавлено: Ср, янв 20 2016, 09:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
Если нормально объявить таблицу из структуры, в которой нормально объявить поле, то и вопросов нет :D table_line это то еще "волшебство".

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES для таблицы без полей
СообщениеДобавлено: Ср, янв 20 2016, 11:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
Это понятно, что можно. Но мы не ищем легких путей ))
Точнее, конечно, наоборот, зачем в словаре плодить лишний Z, если можно просто в программе объявление таблицы сделать.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES для таблицы без полей
СообщениеДобавлено: Ср, янв 20 2016, 13:08 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Мне очень нравится table_line, если нужна табличка с одним столбцом, пользуюсь всегда им.
Код намного лаконичнее получается.

_________________
Удача - результат нашего желания (© А. Нортон)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES для таблицы без полей
СообщениеДобавлено: Ср, янв 20 2016, 15:21 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Кстати первую строчку можно сократить до:
Code:
data LT_KUNNR type table of KUNNR.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES для таблицы без полей
СообщениеДобавлено: Ср, янв 20 2016, 22:08 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
Mike1 написал:
Кстати первую строчку можно сократить

В данном конкретном примере - да. Но,

1) Удобно, например, делать вот так, работает без table_line:
Code:
LOOP AT lt_kunnr.
  IF lt_kunnr EQ ...

2) Объявления переменных со ссылкой на структуру зачастую понятнее, чтоли.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES для таблицы без полей
СообщениеДобавлено: Чт, янв 21 2016, 17:03 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
troy написал(а):
Объявления переменных со ссылкой на структуру зачастую понятнее, чтоли.
+1. Это как бы намекает, что данные будут браться из kna1.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES для таблицы без полей
СообщениеДобавлено: Чт, янв 21 2016, 21:41 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Коллеги,
Велик и могуч абапский язык, почти как русский! :)
От версии к версии он все больше обогащается.
Последний пример с циклом от топикавтора работает не на всех версиях системы.
Я предложил решение с меньшим количеством букв(базисники должны мне быть благодарны - программа меньше места в бд занимает
, программисты будут меньше стучать по клавиатуре), коллеги считают что иное решение лучше для абаперов.
Тема помечена как решенная, давайте постить в других.


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

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


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

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


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

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