Posted: Tue Jul 19, 2011 3:54 pm Post subject: Количество записей PNP
Всем привет!
Появилась такая интересная задачка: узнать количество записей (в моем случаем табельных номеров) из PNP, точнее после того как заполнили значения на сел. экране и запустили отчет.
Не могу понять, pnp собирает какую либо таблицу перед тем, как используем GET PERNR?
p.s.
Были мысли прочитать кол-во из 1го инфотипа, но это немного не то.
Кол-во записей нужно именно до GET PERNR.
Last edited by flex on Thu Jul 21, 2011 3:03 pm; edited 2 times in total
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Wed Jul 20, 2011 12:36 am Post subject:
А вы поставьте точку останова на GET pernr и посмотрите, откуда вызывается это событие
В ЛБД как правило работают с записями с помощью курсоров, поэтому нельзя узнать количество записей штатными средствами ЛБД до того, как все записи были обработаны.
PS: А что хоть за задача стоит? _________________ С уважением,
Удав.
i = кол-во прошедших табельных / общее кол-во табельных
" отражение процесса обработки ТН
CONCATENATE 'Обработано' n '%'
INTO g_progress_text SEPARATED BY space.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 1
text = g_progress_text.
Вот как-то так) Ну обработанные табельные понятное дело в цикле считать. Я просто примерно описал задачу кодом.
p.s. поставил точку остановки на GET Pernr, провалился там, увидел табличку pernr_tab, в которой лежит то, что нужно, но её в программе не видно
Last edited by flex on Wed Jul 20, 2011 11:32 am; edited 1 time in total
i = кол-во прошедших табельных / общее кол-во табельных
" отражение процесса обработки ТН
CONCATENATE 'Обработано' n '%'
INTO g_progress_text SEPARATED BY space.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 1
text = g_progress_text.
Вот как-то так) Ну обработанные табельные понятное дело в цикле считать. Я просто примерно описал задачу кодом.
p.s. поставил точку остановки на GET Pernr, никуда не провалилось, если вы это имели ввиду...
GET pernr. задает цикл по выбранным табельным номерам, для этого мы ее вначале объявляем NODES pernr. , завершить его можно событием END-OF-SELECTION
Posted: Wed Jul 20, 2011 11:29 am Post subject: Re: Количество записей PNP
flex wrote:
Всем привет!
Появилась такая интересная задачка: узнать количество записей (в моем случаем табельных номеров) из PNP, точнее после того как заполнили значения на сел. экране и запустили отчет.
Не могу понять, pnp собирает какую либо таблицу перед тем, как используем GET PERNR?
p.s.
Были мысли прочитать кол-во из 1го инфотипа, но это немного не то.
Кол-во записей нужно именно до GET PERNR.
Непонятно для чего это нужно , но можешь посчитать записи в таблице PA0002 (Персональные данные)
i = кол-во прошедших табельных / общее кол-во табельных
" отражение процесса обработки ТН
CONCATENATE 'Обработано' n '%'
INTO g_progress_text SEPARATED BY space.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 1
text = g_progress_text.
Вот как-то так) Ну обработанные табельные понятное дело в цикле считать. Я просто примерно описал задачу кодом.
p.s. поставил точку остановки на GET Pernr, никуда не провалилось, если вы это имели ввиду...
GET pernr. задает цикл по выбранным табельным номерам, для этого мы ее вначале объявляем NODES pernr. , завершить его можно событием END-OF-SELECTION
Posted: Wed Jul 20, 2011 11:34 am Post subject: Re: Количество записей PNP
bimit wrote:
flex wrote:
Всем привет!
Появилась такая интересная задачка: узнать количество записей (в моем случаем табельных номеров) из PNP, точнее после того как заполнили значения на сел. экране и запустили отчет.
Не могу понять, pnp собирает какую либо таблицу перед тем, как используем GET PERNR?
p.s.
Были мысли прочитать кол-во из 1го инфотипа, но это немного не то.
Кол-во записей нужно именно до GET PERNR.
Непонятно для чего это нужно , но можешь посчитать записи в таблице PA0002 (Персональные данные)
Не хочется делать лишние действия. Хочется найти способ посчитать количество записей (выбранных табельных) из какой-либо pnp-шной таблицы...
Posted: Wed Jul 20, 2011 11:54 am Post subject: Re: Количество записей PNP
flex wrote:
bimit wrote:
flex wrote:
Всем привет!
Появилась такая интересная задачка: узнать количество записей (в моем случаем табельных номеров) из PNP, точнее после того как заполнили значения на сел. экране и запустили отчет.
Не могу понять, pnp собирает какую либо таблицу перед тем, как используем GET PERNR?
p.s.
Были мысли прочитать кол-во из 1го инфотипа, но это немного не то.
Кол-во записей нужно именно до GET PERNR.
Непонятно для чего это нужно , но можешь посчитать записи в таблице PA0002 (Персональные данные)
Не хочется делать лишние действия. Хочется найти способ посчитать количество записей из какой-либо pnp-шной таблицы...
А что значит количество записей pnp-шной таблицы?? есть разве таблица где ключевое поле только табельный?? задай событие START-OF-SELECTION обычным селектом считай из PA0002 записи во внутреннюю табицу и делай что хочешь с ней, а потом уж задавай get pernr.
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Wed Jul 20, 2011 3:55 pm Post subject:
прикольно все это читать . Через 1 или 2 ИТ не получиться, ведь на экране куча фильтров, как вы собираетесь их учитывать при таком подходе?
Если pernr_tab вам подходит сделайте на нее ссылку. assign - почитайте в хелпе и на форумах. ассайница нужно к (sapdbpnp)pernr_tab.
Удачи _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Wed Jul 20, 2011 6:15 pm Post subject:
flex wrote:
Посидел в отладчике, нашел табличку pernr_tab, вот это то, что нужно, но, к сожалению в программе её не увидеть
Как это не увидеть?
Code:
TYPES: BEGIN OF t_index,
pernr LIKE pernr-pernr,
END OF t_index,
tt_index TYPE STANDARD TABLE OF t_index.
DATA: num_of_rec TYPE i.
FIELD-SYMBOLS: <fs_tab> TYPE tt_index.
...
GET pernr.
IF num_of_rec IS INITIAL.
ASSIGN ('(SAPDBPNP)index[]') TO <fs_tab>.
IF sy-subrc = 0.
num_of_rec = LINES(<fs_tab>).
ENDIF.
ENDIF.
Посидел в отладчике, нашел табличку pernr_tab, вот это то, что нужно, но, к сожалению в программе её не увидеть
Как это не увидеть?
Code:
TYPES: BEGIN OF t_index,
pernr LIKE pernr-pernr,
END OF t_index,
tt_index TYPE STANDARD TABLE OF t_index.
DATA: num_of_rec TYPE i.
FIELD-SYMBOLS: <fs_tab> TYPE tt_index.
...
GET pernr.
IF num_of_rec IS INITIAL.
ASSIGN ('(SAPDBPNP)index[]') TO <fs_tab>.
IF sy-subrc = 0.
num_of_rec = LINES(<fs_tab>).
ENDIF.
ENDIF.
Спасибо большое! Только начинаю осваивать эти операции в абапе, новичок так сказать)
Табличка index - это первое на что внимание обратил, но потом почему-то переключился на pernr_tab -_-
p.s.
Кстати конструкция LINES(<fs_tab>) не работает, ругается на lines, разбираюсь как все таки вытащить)
Quote:
Не подходит.
По коду, приведенному вами, видно что чистится в какой-то момент, но после события GET pernr там есть значения, так что получается что подходит (?)
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.