Текущее время: Пт, июн 20 2025, 07:50

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 11:00 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, июл 19 2007, 07:04
Сообщения: 1072
Пол: Мужской
Есть таблица со следующей структурой
Code:
DATA:
      begin of tab_dolzhn occurs 0,
        sht_dol type HRP1001-OBJID,
        dol type HRP1001-OBJID,
      end of tab_dolzhn.


В первом столбце уникальные значения, во втором повторяющиеся. Мне нужно посчитать сколько раз встречается каждое значение из второго столбца в этом столбце. Как лучше это сделать?


П.С. сильно не пинайте, я не абапер :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 12:23 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, июл 19 2007, 07:04
Сообщения: 1072
Пол: Мужской
:) Только что тут был пример с сортировкой, кто уже потер?
Сортировку применил, нормально.
Теперь бы еще подсчет каждого встречающегося значения реализовать.

ПС. Был вот такой кусок кода
Code:
DATA: fl_dolzhn LIKE LINE OF tab_dolzhn,
      f_icnt TYPE i.

SORT tab_dolzhn BY dol.
LOOP AT tab_dolzhn INTO fl_dolzhn.
  AT NEW dol.
    f_icnt = f_icnt + 1.
  ENDAT.
ENDLOOP.


Но в данном примере, переменная f_icnt играет роль простого счетчика, т.е. не удовлетворяет нашим требованиям.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 12:28 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Если я правильно понял
Code:
DATA:
      BEGIN OF tab_dolzhn OCCURS 0,
        sht_dol TYPE hrp1001-objid,
        dol TYPE hrp1001-objid,
      END OF tab_dolzhn.
DATA: fl_dolzhn1 LIKE LINE OF tab_dolzhn,
      fl_dolzhn2 LIKE LINE OF tab_dolzhn,
      f_icnt TYPE i.

TYPES: BEGIN OF gs_qty,
        sht_dol TYPE hrp1001-objid,
        qty_dol TYPE i,
       END OF gs_qty.
DATA: gt_qty TYPE SORTED TABLE OF gs_qty WITH UNIQUE KEY sht_dol,
      gl_qty LIKE LINE OF gt_qty.

SORT tab_dolzhn.
LOOP AT tab_dolzhn INTO fl_dolzhn1.
  AT NEW sht_dol.
    f_icnt = 0.
    LOOP AT tab_dolzhn INTO fl_dolzhn2 WHERE dol = fl_dolzhn1-sht_dol.
      f_icnt = f_icnt + 1.
    ENDLOOP.
    gl_qty-sht_dol = fl_dolzhn1-sht_dol.
    gl_qty-qty_dol = f_icnt.
    APPEND gl_qty TO gt_qty.
  ENDAT.
ENDLOOP.

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 13:08 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Maksimus написал:
Есть таблица со следующей структурой
Code:
DATA:
      begin of tab_dolzhn occurs 0,
        sht_dol type HRP1001-OBJID,
        dol type HRP1001-OBJID,
      end of tab_dolzhn.


В первом столбце уникальные значения, во втором повторяющиеся. Мне нужно посчитать сколько раз встречается каждое значение из второго столбца в этом столбце. Как лучше это сделать?


П.С. сильно не пинайте, я не абапер :)

Вы вопрос сформулируйте попонятней.
Т.к. а) если "первом столбце уникальные значения", то "каждое значение из второго столбца в этом столбце" (я так понимаю в первом?) встречается только один или ноль раз. Отсортируйте второй столбец и двоичным поиском читайте. дальше по индексу.
а если судить по названию столбцов (sht_dol и dol), то значений из первого столбца не должно быть во втором и наоборот.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 13:41 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, июл 19 2007, 07:04
Сообщения: 1072
Пол: Мужской
Расшифровываю подробнее.
В первом столбце записи уникальные - это первое.
Во втором повторяющиеся - это второе.

Первый столбец меня сейчас вообще не интересует. Я хочу обработать только второй столбец - посчитать сколько раз в нем встречается каждая запись. Всё.
Так думаю будет понятнее.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 13:57 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, июл 19 2007, 07:04
Сообщения: 1072
Пол: Мужской
Немного модифицировал...
Code:
DATA:
      begin of tab_dolzhn1 occurs 0,
        sht_dol type HRP1001-OBJID,
        dol type HRP1001-OBJID,
      end of tab_dolzhn1,
      tab_dolzhn2 like standard table of tab_dolzhn1 with header line.

DATA: fl_dolzhn1 LIKE LINE OF tab_dolzhn1,
      fl_dolzhn2 LIKE LINE OF tab_dolzhn1,
      f_icnt TYPE i.

TYPES: BEGIN OF gs_qty,
        dol     TYPE hrp1001-objid,
        qty_dol TYPE i,
       END OF gs_qty.

DATA: gt_qty TYPE TABLE OF gs_qty,
      gl_qty LIKE LINE OF gt_qty.


SORT tab_dolzhn1 by dol.
LOOP AT tab_dolzhn1 INTO fl_dolzhn1.
  AT NEW dol.
    f_icnt = 0.
    LOOP AT tab_dolzhn1 INTO fl_dolzhn2 WHERE dol = fl_dolzhn1-dol.
      f_icnt = f_icnt + 1.
    ENDLOOP.
    gl_qty-dol = fl_dolzhn1-dol.
    gl_qty-qty_dol = f_icnt.
    APPEND gl_qty TO gt_qty.
  ENDAT.
ENDLOOP.


Только вот теперь проблема - структура gt_qty наполняется данными, но каждая запись встречается несколько раз.

Code:
1   50000144   2
2   50000144   2
3   50000145   4
4   50000145   4
5   50000145   4
6   50000145   4
7   50000146   2
8   50000146   2
9   50000147   12
10   50000147   12
11   50000147   12
12   50000147   12
13   50000147   12
14   50000147   12
15   50000147   12
16   50000147   12
17   50000147   12
18   50000147   12
19   50000147   12
20   50000147   12


Связано это с тем, что я изменил строчку:
DATA: gt_qty TYPE SORTED TABLE OF gs_qty WITH UNIQUE KEY sht_dol,
на строчку
DATA: gt_qty TYPE TABLE OF gs_qty

Ибо в противном случае валился дамп. Как мне исправить, подскажите плиз. Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 14:15 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Maksimus написал:
Расшифровываю подробнее.
В первом столбце записи уникальные - это первое.
Во втором повторяющиеся - это второе.

Первый столбец меня сейчас вообще не интересует. Я хочу обработать только второй столбец - посчитать сколько раз в нем встречается каждая запись. Всё.
Так думаю будет понятнее.

Тогда в чём проблема? Если использовать метод грубой силы, не очень задумываясь о производительности, то использовать банальный COLLECT в таблицу со структурой gs_qty

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 14:45 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, июл 19 2007, 07:04
Сообщения: 1072
Пол: Мужской
Спасибо за предложенные варианты, сделал все как надо.

Потом увидел предложение Besa и использовал именно его - так красивее, да и надо же новому чему то учиться.
Code:
delete ADJACENT DUPLICATES FROM gt_qty  comparing dol.


Цитата:
Тогда в чём проблема? Если использовать метод грубой силы, не очень задумываясь о производительности, то использовать банальный COLLECT в таблицу со структурой gs_qty


А проблема как раз была в том, что я не программер и подобных процедур/функций/методов и т.д. просто не знаю, потому и писал на форум с просьбой помочь. За помощь всем спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 15:27 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Maksimus написал:
Спасибо за предложенные варианты, сделал все как надо.

Потом увидел предложение Besa и использовал именно его - так красивее, да и надо же новому чему то учиться.
Code:
delete ADJACENT DUPLICATES FROM gt_qty  comparing dol.


Цитата:
Тогда в чём проблема? Если использовать метод грубой силы, не очень задумываясь о производительности, то использовать банальный COLLECT в таблицу со структурой gs_qty


А проблема как раз была в том, что я не программер и подобных процедур/функций/методов и т.д. просто не знаю, потому и писал на форум с просьбой помочь. За помощь всем спасибо.

Я удалил свой пост, потому что решил что поторопился с ответом, так как подумал что это не решает Вашу проблему :)
Maksimus, честно, без обид, начните с книжки "Разработка приложений SAP R/3 на языке ABAP/4 авторов: Р.Кремчер, В.Вейс" :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Пн, июл 12 2010, 17:44 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, июл 19 2007, 07:04
Сообщения: 1072
Пол: Мужской
Besa написал:
Я удалил свой пост, потому что решил что поторопился с ответом, так как подумал что это не решает Вашу проблему :)
Maksimus, честно, без обид, начните с книжки "Разработка приложений SAP R/3 на языке ABAP/4 авторов: Р.Кремчер, В.Вейс" :)


Я прекрасно понимаю ваше пожелание и нисколько не обижаюсь. Просто абапера под рукой нет, вернее его на проекте вообще нет. А делать кто то должен. Честно говоря, некогда читать эту книжку, по крайней мере сейчас. Есть ряд другой литературы, которая штурмуется ежедневно. Но искренне надеюсь, что скоро время появится и эту книжку я все таки прочту основательно, благо бумажный вариант под рукой. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сортировка/группировка или другие варианты.
СообщениеДобавлено: Вт, июл 13 2010, 23:57 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Извиняюсь за вторжение, но откуда вообще попадают записи в упомянутую внутреннюю таблицу? Может проще это вообще с SELECT COUNT DISTINCT реализовать или что-нибудь в этом роде?

И если нет времени на книжки, гляньте хотя бы в примеры в ABAP Editor (menu Environment -> Examples).

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


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

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


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

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


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

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