SAPфорум.RU https://www.sapboard.ru/forum/ |
|
Узнать количество строк внутренней таблицы https://www.sapboard.ru/forum/viewtopic.php?f=13&t=96517 |
Страница 2 из 2 |
Автор: | author [ Вт, июн 19 2018, 12:50 ] |
Заголовок сообщения: | Re: Узнать количество строк внутренней таблицы |
предполагаю, что самый быстрый способ будет таким Code: TYPES:
BEGIN OF ts_data, f1 TYPE string, f2 TYPE i, END OF ts_data. DATA: lt_data TYPE STANDARD TABLE OF ts_data WITH DEFAULT KEY WITH NON-UNIQUE SORTED KEY key1 COMPONENTS f1 WITH NON-UNIQUE SORTED KEY key2 COMPONENTS f2 WITH NON-UNIQUE SORTED KEY key3 COMPONENTS f1 f2. lt_data = VALUE #( ( f1 = '14124' f2 = 1 ) ( f1 = '12341' f2 = 1 ) ( f1 = '15242' f2 = 1 ) ( f1 = '21413' f2 = 2 ) ( f1 = '12132' f2 = 3 ) ). DATA(lv_count) = lines( FILTER #( lt_data USING KEY key1 WHERE f1 = |15242| ) ). WRITE / lv_count. lv_count = lines( FILTER #( lt_data USING KEY key2 WHERE f2 = 1 ) ). WRITE / lv_count. lv_count = lines( FILTER #( lt_data USING KEY key3 WHERE f1 <> |15242| AND f2 > 1 ) ). WRITE / lv_count. |
Автор: | exotik [ Вт, июн 19 2018, 13:04 ] |
Заголовок сообщения: | Re: Узнать количество строк внутренней таблицы |
Besa написал: Обработайте вне цикла данные, создав агрегационную таблицу, к ней уже обратитесь через read table внутри основного цикла. Я решил удалил дубликаты с помощью DELETE ADJACENT DUPLICATES, теперь мне необходимо подсчитать сколько значений по каждому из дубликатов в другой таблице, как сделать это без loop не понимаю. Через read table же нельзя задать несколько условий? |
Автор: | author [ Вт, июн 19 2018, 13:28 ] |
Заголовок сообщения: | Re: Узнать количество строк внутренней таблицы |
Если без LOOP, но с FOR ? Code: lv_count = REDUCE i( INIT count = 0 FOR wa IN lt_data WHERE ( f2 = 1 ) NEXT count = count + 1 ).
WRITE / lv_count. |
Автор: | Удав [ Пт, июн 22 2018, 00:26 ] |
Заголовок сообщения: | Re: Узнать количество строк внутренней таблицы |
baboon написал(а): To Kuranov.Dmitry Цитата: с несортированными таблицами такой трюк не сработает даже если их сортировать вручную. Вообще-то, сработает, если отсортировать вручную и сделать чтение с binary search по ключу сортировки. + Я так оптимизировал разделение внутренней таблицы из MSEG по особому запасу. |
Автор: | andry_moz [ Пт, июл 20 2018, 15:42 ] |
Заголовок сообщения: | Re: Узнать количество строк внутренней таблицы |
Code: data: begin of lt_rows occurs 0,
field1 type string, field2 type string, end of lt_rows. data field2 type string. lt_rows[] = value #( ( field1 = 14124 field2 = 1 ) ( field1 = 12341 field2 = 2 ) ( field1 = 15242 field2 = 3 ) ( field1 = 21413 field2 = 1 ) ( field1 = 12132 field2 = 3 ) ( field1 = 4444 field2 = 2 ) ( field1 = 4444 field2 = 4 ) ( field1 = 4444 field2 = 2 ) ( field1 = 4444 field2 = 2 ) ( field1 = 4444 field2 = 2 ) ( field1 = 5555 field2 = 3 ) ). loop at lt_rows into data(d_rows) GROUP BY ( field2 = d_rows-field2 size = group size ) REFERENCE INTO DATA(group_ref). write: / group_ref->field2, group_ref->size. endloop. |
Автор: | Acid_Firewood [ Пт, авг 03 2018, 15:35 ] |
Заголовок сообщения: | Re: Узнать количество строк внутренней таблицы |
author написал(а): Если без LOOP, но с FOR ? Code: lv_count = REDUCE i( INIT count = 0 FOR wa IN lt_data WHERE ( f2 = 1 ) NEXT count = count + 1 ). WRITE / lv_count. Чтобы предлагать такие финты, неплохо бы у автора спросить его версию базисного компонента. А то, м.б., у вас 7.50, а у него какой-нибудь древнючий 4.7. И у него система просто не поймёт REDUCE. |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |