Текущее время: Ср, июл 23 2025, 06:43

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Обработка больших таблиц
СообщениеДобавлено: Вт, июн 22 2010, 11:07 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
DaV написал(а):
sy-uname написал(а):
"- Кто на ком стоял? - потрудитесь излагать ваши мысли яснее."

Отладка обновлений?


хорошо буду стораться, я хотел сказать что если ставлю брек-поинт в другом месте ("15 шагов назад по st05" )то он туда заходит,
а что значит : Отладка обновлений?

Это значит что в настройках отладчика есть пара галок:
отладка системы
отладка обновлений

Желательно чтобы они были включены

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обработка больших таблиц
СообщениеДобавлено: Пт, ноя 19 2010, 10:37 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, апр 10 2006, 17:17
Сообщения: 77
Коллеги, подскажите пожалуйста.

Пишу программу по выгрузке любых таблиц на desktop. Столкнулся с проблемой больших таблиц - решил выгружать их частями.
Следующий код падает на втором куске с известной ошибкой DBIF_RSQL_INVALID_CURSOR
Code:
    SELECT * FROM (tabnam) APPENDING TABLE <p> PACKAGE SIZE maxlines.
      IF <p> IS NOT INITIAL.   " Есть что выгружать
        CONCATENATE filen ' ^ ' partnum INTO filen_part.
        CALL FUNCTION 'GUI_DOWNLOAD'
          EXPORTING
            filename = filen_part
            filetype = filtyp
            codepage = '1504'
          TABLES
            data_tab = <p>
          EXCEPTIONS
            OTHERS   = 1.
        IF sy-subrc = 0.
          WRITE:/ 'Выгрузка прошла успешно в файл ',filen_part.
        ELSE.
          WRITE:/ 'Ошибка выгрузки'.
        ENDIF.
        CLEAR <p>. REFRESH <p>.
        ADD 1 TO partnum.
    ENDSELECT.


Но и использование OPEN CURSOR WITH HOLD приводит к той же ошибке:
Code:
    DATA w_dbcur1 TYPE cursor.
    OPEN CURSOR WITH HOLD w_dbcur1 FOR SELECT * FROM (tabnam).

    WHILE sy-subrc = 0.
      FETCH NEXT CURSOR w_dbcur1 INTO TABLE <p> PACKAGE SIZE maxlines.
      IF sy-subrc = 0.
        CONCATENATE filen ' ^ ' partnum INTO filen_part.
        CALL FUNCTION 'GUI_DOWNLOAD'
          EXPORTING
            filename = filen_part
            filetype = filtyp
            codepage = '1504'
          TABLES
            data_tab = <p>
          EXCEPTIONS
           OTHERS   = 1.
        IF sy-subrc = 0.
          WRITE:/ 'Выгрузка прошла успешно в файл ',filen_part.
        ELSE.
          WRITE:/ 'Ошибка выгрузки'.
        ENDIF.
        CLEAR <p>. REFRESH <p>.
        ADD 1 TO partnum.
      ENDIF.
    ENDWHILE.

    CLOSE CURSOR w_dbcur1.

Посоветуйте пож, как можно решить поставленную задачу.

В худшем случае можно делать выгрузку не на десктоп, а на сервер, но поможет ли это избежать дампов?

Спасибо.

P.S. Добавлю, что выгружаемые таблицы могут иметь размер > 20Гб


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обработка больших таблиц
СообщениеДобавлено: Пт, ноя 19 2010, 11:09 
Почетный гуру
Почетный гуру
Аватара пользователя

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

Хотя задача выглядит очень странно - грузить текстом на десктоп десятки гиг...

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обработка больших таблиц
СообщениеДобавлено: Пт, ноя 19 2010, 13:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
sn написал(а):
Пишу программу по выгрузке любых таблиц на desktop. Столкнулся с проблемой больших таблиц - решил выгружать их частями.

Вообще-то выгрузку таблиц можно и через SE16 сделать - проблема с временем выполнения решается с помощью фонового выполнения и выгрузки спула ;)

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

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обработка больших таблиц
СообщениеДобавлено: Пт, ноя 19 2010, 13:09 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, апр 10 2006, 17:17
Сообщения: 77
Коллеги, спасибо за советы.

Выгрузка на сервер помогла избавиться от дампов.

После большого селекта с package size запрограммировал перенос кучи файлов с APP на десктоп. Т.е. задачу решили.


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

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


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

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


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

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