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

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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