Текущее время: Пт, июл 18 2025, 17:31

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 25 2006, 08:08 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
Вообще, ситуация ненормальная когда происходит такая выборка - здесь стоит подумать об опциях ее ограничения.

Но если уж нужно, и плюс объем памяти не позволяет проглотить такую внутр.таблицу, то можно использовать экстракты - их объем ограничен свободным местом на диске. Конечно обработка экстрактов отличается от обработки внутр.таблиц:

http://help.sap.com/saphelp_470/helpdat ... ontent.htm


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 25 2006, 08:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
OlegDm написал(а):
их объем ограничен свободным местом на диске.


Другое ограничение: "practical size of an extract is up to 2GB".
Это немного больше, чем оперативка, но намного медленнее.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ошибка при выполнении программы
СообщениеДобавлено: Чт, авг 03 2006, 12:05 
Гость
Jelena написала:
Женечка написал(а):
При добавлении в таблицу очередной записи


А можно код в студию?

Женечка написал(а):
к тому моменту в таблице уже Table[1005264x821]


Может стоит также обратить внимание на число 821? Вам действительно все это нужно? Вроде бы "ширина" тоже на объем памяти влияет (или я что-то путаю?). :?

У меня один раз была проблема - приходилось считывать 1 млн.+ записей из базы в internal table, потом их преобразовывать и создавать практически вторую такую же, только с измененными данными. Программа считывание прошла нормально, но вот на втором миллионе споткнулась. Вылечили тем, что стали стирать первую таблицу сразу же в цикле, при создании второй. Правда там было не 821, а максимум 200...



тут такая фишка не получится. нужно из разных таблиц считывать в одно место, кучу записей, потом их как-то все скопом обратабывать, получая еще одну таблицу, суммарную, и если возникает вопрос - на соседнем экране показывать из чего что получилось.

refresh tab_rec2.
SELECT bsas~BUKRS bsas~HKONT bsas~GJAHR bsas~BELNR bsas~BLDAT
bsas~BUDAT bsas~XBLNR bsas~SHKZG bsas~MWSKZ bsas~DMBTR
bsas~AUGDT bsas~XNEGP bsad~kunnr bkpf~GRPID
FROM bsas AS bsas
Left Outer Join
bsad AS bsad
ON
bsas~bukrs = bsad~bukrs AND
bsas~belnr = bsad~belnr AND
bsas~gjahr = bsad~gjahr
Left Outer Join
bkpf AS bkpf
ON
bsas~bukrs = bkpf~bukrs AND
bsas~belnr = bkpf~belnr AND
bsas~gjahr = bkpf~gjahr

INTO CORRESPONDING FIELDS OF TABLE tab_rec2
WHERE
bsas~hkont IN hkont_r
AND bsas~mwskz in mwskz
and bsas~BUDAT <= data_h and bsas~AUGDT <= data_h
.
LOOP AT tab_rec2 INTO rec
where kunnr in kunnr.
rec-flag = '1'.
rec-belnr_m = rec-belnr.
APPEND rec TO tab_rec.
ENDLOOP.


SELECT bsis~BUKRS bsis~HKONT bsis~GJAHR bsis~BELNR bsis~BLDAT
bsis~BUDAT bsis~XBLNR bsis~SHKZG bsis~MWSKZ bsis~DMBTR
bsis~XNEGP bsid~kunnr bkpf~GRPID
FROM bsis AS bsis
Left Outer Join
bsid AS bsid
ON
bsis~bukrs = bsid~bukrs AND
bsis~belnr = bsid~belnr AND
bsis~gjahr = bsid~gjahr
Left Outer Join
bkpf AS bkpf
ON
bsis~bukrs = bkpf~bukrs AND
bsis~belnr = bkpf~belnr AND
bsis~gjahr = bkpf~gjahr
INTO CORRESPONDING FIELDS OF TABLE tab_rec2
WHERE
bsis~hkont IN hkont_r
and bsis~BUDAT <= data_h
AND bsis~mwskz in mwskz
.


* место, где прога валится в дамп
LOOP AT tab_rec2 INTO rec
where kunnr in kunnr.
rec-flag = '1'.
rec-belnr_m = rec-belnr.
APPEND rec TO tab_rec.
ENDLOOP.



что же касается ширины строки, то там увы все нужное, хотя на 300 символов подвинуть удалось.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 03 2006, 12:36 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
А номер позиции в джоине вроде должен быть


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 03 2006, 12:40 
Гость
Mike1 написал:
А номер позиции в джоине вроде должен быть


нет, тут все именно так и работает правильно. ошибка переполнения возникает не по этому


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 03 2006, 13:30 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, сен 21 2005, 10:01
Сообщения: 651
Откуда: СССР
Честно сказать я не понял, зачем прицеплять БКПФ с помощью outer join?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 03 2006, 13:31 
Гость
1980 написал(а):
Честно сказать я не понял, зачем прицеплять БКПФ с помощью outer join?


ваши предложения?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 03 2006, 13:39 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, сен 21 2005, 10:01
Сообщения: 651
Откуда: СССР
Например с помощью inner.
А еще лучше создать ракурс в словаре и выбрать из него.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 03 2006, 13:42 
Гость
1980 написал(а):
Например с помощью inner.
А еще лучше создать ракурс в словаре и выбрать из него.


то, ради чего все это делается это, чтобы bsas с bsad склиеть, bkpf тут возник в последнюю минуту, т.к. выяснилось, что и из него тоже надо. а ракурсом там не получиться

к дампу это не имеет отношения.

и все равно спасибо за совет.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 03 2006, 13:57 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, сен 21 2005, 10:01
Сообщения: 651
Откуда: СССР
Еще непонятен смысл вытягивания дебитора из другой позиции.
По-моему, этот селект вытянет много левых записей. Если добавить бузей в джоин и сделать его иннер, записей станет меньше и правильнее.

Но, если надо именно так, то надо результат сохранить в таблице БД, и выдергивать оттуда куски для отображения детализации.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 03 2006, 14:22 
Гость
1980 написал(а):
Еще непонятен смысл вытягивания дебитора из другой позиции.
По-моему, этот селект вытянет много левых записей. Если добавить бузей в джоин и сделать его иннер, записей станет меньше и правильнее.

Но, если надо именно так, то надо результат сохранить в таблице БД, и выдергивать оттуда куски для отображения детализации.


поверьте на слово, селект работает правильно, просто вдаваться в подробности как-то долго.

подумаю, относительно в базе.
спасибо


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: ошибка при выполнении программы
СообщениеДобавлено: Чт, авг 03 2006, 22:43 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Женечка написал(а):
* место, где прога валится в дамп
LOOP AT tab_rec2 INTO rec
where kunnr in kunnr.
rec-flag = '1'.
rec-belnr_m = rec-belnr.
APPEND rec TO tab_rec.
ENDLOOP.


Т.е. SELECT проходит нормально, а когда делаете APPEND, то получаете dump? Так это как у нас было! Попробуйте:

Code:
    APPEND rec TO tab_rec.
    DELETE tab_rec2.
  ENDLOOP.


(судя по всему, tab_rec2 у вас после этого LOOP все равно не используется).


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
или вообще не делать 1 внутреннюю таблицу
Code:
SELECT bsas~BUKRS bsas~HKONT bsas~GJAHR bsas~BELNR AS belnr_m
            bsas~BLDAT bsas~BUDAT bsas~XBLNR bsas~SHKZG
            bsas~MWSKZ bsas~DMBTR bsas~XNEGP bsad~kunnr
            bkpf~GRPID
INTO CORRESPONDING FIELDS OF TABLE rec_tab
FROM BSAS
INNER JOIN BSAD ...
INNER JOIN BKPF ...
WHERE ...
  ..
  AND BSID~KUNNR IN kunnr.

rec-flag = 1.
MODIFY rec_tab FROM rec TRANSPORTING flag WHERE flag IS INITIAL.

По-моему, выборка может намного сократиться при заполнении select-options KUNNR. :)

_________________
С уважением,
Удав.


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

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


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

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


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

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