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

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


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

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


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

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