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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Выполнение сведЕний через E01_EXECUTE_ROLLUP_IN_BATCH
СообщениеДобавлено: Чт, апр 06 2006, 16:16 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, апр 06 2006, 15:06
Сообщения: 88
Требуется совет, срочно(!).
Проблема 1. (практическая)
Как заставить работать функцию E01_EXECUTE_ROLLUP_IN_BATCH(SAPMGLRV) в цикле?

Например, вот такой код выполняет сведение FI-SL и создает записи
в соотв. таблицах, НО только один раз.

Code:
LOOP AT it_chain.
   
    PERFORM CLEAR_ALL(SAPMGLRV).
    PERFORM FREE_ALL(SAPMGLRV).

    PERFORM E01_EXECUTE_ROLLUP_IN_BATCH(SAPMGLRV) USING  ... .

    COMMIT WORK.
   ...
ENDLOOP.

Т.е. - если цикл выполняется 2 раза и более -
фактически выполняются все сведения, но в БД пишет ТОЛЬКО ПЕРВОЕ из них.


Проблема 2. (Теоретическая)
Если сравнивать с аналогичным циклом в ТПР25, то там выполняется
такой код (и он работает !).

Code:
LOOP AT it_chain.

   ...
   
        SUBMIT j_3rf_tax_execute_rollup
               WITH p_roll = wa_chain-opcod
               WITH p_glsip = g_glsip
               WITH p_accum = wa_chain-accum
               WITH p_frdate = wa_chain-sdate
               WITH p_frper = fr_per
               WITH p_toper = to_per
               WITH p_year = fr_year
               WITH p_docty = wa_chain-docty
               AND RETURN.
       
        ...

        COMMIT WORK.
       
        ....
       
  ENDLOOP.       

но у меня ТПР25 нет, поэтому сравнить в отладчике не могу.
Кто-нибудь, поясните чем в данном случае
SUBMIT .. AND RETURN + COMMIT WORK отличается от
PERFORM ... + COMMIT WORK ?


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Отличаются радикально. Для SUBMIT создается новый внутренний режим, т.е. программа начинает работу как будто "с чистого листа", никакие глобальные переменные с предыдущего запуска не сохраняются.
В случае PERFORM программа загружается в один и тот же с вызывающей программой режим (область памяти) и не выгружается до окончания работы вызывающей программы. Все глобальные переменные сохраняются, и если разработчики не рассчитывали на подобный запуск (а скорее всего так и было), то и работать оно не будет.

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


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

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


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

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


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

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