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

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


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

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


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

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