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

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


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

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


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

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