Текущее время: Вт, июл 22 2025, 16:56

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


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

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


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

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