Текущее время: Вс, июл 20 2025, 11:56

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: SELECT-OPTINOS, RANGE....
СообщениеДобавлено: Пт, июн 16 2006, 09:55 
Гость
вот такая конструкция:

*********
data: t_mara like mara occurs 0 with header line.
select-options matnr for t_mara-matnr.

start-of-selection.

select * from mara appending table t_mara where matnr in matnr.
*********

работала хорошо, пока одному умному пользователю
не потребовалось ввести 6700 (!!!) отдельных значений matnr

после этого... пошли дампы :)

ну не может селект принять столько :)

пришлось сделать так:

*********
data: t_mara like mara occurs 0 with header line.
select-options matnr for t_mara-matnr.

start-of-selection.

select * from mara appending table t_mara.
delete t_mara where not matnr in matnr.
*********


а есть какие-нибудь другие идеи?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:01 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
устроить пользователю тёмную
:D


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:09 
Гость
Eugene написал(а):
устроить пользователю тёмную
:D


ага, тем более разбудили в 1 час ночи из-за этого :(


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:24 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Нету отдельных идей, туда можно засунуть ну максимум/около 1500 значений и все потому как эта конструкция раскладывается на ( matnr = значение1 OR matnr = значение3 OR ...... matnr = значение1400) и как следствие попадаешь на ограничение длинны SQL запроса...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Н-да, творческие у вас юзера...
Может порезать в цикле записей по 100? Типа такого:
Code:
DATA: r_matnr TYPE RANGE OF mara-matnr,
          ind_beg TYPE i,
          ind_end TYPE i.

ind_beg = 1.
ind_end = 100.
DO.
  IF ind_beg > LINES( matnr ).
    EXIT.
  ENDIF.

  IF ind_end > LINES( matnr ).
    ind_end = LINES( matnr ).
  ENDIF.

  REFRESH r_matnr.
  APPEND LINES OF matnr FROM ind_beg TO ind_end TO r_matnr.

  select * from mara appending table t_mara where matnr in r_matnr.

  ADD 100 TO:  ind_beg, ind_end.
ENDDO.

_________________
С уважением, Сергей Королев


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:31 
Гость
Сергей Королев написал:
Н-да, творческие у вас юзера...


пожалуй, это самый верный подход....

токо отчетов уже наклепано.... и все править.....

коллеги предложили делать describe table matnr lines....
и если больше, скажем, 1000,
то посылать пользователя к собственной маме :oops:


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:37 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Неспортивно подрубать трудолюбивых юзверей:)

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:38 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Число 1000 прям магическое :)
Сам наваял:
Code:
at selection-screen on s_belnr.
  describe table s_belnr lines sy-tfill.
  if sy-tfill > 1000.
    message e398(00) with 'Не вводите больше'
    '1000' 'строк' space.
*   & & & &
  endif.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Вообще, может это исклчение поймать можно? Думаю, это было бы лучче, чем на константу проверять...

_________________
С уважением, Сергей Королев


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:44 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Сергей Королев написал:
Вообще, может это исклчение поймать можно? Думаю, это было бы лучче, чем на константу проверять...

Моя схожая проблемка
http://sapboard.ru/forum/viewtopic.php?t=15183
была перенаправлена в базис.
Отлавливать дампы программно не получилось.
А например запрос к базе oracle не может превышать 32K,
можно вычислить размер запроса и соответсвенно максимальную константу.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 10:51 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
На самом деле такой результат - это скорее всего использование юзером кнопки "Многократный выбор". Набрал он скажем критерий поиска для текста материала *труба* и вывалило у него все трубы.
Ограничивать количество записей - неспортивно как-то, больше вариант Сергея Королева подходит: нарезать на части и делать селект + аппенд. Но это скажем так техническое решение. Другой вариант, более трудоемкий, классифицировать материалы так как нужно юзеру - и пусть себе на здоровье выбирает (используя классификацию).


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 11:11 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
РМщик написал(а):
Сергей Королев написал:
Н-да, творческие у вас юзера...


пожалуй, это самый верный подход....

токо отчетов уже наклепано.... и все править.....

коллеги предложили делать describe table matnr lines....
и если больше, скажем, 1000,
то посылать пользователя к собственной маме :oops:

тока 1000 для каждого отдельного селекта придётся экспирементально устанавливать

_________________
полный SAPец


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
slash написал(а):
тока 1000 для каждого отдельного селекта придётся экспирементально устанавливать

Вот-вот, плюс еще макс.длина запроса зависит от настроек сервера...

_________________
С уважением, Сергей Королев


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 11:18 
Гость
OlegDm написал(а):
На самом деле такой результат - это скорее всего использование юзером кнопки "Многократный выбор".


абсолютно справедливо :)


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 16 2006, 11:23 
Гость
вообщем пока я поставил временное решение:

Code:
   DESCRIBE TABLE MATNR LINES KSPIS.

   IF KSPIS > 200.
     LSPIS = 'X'.
   ENDIF.
   IF LSPIS NE 'X'.
         SELECT * FROM ZMM_KAT INTO CORRESPONDING FIELDS OF TABLE T_KAT WHERE  MATNR IN MATNR.
      ELSE.
         SELECT * FROM ZMM_KAT INTO CORRESPONDING FIELDS OF TABLE T_KAT .
           DELETE T_KAT WHERE NOT MATNR IN MATNR.
    ENDIF.


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

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


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

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


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

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