Текущее время: Вс, июл 20 2025, 23:50

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Сортировка данных во внутренней таблице
СообщениеДобавлено: Сб, ноя 09 2013, 00:14 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 08 2013, 23:57
Сообщения: 3
Здравствуйте.
Подскажите, какие могут быть варианты решения задачи.
Есть данные в таблице с разными подтипами.
Необходимо выгрузить данные и определенному подтипу присвоить значение в файле, при этом необходимо проверять подтипы на приоритет (если такого нет, бери следующий и т.д.).
А вопрос в том, как можно отсортировать данные?
Использовать IF в данном случае не удобно, так как много подтипов, и код получается нечитаемый =(
Если сделать цикл (Loop) по таблице, то можно в этом случае использовать несколько раз Where? Или внутри цикла сделать структуру Сase? Тогда как отсортировать данные? Подтипы у меня не соответствуют приоритету.
Может другие идеи?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка данных во внутренней таблице
СообщениеДобавлено: Сб, ноя 09 2013, 00:21 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
yulkasila, опишите задачу более подробно, пожалуйста. Сейчас непонятно что значит "определенному подтипу присвоить значение в файле" и как это связано с вопросом "как можно отсортировать данные?".


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка данных во внутренней таблице
СообщениеДобавлено: Сб, ноя 09 2013, 00:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
1. Читайте справку к оператору SORT.
2. После этого - справку к оператору READ TABLE ... BINARY SEARCH.
Подсказка: приоритет можно задавать через внутреннюю таблицу. READ TABLE .. BINARY SEARCH при неуспешном поиске возвращает индекс следующей по порядку записи.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка данных во внутренней таблице
СообщениеДобавлено: Вс, ноя 10 2013, 22:59 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 08 2013, 23:57
Сообщения: 3
Доброго времен суток, спасибо за помощь, но я все равно не понимаю =(((
ПРимер: у меня в таблице могут быть записи:
-телефон - должна в файл выгрузить 'Т', при этом остальные значения не важны, если нашла телефон, то дальше не ищу, если не нашла телефон, то ищу->
-адрес - выгружаю 'А', не нашла, тогда пошла читать дальше подтип
- факс - выгружаю 'Ф', не нашла, ищу следующий подтип
- email - выгружаю 'Е' и т.д. Всего до 50 подтипов.
Поэтому использовать IF-ENDIF в данном случае не хотелось бы, так как получаю нечитаемый код((
Т.о. я прочитала данные из таблицы, как мне отсортировать, если использовать BINARY SEARCH, то разве не нужно определенный индекс?? А я не знаю, что у меня может быть в таблице и чего нет. Вот мне и нужно отсортировать данные по подтипу адрес/телефон/ и т.д. А как это сделать, я не могу сообразить :(
Посоветуйте, пожалуйста.
Спасибо заранее большое)))


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка данных во внутренней таблице
СообщениеДобавлено: Пн, ноя 11 2013, 07:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
1. Делаете настроечную таблицу с 3-мя полями: приоритет, подтип и название поля, в котором содержится информация к подтипу.
2. Сортируете таблицу по полю приоритет
3. Для каждой записи делаете цикл по настроечной таблице: Если в соответствующем поле есть информация, то прекращаете цикл, записываете подтип в соответствующее поле.
Code:
FIELD-SYMBOLS: <fs> TYPE any.
...
LOOP AT основная таблица ASSIGNING <fs_line>.
  ...
  UNASSIGN <fs>.
  LOOP AT настроечная таблица.
    ASSIGN настроечная таблица-поле OF STRUCTURE <fs_line> INTO <fs>.
    check <fs> IS ASSIGNED.
    check <fs> IS NOT INITIAL.
    <fs_line>-подтип = настроечная таблица - подтип.
    EXIT.
  ENDLOOP.

ENDLOOP>

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка данных во внутренней таблице
СообщениеДобавлено: Пн, ноя 11 2013, 13:44 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
Можно еще макросом.
Code:
DEFINE mac-check.
  IF <fs_line>-&1 IS NOT INITIAL.
    выполняется выгрузка
    CONTINUE. 
  ENDIF.
END-OF-DEFINITION.

LOOP AT основная таблица ASSIGNING <fs_line>.
  mac-check: поле_для_телефона,
             поле_для_адреса,
             поле_для_факса,
             ...
             последнее_поле.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка данных во внутренней таблице
СообщениеДобавлено: Пн, ноя 11 2013, 20:19 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 08 2013, 23:57
Сообщения: 3
СПасибо Вам огромное!!! =))


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

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


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

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


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

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