Текущее время: Сб, июл 19 2025, 16:16

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


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

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


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

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