Текущее время: Ср, апр 24 2024, 10:37

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Трабл с 'on change'
СообщениеДобавлено: Ср, сен 01 2004, 09:53 
Гость
Использую конструкцию on change of ... endon в подпрограмме, при первичном вызове все срабатывает прекрасно, но вот при повторном вызове подпрограммы чегой-то оно не работает :cry: .
Вопрос, вообще возможно ли повторное использование сей конструкции в программе? Если возможно, то что нужно почистить, обнулить?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения: Re: Трабл с 'on change'
СообщениеДобавлено: Ср, сен 01 2004, 10:52 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
bmonk написал:
Использую конструкцию on change of ... endon в подпрограмме, при первичном вызове все срабатывает прекрасно

Ну что ли текст или куски текста приведи, а то мыслескоп чего-то барахлит :roll:


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:   Тема решена
СообщениеДобавлено: Ср, сен 01 2004, 12:09 
Гость
loop at g_nalog.
append g_nalog to lt_sflight.
endloop.
sort lt_sflight by BUKRS LAND KODNAL BUDJ.

* add data to tree
data: l_BUKRS_key type lvc_nkey,
l_LAND_key type lvc_nkey,
l_KODNAL_key type lvc_nkey,
l_last_key type lvc_nkey.

loop at lt_sflight into ls_sflight.
index = sy-tabix.
on change of ls_sflight-BUKRS.
perform add_BUKRS_line using ls_sflight
''
changing l_BUKRS_key.
read table lt_sflight into ls_sflight index index.
endon.
on change of ls_sflight-LAND.
perform add_LAND_line using ls_sflight
l_BUKRS_key
changing l_LAND_key.
read table lt_sflight into ls_sflight index index.
endon.
on change of ls_sflight-KODNAL.
perform add_KODNAL_line using ls_sflight
l_LAND_key
changing l_KODNAL_key.
read table lt_sflight into ls_sflight index index.
endon.
perform add_complete_line using ls_sflight
l_KODNAL_key
changing l_last_key.
endloop.


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 01 2004, 12:26 
Гость
ну правильно, внутри же читаешь значения просматриваемой таблицы.
Читай в другую переменную!


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 01 2004, 12:31 
Гость
В начало подпрограммки такое:

form create_hierarchy.
data lt_sflight type znal_nalogs occurs 0.
clear ls_sflight.
...

Я так понимаю, что все должно чиститься, или не так?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 01 2004, 12:45 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
bmonk написал:
loop at lt_sflight into ls_sflight.
endloop.


Ну во первых действительно здесь может лучше использовать структуру с отличным именем от внутр.таблицы
bmonk написал:
on change of ls_sflight-BUKRS.

Здесь вроде все нормально, но вот здесь надо бы написать:
on change of ls_sflight-BUKRS or ls_sflight-LAND.
вместо:
bmonk написал:
on change of ls_sflight-LAND.

и далее:
on change of ls_sflight-BUKRS or ls_sflight-LAND or ls_sflight-KODNAL
вместо
bmonk написал:
on change of ls_sflight-KODNAL.

а то ведь при изменении балансовой единици, но при неизменном значении LAND или KODNAL это дело работать не будет


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 01 2004, 12:58 
Гость
Уважаемый, учите матчасть.
on change вообще придуман для другого, да и используете Вы его как-то хитро....

Вот Ваши конструкции: at new..., или же at end of...
Только перед употреблением почитайте help.

Там прикол только в том, что надо иметь в виду, что играет роль порядок определения внутренней таблички.
Т.е. если определение
vbeln
posnr
matnr
, то 'at new matnr' срабатывает и при изменении всех предшествующих matnr полей - vbeln и posnr.



loop at lt_sflight into ls_sflight.
index = sy-tabix.
at new bukrs.
...
endat.

Ине забудьте отсортировать внутреннюю табличку по соответствующим полям! (в вашем случае BUKRS LAND KODNAL)


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 01 2004, 13:58 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
Ну уж если человек решил использовать on-change, почему б не показать почему у него возникает ошибка? Хотя конечно, для внутренних таблиц надо использовать at, для селектов on-change. У нас кстати, древние отчеты, с версии 3.0 до сих пор юзаются с конструкцией on-change (тогда кажись еще не было at-хотя может и ошибаюсь)


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

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


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

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


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

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