SAPфорум.RU https://sapboard.ru/forum/ |
|
Loop using key порядок обработки записей https://sapboard.ru/forum/viewtopic.php?f=13&t=96876 |
Страница 1 из 1 |
Автор: | Sam Stone [ Чт, сен 20 2018, 14:01 ] |
Заголовок сообщения: | Loop using key порядок обработки записей |
Добрый день. Код и результат ниже. Не могу найти, где объясняется, почему при использовании ключа записи обрабатываются в обратном порядке. Code: REPORT. TYPES:BEGIN OF line_ty, id TYPE i, parent TYPE i, priority TYPE i, text TYPE string, END OF line_ty. TYPES table_ty TYPE STANDARD TABLE OF line_ty WITH EMPTY KEY WITH NON-UNIQUE SORTED KEY parent COMPONENTS parent. DATA lt TYPE table_ty. lt = VALUE #( ( id = 1 parent = 0 text = 'HeaderA' ) ( id = 2 parent = 0 text = 'HeaderB' ) ( id = 3 parent = 0 text = 'HeaderC' ) ( id = 4 parent = 0 text = 'HeaderD' ) ( id = 5 parent = 1 text = 'A' ) ( id = 6 parent = 1 priority = 1 text = 'B' ) ( id = 7 parent = 1 priority = 2 text = 'C' ) ( id = 8 parent = 2 text = 'D' ) ( id = 9 parent = 3 text = 'E' ) ( id = 10 parent = 2 text = 'F' ) ( id = 11 parent = 3 text = 'G' ) ). SORT lt BY id parent priority. ULINE. LOOP AT lt INTO DATA(ls) USING KEY parent WHERE parent = 0. WRITE:/ ls-id, ls-text. ENDLOOP. ULINE. LOOP AT lt INTO ls WHERE parent = 0. WRITE:/ ls-id, ls-text. ENDLOOP. ULINE. Code: __________________________
4 HeaderD 3 HeaderC 2 HeaderB 1 HeaderA __________________________ 1 HeaderA 2 HeaderB 3 HeaderC 4 HeaderD __________________________ |
Автор: | LKU [ Чт, сен 20 2018, 14:36 ] |
Заголовок сообщения: | Re: Loop using key порядок обработки записей |
Ну, вы же написали конструкцию LOOP AT USING KEY, используя ключ, в котором только один компонент (Parent). Значит, порядок обхода записей с иcпользованием этого ключа внутри одинакового значения parent в общем случае не детерминирован. Если хотите обойти строки таблицы с Parent = 0 строго с возрастанием по порядку id, у вас аж два варианта: 1. В ключ parent добавить второй компонент ID 2. Найти первую строку в сортированной таблице с Parent = 0 с использованием binary search и далее с найденного sy-tabix крутить обычный loop, без using key, пока parent не поменяется |
Автор: | ghost [ Чт, сен 20 2018, 17:41 ] |
Заголовок сообщения: | Re: Loop using key порядок обработки записей |
Duplicate Non-Unique Keys |
Автор: | Sam Stone [ Пт, сен 21 2018, 08:40 ] |
Заголовок сообщения: | Re: Loop using key порядок обработки записей |
То, что надо! Цитата: If there are already one or more duplicates in the target table, the source block duplicates are inserted in their original order in front of the first duplicate in the target table. То есть поведение фиксировано. Спасибо. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |