Текущее время: Ср, май 14 2025, 07:27

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: GROUP BY для ЛБД PNP
СообщениеДобавлено: Чт, июн 02 2005, 11:24 
Гость
Уважаемые специалисты.
Работая с ЛБД PNP, я пишу:

TABLES PERNR.
INFOTYPES: 0082.
GET PERNR.

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

select pernr, count( * )
from p0082
group by pernr.
endselect.

Но такой запрос не является допустимым для p0082.
Как его можно реализовать?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 11:32 
Модератор
Модератор

Зарегистрирован:
Пт, ноя 12 2004, 11:40
Сообщения: 542
Откуда: Москва
Пол: Мужской
Вот так может быть ?
Code:
TABLES pa0082.

SELECT COUNT( * )
  FROM pa0082
  GROUP BY pernr.
ENDSELECT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 13:03 
Гость
Да, но таким образом можно сделать запрос к физической таблице PA0082, а я работаю с ЛБД PNP, и мне нужно задать на экране все критерии выбора (например, ОРГ. ЕДИНИЦА, ПЕРИОД ВЫБОРА ДАННЫХ), и вывести на печать количество больничных листов по табельным номерам. Таким образом, нужно сделать выборку из выборки. Как мне обработать запрос к результату работы экрана критериев выбора?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 13:19 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Если число больничных листов это число записей ИТ0082, действительных в указанном на экране PNP промежутке времени, то можно сделать примерно следующее:
Code:
TABLES PERNR.
INFOTYPES: 0082.

DATA: BEGIN OF wa.
DATA: pernr TYPE pernr_d.
DATA: count TYPE i.
DATA: END OF wa.

DATA: itab LIKE TABLE OF wa.

GET PERNR.
  wa-pernr = pernr-pernr.
  wa-count = LINES( p0082 ).

  COLLECT wa INTO itab.

К моменту вызова GET PERNR во внутренней таблице p0082 будут собраны записи ИТ0082, действиетльные в указанном промежутке для того табельного номера, для которого вызван GET PERNR.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 14:19 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Если я правильно понял, то Вам может подойти вот это
Code:
REPORT DEMO.

NODES SPFLI.

SELECT-OPTIONS CONN FOR SPFLI-CONNID.

GET SPFLI.
   IF SPFLI-CONNID IN CONN.
     WRITE: SPFLI-CARRID, SPFLI-CONNID, 'meets criterion'.
   ELSE.
WRITE: SPFLI-CARRID, SPFLI-CONNID,
                    'does not meet criterion'.
   ENDIF.


Хотя с точки зрения производительности это решение далеко от идела.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 14:33 
Гость
Работает.
Но, если я правильно понимаю, то вывести информацию на печать можно так:

loop at itab.
write: / itab-pernr, itab-count.
endloop.

Тогда записи по несколько раз дублируются, т.е.
00000244 3
00000244 3
00001145 1
00000244 3
00001145 1
00001514 1
00000244 3
00001145 1

--------------------------------
С уважением Яровенко Александр


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 14:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Если вы написали COLLECT, то дублирования быть не должно.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 14:52 
Гость
Если вы написали COLLECT, то дублирования быть не должно.
_________________
С уважением, Сергей Королев


Написал, проверил. Я просто скопировал код, предложенный Вами, в программу через буфер обмена.

----------------------------------------------
С уважением, Яровенко Александр


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 15:08 
Гость

Если я правильно понял, то Вам может подойти вот это

Код:

REPORT DEMO.

NODES SPFLI.

SELECT-OPTIONS CONN FOR SPFLI-CONNID.

GET SPFLI.
IF SPFLI-CONNID IN CONN.
WRITE: SPFLI-CARRID, SPFLI-CONNID, 'meets criterion'.
ELSE.
WRITE: SPFLI-CARRID, SPFLI-CONNID,
'does not meet criterion'.
ENDIF.
-------------------------------------------



Таким образом можно задать дополнительные критерии выбора для отсева некоторых записей, это не проблема. Мне нужно совершенно другое. В общем, задача такая:
Подсчитать количество больничных листов для каждого работника определенного подразделения в отчетный период.

------------------------

С уважением, Яровенко Александр


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 16:23 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
egochnpp написал(а):
Написал, проверил. Я просто скопировал код, предложенный Вами, в программу через буфер обмена.

Ага, видимо у вас LOOP срабатывает внутри GET PERNR. Надо его в END-OF-SELECTION перенести:

Code:
TABLES PERNR.
INFOTYPES: 0082.

DATA: BEGIN OF wa.
DATA: pernr TYPE pernr_d.
DATA: count TYPE i.
DATA: END OF wa.

DATA: itab LIKE TABLE OF wa.

GET PERNR.
  wa-pernr = pernr-pernr.
  wa-count = LINES( p0082 ).

  COLLECT wa INTO itab.

END-OF-SELECTION.
  loop at itab.
    write: / itab-pernr, itab-count.
  endloop.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 03 2005, 09:12 
Гость
Спасибо, Сергей. Получилось.

С уважением, Яровенко Александр


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

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


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

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


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

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