Текущее время: Вс, авг 03 2025, 18:52

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: at new...endat
СообщениеДобавлено: Чт, ноя 01 2007, 14:23 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Прошу не пинать ногами, но есть проблема.

Code:
  SORT it_mkol BY lifnr.
  LOOP AT it_mkol ASSIGNING <ls_mkol>.
    BREAK-POINT.
    AT NEW lifnr.
      ...
    ENDAT.
  ENDLOOP.


Хотелось бы, чтобы код между at..endat вызывался только при новом значении поля lifnr, однако в отладчике видно, что он выполняется для всех строк из внутренней таблицы. В чем грабли? Читал, что структура внутренней таблицы должна быть "особенной", но какой?
В хелпе написано следующее:
Цитата:
The prerequisite for control level processing is that the internal table is sorted in exactly the same sequence as the component of its line type - that is, first in accordance with the first component, then in accordance with the second component, and so on.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 01 2007, 14:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
В приведённой цитате написано, что сортировать нужно не по lifnr, а по строке таблицы или, что то же самое, по 1-му, 2-му, 3-му и т.д. полям вплоть до lifnr.
А вообще, желательно, чтобы lifnr было в начале строки таблицы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 01 2007, 14:35 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Хм, пробовал я и так ставить (хотя тогда мое требование не выполнялось бы):
Code:
sort matnr werks lgort charg sobkz lifnr

Поля идут в том порядке, в котором они определены в таблице.
Результат тот же.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 01 2007, 14:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
А если BREAK-POINT. и AT NEW lifnr. местами поменять?

Уверены, что для ключа matnr werks lgort charg sobkz в тестовых данных присутствует несколько значений lifnr?


Последний раз редактировалось sibrin Чт, ноя 01 2007, 14:43, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 01 2007, 14:42 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
влад написал(а):
Хм, пробовал я и так ставить (хотя тогда мое требование не выполнялось бы):
Code:
sort matnr werks lgort charg sobkz lifnr

Поля идут в том порядке, в котором они определены в таблице.
Результат тот же.

Это событие срабатывает, если хотя бы одно поле, стоящее слева от LIFNR изменилось (включая соответственно само LIFNR).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 01 2007, 14:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Alex80 написал:
Это событие срабатывает, если хотя бы одно поле, стоящее слева от LIFNR изменилось (включая соответственно само LIFNR).

Так и должно быть!
Перекладывайте данные в новую табличку, где lifnr на первом месте, или в цикле ведите свою локальную переменную lifnr_old.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 01 2007, 14:47 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Для срабатываения at new lifnr у вас проверяется на новое значение не только LIFNR, но и все поля слева - mandt matnr werks lgort charg sobkz
Либо делайте как посоветовал sibrin, либо используйте on change

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 01 2007, 14:51 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
to Влад
Цитата:
: Control levels are defined by the beginning or end of a group of lines with the same content in the component compi (where i = 1, 2, and so on) and in the components to the left of COMP i. The control breaks take place when the content of the component compi or another component to the left of compi changes.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 01 2007, 15:30 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Всем большое спасибо. Как всегда невнимательно хелп читал :(


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

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


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

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


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

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