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

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


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

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


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

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