Текущее время: Пт, май 16 2025, 02:16

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


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

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


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

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