Текущее время: Пн, июл 28 2025, 02:02

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Динамическая сортировка
СообщениеДобавлено: Пт, окт 28 2005, 12:30 
Специалист
Специалист

Зарегистрирован:
Вт, авг 17 2004, 08:47
Сообщения: 222
Пол: Мужской
Есть внутр. таблица с двумя полями.

Делаю следующее:

fields = 'FIELD1 FIELD2'.

sort itab by (fields).

Если в fields ставлю одно поле, все ок. Если два и более, то падает в дамп.

Может я что-то не так делаю?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 28 2005, 12:41 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
sort ... by (field_1) (field_2) ... (field_n).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 28 2005, 12:47 
Специалист
Специалист

Зарегистрирован:
Вт, авг 17 2004, 08:47
Сообщения: 222
Пол: Мужской
А если еще не известно сколько полей будет?

А как в этом случае еще сделать сортировку по высходящей или низходящей?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 28 2005, 13:20 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Если полей будет какое-то разумное количество и заранее известно их максимальное число, то можно указать переменные, содержащие их имена, с "запасом" - в этом случае пустые переменные не будут приниматься во внимание.
Что касается большого числа полей и динамического порядка сортировки, то, боюсь, может помочь только GENERATE SUBROUTINE POOL.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая сортировка
СообщениеДобавлено: Ср, ноя 02 2005, 15:49 
Специалист
Специалист

Зарегистрирован:
Чт, июн 23 2005, 18:05
Сообщения: 119
Может вот так:
TYPES: BEGIN OF ITAB_TYPE,
WORD(20),
END OF ITAB_TYPE.
DATA: ITAB TYPE STANDARD TABLE OF ITAB_TYPE WITH HEADER LINE.

SPLIT 'field1 field2' AT ' ' INTO TABLE ITAB.

LOOP at ITAB.
sort ( ITAB-word ) STABLE.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 02 2005, 16:43 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
= sort ... by field2 ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 02 2005, 18:28 
Специалист
Специалист

Зарегистрирован:
Чт, июн 23 2005, 18:05
Сообщения: 119
EGF написал(а):
= sort ... by field2 ?

Извиняюсь, забыл написать ITAB by:
SORT ITAB by ( itab-word ) stable.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 03 2005, 10:19 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Code:
DATA:
  gs_mara TYPE mara
.
DATA:
  gt_mara TYPE STANDARD TABLE OF mara
.
gs_mara-eannr = '01'.
gs_mara-bismt = '01'.
APPEND gs_mara TO gt_mara.
gs_mara-eannr = '01'.
gs_mara-bismt = '02'.
APPEND gs_mara TO gt_mara.
gs_mara-eannr = '02'.
gs_mara-bismt = '01'.
APPEND gs_mara TO gt_mara.
gs_mara-eannr = '02'.
gs_mara-bismt = '02'.
APPEND gs_mara TO gt_mara.

SORT gt_mara BY eannr bismt.
LOOP AT gt_mara INTO gs_mara.
  WRITE: / gs_mara-eannr, gs_mara-bismt.
ENDLOOP.
SKIP 2.

*Почувствуйте разницу
SORT gt_mara BY: eannr, bismt.
LOOP AT gt_mara INTO gs_mara.
  WRITE: / gs_mara-eannr, gs_mara-bismt.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 03 2005, 10:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Не забываем про STABLE и обратный порядок полей при этом.
Вторая сортировка должна быть такая:
Code:
SORT gt_mara STABLE BY: bismt, eannr.
LOOP AT gt_mara INTO gs_mara.
  WRITE: / gs_mara-eannr, gs_mara-bismt.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 03 2005, 11:52 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
T написал:
Не забываем про STABLE и обратный порядок полей при этом.
Вторая сортировка должна быть такая:
Code:
SORT gt_mara STABLE BY: bismt, eannr.
LOOP AT gt_mara INTO gs_mara.
  WRITE: / gs_mara-eannr, gs_mara-bismt.
ENDLOOP.


Слона-то я и не заметил...
Действительно работает.


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

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


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

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


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

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